diff --git a/.github/ISSUE_TEMPLATE/addition-request.md b/.github/ISSUE_TEMPLATE/addition-request.md
new file mode 100644
index 0000000..cc1194b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/addition-request.md
@@ -0,0 +1,18 @@
+---
+name: Addition Request
+about: Suggest a new resource to be added to the list.
+title: "[Addition Request] - [Resource Name]"
+labels: enhancement
+assignees: agarcialeon
+
+---
+
+**Insert the resource you want to be included in the list following the pattern below:**
+Resource Name - LinkToResource - Description (#CATEGORY-TAG)
+
+
+**Explain the reasons on why your resource should be added:**
+_
+
+**Insert here the section name where you want your resource to be included (If your resource should be included in a new section or category, please write it too):**
+_
diff --git a/.github/ISSUE_TEMPLATE/error-report.md b/.github/ISSUE_TEMPLATE/error-report.md
new file mode 100644
index 0000000..d026397
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/error-report.md
@@ -0,0 +1,16 @@
+---
+name: Error Report
+about: Report an error (typo, missing link, repeated item...) from the content in
+  the list.
+title: "[Error Report] - Error short description"
+labels: bug
+assignees: agarcialeon
+
+---
+
+**Describe the error, indicating the section where we can find it: **
+_
+
+
+**Propose a fix (if you know how to fix it):**
+_
diff --git a/.github/ISSUE_TEMPLATE/suggestion.md b/.github/ISSUE_TEMPLATE/suggestion.md
new file mode 100644
index 0000000..a1a0e2b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/suggestion.md
@@ -0,0 +1,17 @@
+---
+name: Suggestion
+about: Suggest an idea to improve the content of the list.
+title: "[Suggestion] - Short description"
+labels: good first issue, suggestion
+assignees: agarcialeon
+
+---
+
+**Describe your suggestion:**
+_
+
+**Indicate how it can improve the content in the list:**
+_
+
+**Describe alternatives you've considered (if applicable)**
+_
diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md
new file mode 100644
index 0000000..2bc8edf
--- /dev/null
+++ b/CODE-OF-CONDUCT.md
@@ -0,0 +1,74 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, gender identity and expression, level of experience,
+nationality, personal appearance, race, religion, or sexual identity and
+orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+  address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+  professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at agarcialeon@gmail.com. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at [http://contributor-covenant.org/version/1/4][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 73823e8..10fb104 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -5,14 +5,14 @@ Please ensure your pull request adheres to the following:
 * Search previous suggestions before making a new one to ensure yours is not a duplicate.
 * Make an individual pull request for each suggestion.
 * Use the following format: \[NAME\]\(LINK\) - DESCRIPTION.
-* Keep descriptions simple.
+* Keep descriptions simple (one line or two as maximum).
 * New categories, or improvements to the existing ones are welcome.
 * End all descriptions with a period.
 * Make sure your text editor is set to remove trailing whitespace.
 * Try to ensure your pull requests only have one commit if possible. You can squash your commits into one before submitting.
 * Make your pull request titles and descriptions as detailed as possible. Explain why an asset or resources deserves to be added to the list.
-* Make sure your additions are in alphabetical order. This includes the headers and items themselves.
-* Ensure that assets you submit are of high quality, documented well, and are recently maintained. It also helps if they're popular so I can research them before adding them to the list.
+* Resources added under a section or category should be in alphabetical order.
+* Ensure that assets you submit are of high quality, documented well, and are recently maintained. It also helps if they're popular so I can research them before adding them to the list. If they aren't mark them with (UNMAINTAINED) at the end of the description.
 * This is not meant to be used as a list to advertise your own assets. Free or open-source assets should be prioritized over paid assets if they are of similar quality and feature sets.
 
 Thanks!
diff --git a/OPEN-ISSUE-TEMPLATE.md b/OPEN-ISSUE-TEMPLATE.md
new file mode 100644
index 0000000..67f1c38
--- /dev/null
+++ b/OPEN-ISSUE-TEMPLATE.md
@@ -0,0 +1,3 @@
+# Template for New Issues
+
+:construction:
diff --git a/README.md b/README.md
index d12fbc2..9af14a2 100644
--- a/README.md
+++ b/README.md
@@ -1,165 +1,2749 @@
-Awesome Unity
-=============
+<div align="center">
+	<div>
+		<!--<a href="https://github.com/agarcialeon/awesome-unity/">
+			<img width="500" src="awesome-unity.png" alt="Awesome Unity">
+		</a>-->
+	</div>
+  <br>
+	<div>
+		<h1>Awesome Unity Community</h1>		
+		<a href="https://github.com/sindresorhus/awesome"> 
+			<img src="https://awesome.re/badge-flat.svg" alt="Awesome">
+		</a>					
+		<p>
+			A categorized community-driven collection of high-quality awesome Unity assets, projects, and resources. 
+			<br>
+			Free assets and resources are prioritized over paid when possible.
+			<br><br>
+			Suggestions and contributions are always welcome!
+			<br>			
+			Make sure to read the <a href="https://github.com/agarcialeon/awesome-unity/blob/master/CONTRIBUTING.md"> contribution guidelines </a> for more information before submitting a pull request.
 
-[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)
+[![forthebadge](https://forthebadge.com/images/badges/built-by-developers.svg)](https://forthebadge.com)
+[![forthebadge](https://forthebadge.com/images/badges/made-with-c-sharp.svg)](https://forthebadge.com)
+[![forthebadge](https://forthebadge.com/images/badges/cc-0.svg)](https://forthebadge.com)
+		</p>
+	</div>
+</div>
 
-A categorized community-driven collection of high-quality awesome Unity assets, projects, and resources. Free assets and resources are prioritized over paid when possible.
+# :bookmark_tabs: Contents
 
-Suggestions and contributions are always welcome! Make sure to read the [contribution guidelines](https://github.com/RyanNielson/awesome-unity/blob/master/CONTRIBUTING.md) for more information before submitting a pull request.
-
-Thanks to all the [contributors](https://github.com/ryannielson/awesome-unity/graphs/contributors), this wouldn't be possible without you!
-
-- [Awesome Unity](#awesome-unity)
+- [Motivation](#motivation)
+- [Considerations](#considerations)
+- [Legend](#legend)
+	- [Icons](#icons)
+	- [Tags](#tags)
+- [Categories](#categories)
   - [2D](#2d)
+  - [Vector Graphics](#vector-graphics)
   - [AI](#ai)
-  - [Augmented & Virtual Reality](#augmented--virtual-reality)
+  - [Machine Learning](#machine-learning)
+  - [Audio](#audio)
+  - [Animation](#animation)
+  - [Tweening](#tweening)
+  - [Augmented Reality](#augmented-reality)
+  - [Virtual Reality](#virtual-reality)
+  	- [Common](#virtual-reality-common)
+  	- [HTC Vive](#virtual-reality-htcvive)
+  	- [Oculus](#virtual-reality-oculus)
+	- [Google VR](#virtual-reality-googlevr)	
+	- [Steam VR](#virtual-reality-steamvr)
+  	- [Samsung Gear VR](#virtual-reality-samsumg-gear-vr)	
+  	- [VR Chat](#virtual-reality-vrchat)	
+  - [Mixed Reality](#mixed-reality)
+  - [Computer Vision & Tracking](#computer-vision-and-tracking)
+  - [Speech Recognition](#speech-recognition)
   - [Camera](#camera)
+  - [Physics](#physics)
   - [Character Controllers](#character-controllers)
-  - [Frameworks](#frameworks)
+  	- [2D Character Controllers](#2d-character-controllers)
+  	- [3D Character Controllers](#3d-character-controllers)
   - [Input](#input)
-  - [Modeling](#modeling)
+  	- [Controller Mappings](#controller-mappings)
   - [Monetization](#monetization)
+  - [Services](#services)
+  - [Internationalization & Localization (I18n & L10n)](#internationalization-localization)
   - [Networking](#networking)
   - [Scripting](#scripting)
-  - [Services](#services)
-  - [Shaders](#shaders)
-  - [Tweening](#tweening)
+  	- [Algorithms](#algorithms)
+	- [Attributes](#attributes)
+	- [Frameworks](#frameworks)
+	- [Patterns](#patterns)
+	- [Pooling Systems](#pooling)
+	- [Serialization](#serialization)
+	- [Logging](#logging)
+	- [Error Reporting](#error-reporting)
+	- [Debugging](#debugging)
+	- [Coroutines / Threading](#coroutines-threading)	
+	- [Libraries](#libraries)
+  	- [Utilities](#utilities)
+  	- [Tools](#tools)
+	- [Plugins](#plugins) 
+   	- [Visual Scripting](#visual-scripting)
+   	- [Snippets & Gists](#snippets-&-gists)
+	- [Integrated Development Environment (IDE)](#ide)
+		- [IDE Integrations](#ide-integrations)
+  - [Rendering & Post-Processing](#rendering-and-post-processing)
+  	- [Shaders](#shaders)
+  	- [Skyboxes](#skyboxes)
+  	- [Effects](#effects)
+  	- [Particle Systems](#particle-systems)
+  	- [Lightning / Points of Clouds](#lightning-points-clouds)
+	- [Raymarching](#raymarching)
+	- [Voxel](#voxel)
   - [UI](#ui)
-  - [Utilities](#utilities)
-  - [Visual Scripting](#visual-scripting)
+  	- [Control Components](#ui-controls-components)
+		- [Minimap](#ui-controls-minimap)
+		- [Text](#ui-controls-text)
+		- [Font Rendering](#ui-controls--text-font-rendering)
+		- [Shapes](#ui-controls-shapes)
+		- [Sprite Atlas](#ui-controls-spriteatlas)
+		- [Scroll View](#ui-controls-scroll-view)
+		- [Page View](#ui-controls-page-view)
+		- [Search](#ui-controls-search)
+		- [Chart](#ui-controls-chart)
+		- [Progress Bar](#ui-controls-progress-bar)
+		- [Color Picker](#ui-controls-color-picker)
+		- [File Browser](#ui-controls-file-browser)
+		- [Mask](#ui-controls-mask)
+		- [Mobile Area Mask](#ui-controls-mobile-area-mask)
+		- [Gizmo](#ui-controls-gizmo)
+		- [Layout](#ui-controls-layout)
+		- [Drag & Drop](#ui-controls-drag-drop)
+	- [Screen / Menu Management](#ui-screen-menu-management)
+	- [Effects](#ui-effects)
+	- [Frameworks](#ui-frameworks)
+	- [Tools](#ui-tools)
+	- [Themes / Skins](#ui-themes-skins)	
+  	- [Testing](#ui-testing)
+  - [Procedural Generation](#procedural-generation)
+  - [Terrain](#terrain)
+  - [NavMesh](#navmesh) 
+  - [Textures](#textures)
+  - [Importers & Exporters](#importers-exporters)
+  - [Databases](#databases)
+  - [VCS (Version Control Systems)](#vcs)
+  - [Continuous Integration (CI)](#continuous-integration)
+  - [Testing](#testing)
+  - [Customization](#customization)
+  - [Extensibility](#extensibility)
+  	- [Node Editors](#node-editor)
+	- [Inspector](#inspector)
+	- [Timeline](#timeline)
+	- [Project Folder](#project-folder)
+	- [Contextual Menu](#contextual-menu)
+	- [Scene View](#scene-view)
+		- [Spline Editor](#scene-view-spline-editor)
+		- [Level Editor](#scene-view-level-editor)
+	- [Game View](#game-view)
+		- [Level Editor](#game-view-level-editor)	
+	- [Custom Windows](#custom-windows)
+	- [Search](#search)
+	- [Events](#events)
+	- [Packs](#packs)
+	- [Utilities](#extensibility-utilities)
+	- [WebGL](#webgl)
+	- [Others](#extensibility-others)
+  - [Asset Management](#assets-management)
+  	- [Package Management](#assets-management-packages)
+  	- [Asset Bundles](#assets-management-bundles)
+  	- [Asset Store](#assets-management-store)
+  - [Modding](#modding)
+  - [Miscellaneuous](#miscellaneous)  
+- [Learning Resources](#learning-resources)
+  - [Tips and Tricks](#tips-tricks)
+  - [Books](#books)
+  - [Blogs](#blogs)
+  - [Videos](#videos)
+  	- [Youtube Channels](#youtube-channels)
+   	- [Unity Official Sessions](#unity-official-sessions)
+  - [Tutorials](#tutorials)
+  - [Best Practices](#best-practices)
+  - [Shortcuts](#shortcuts)  
+  - [Other References](#other-references)
+- [Recommended Asset Store Packages](#recommended-packages) 
 - [Projects](#projects)
   - [Games](#games)
-- [Resources](#resources)
-  - [Tips and Tricks](#tips-and-tricks)
-  - [Tutorials](#tutorials)
+- [Communities](#communities)
+  - [Chat Servers](#chat-servers)
+  - [Forums](#forums)
+  - [Groups](#groups)
+  - [People to Follow](#people-to-follow)
+  	- [Unity Developers](#follow-unity-developers)
+  	- [Independent Developers](#follow-independent-developers)
+- [Frequently Asked Questions (FAQ)](#faq)
+- [Contributors to this repository](#contributors)
 - [Contributing](#contributing)
+- [Code of Conduct](#code-of-conduct)
+- [To be done](#to-do)
+
+# Motivation <a name="motivation"></a>
+
+:construction:
+
+<!-- I started this project because I felt that starting learning Unity was at first like learning any other language. First you learn the syntax and start creating basic apps but then you get better at developing when you learn the tools for that language and how to improve your work with them. I think this is the same, because when I learned Unity for the first time you needed to code a lot of basic tools that could greatly improve the time you spend making your game or app instead of reinventing the wheel. -->
+
+# Considerations <a name="considerations"></a>
+
+There is always a posibility that this repository becomes outdated, mostly because new packages from the asset store and repositories appear in the future. This is because of the nature of technology and this can be avoided, so in order to keep this project as updated as possible with what other users know, please create a new issue to include or remove what you think is necessary.
+
+Another point is the categorization of the resources provided here. Since some of them can be included in different categories at the same time a cross reference will be created in the form of a hashtag to notify you (the visitor) that maybe you need to look in a different place of this repository or in another external site to find more info.
+
+Finally, you need to know that this is not the only repository on Github that gathers Unity related repositories. This is just another, trying to get the best of all the existing content out there for Unity developers. So please, be grateful with all the other developers that put effort collecting their respective lists of resources, by visiting their repositories (they will be listed below).
+
+I hope all of you find this helpful. Let's get on with the contents.
+
+# Legend <a name="legend"></a>
+
+## Icons <a name="icons"></a>
+
+Free resource: :free:
+
+Paid resource: :moneybag:
+
+Interesting resource: :cool: 
+
+Official resource: ![Official](UnityResource16x16.png)
+
+<!-- 
+:new:
+-->
+
+## Tags <a name="tags"></a>
+
+(UNMAINTAINED) - The repository hasn't been updated for a long time.
 
-## 2D
+(DEPRECATED) - Another solution or package has been released that does the same and it's more recent.
 
-* [2D Rope System (Paid)](https://www.assetstore.unity3d.com/en/#!/content/17722) - Scripts for creating any type of 2D ropes in the editor or during runtime.
-* [2D Toolkit (Paid)](https://www.assetstore.unity3d.com/en/#!/content/908) - An efficient & flexible 2D sprite, collider set-up, text, tilemap and UI system.
-* [Ferr2D Terrain Tool (Paid)](https://www.assetstore.unity3d.com/en/#!/content/11653) - Quickly create handcrafted 2D landscapes and levels.
+(ARCHIVED) - The repository is read only for learning purposes.
+
+(#[CATEGORY]) - Where [CATEGORY] represents a category of the document. Means that the resource is related with another category too. Any resource can contain many category tags.
+
+# :bookmark: Categories <a name="categories"></a>
+
+## :space_invader: 2D <a name="2d"></a>
+
+* [2D Rope System](https://assetstore.unity.com/packages/tools/sprite-management/2d-rope-system-17722) - Scripts for creating any type of 2D ropes in the editor or during runtime. :moneybag:
+* [2D Toolkit](https://www.assetstore.unity3d.com/en/#!/content/908) - An efficient & flexible 2D sprite, collider set-up, text, tilemap and UI system. :moneybag:
+* [Ferr2D Terrain Tool](https://www.assetstore.unity3d.com/en/#!/content/11653) - Quickly create handcrafted 2D landscapes and levels. :moneybag:
 * [Pixel Camera 2D](https://github.com/RyanNielson/PixelCamera2D) - A simple pixel perfect camera with scaling options for 2D Games.
-* [Spine (Paid)](http://esotericsoftware.com) - A skeletal animation editor with a Unity library.
-* [Tiled2Unity](http://www.seanba.com/tiled2unity) - Takes your [Tiled](http://www.mapeditor.org) files and creates Unity prefabs from them that are easily placed into your Unity scene. Complex collision is supported through Unity’s PolygonCollider2D class.
+* [Spine](http://esotericsoftware.com) - A skeletal animation editor with a Unity library. :moneybag:
+* [Tiled2Unity](https://github.com/Seanba/Tiled2Unity) - Export [Tiled](http://www.mapeditor.org) Map Editor (TMX) files into Unity.
+* [Unity2D TMX](https://github.com/suppayami/unity2d-tmx) - A small library to import and render tilemap in Unity2D, only support TMX file format.
 * [Unity Anima2D](https://www.assetstore.unity3d.com/en/#!/content/79840) - Advanced skeletal animation editor with support for both per-object and skinned mesh animation with an integrated in-editor skinning tool.
 * [UnityTiled](https://github.com/nickgravelyn/UnityTiled) - An importer for [Tiled](http://www.mapeditor.org) maps.
+* [2D Tech Demos](https://github.com/Unity-Technologies/2d-techdemos) - Tech Demos for Unity 2D Features. ![Official](UnityResource16x16.png)
+* [SpriteDicing](https://github.com/Elringus/SpriteDicing) - Unity extension for reusing sprite texture areas.
+* [PixelSpriteGenerator-Unity](https://github.com/Shogan/PixelSpriteGenerator-Unity) - A port of the PixelSpriteGenerator to C# for use with the Unity3D game engine.
+* [Unity ECS Instanced Sprite Renderer](https://github.com/paullj/unity-ecs-instanced-sprite-renderer) - An example of a simple performant sprite renderer using Unity's new ECS system.
+* [FogSprites](https://github.com/bricevdm/FogSprites) - Modification of Unity's sprite shaders supporting Fog.
+* [HermodToolkit](https://github.com/Sirithang/HermodToolkit) - A set of 2D tools for Unity.(#2D)
+* [Unity2D-Components](https://github.com/cmilr/Unity2D-Components) - A constantly evolving array of Unity C# components for 2D games, including classes for pixel art cameras, events & messaging, saving & loading game data, collision handlers, object pools, and more.
+* [2DTileMapLevelEditor](https://github.com/GracesGames/2DTileMapLevelEditor) - 2D Tile Map Level Editor for Unity.
+* [DataRenderer2D](https://github.com/geniikw/DataRenderer2D) - Make mesh like line, polygon, etc in Unity3D.
+* [Cat2DAnimation](https://github.com/cinight/Cat2DAnimation) - 2D Animation Tool.
+* [Live2D with Unity](https://github.com/sera0506/Live-2D-with-Unity) - Import Live2D and read mtn file In Unity3D.
+* [UnityBitmapDrawing](https://github.com/ProtoTurtle/UnityBitmapDrawing) - Bitmap Drawing API extension methods for Unity 3D's Texture2D class.
+* [Futile](https://github.com/MattRix/Futile) - A super simple Unity 2D framework.
+* [BulletPatternEditorUnity](https://github.com/unitycoder/BulletPatternEditorUnity) - Easily create shoot em up bullet patterns.
+* [PolyMesh](https://github.com/UnityPatterns/PolyMesh) - Create 2D shapes in an instant with the PolyMesh editor.
+* [2D Demos](https://bitbucket.org/Unity-Technologies/2ddemos) - 2D Experimental Preview Demo projects. ![Official](UnityResource16x16.png)
+* [SpriteMaker](https://github.com/KPDwyer/SpriteMaker) - Tool for making sprites in Unity.
+* [Unity3DPolylineEditor](https://github.com/Dandarawy/Unity3DPolylineEditor) - 2D Polyline Editor for Unity3D.
+* [DoomStyleAnimatedBillboard](https://github.com/richardschembri/DoomStyleAnimatedBillboard) - Animated billboard with multiple view angles.
+* [Unity Sprite Cutter](https://github.com/sabikku/unity-sprite-cutter "") - Simple solution for cutting sprites in runtime.
+* [PixelSpriteGenerator Unity](https://github.com/Shogan/PixelSpriteGenerator-Unity "") - A port of the PixelSpriteGenerator to C# for use with the Unity3D game engine.
+* [ST2U TileProperties](https://github.com/Seanba/ST2U_TileProperties "") - SuperTiled2Unity Example of Retrieving Custom Properties from Tiles.
+* [PixelRenderUnity3D](https://github.com/kode80/PixelRenderUnity3D "") - PixelRender is a complete system for realtime rendering of 3D scenes as 2D pixel art in Unity3D.
+* [OnionRingUnity](https://github.com/kyubuns/OnionRingUnity "") - Auto 9 slice sprite generator.
+* [2D_IsoTilemaps](https://github.com/UnityTechnologies/2D_IsoTilemaps "") - This is an example Unity project focused on 2D Isometric Tilemaps and 2D Pixel Perfect Rendering. ![Official](UnityResource16x16.png)
 
-## AI
+## Vector Graphics <a name="vector-graphics"></a>
 
+* [Vector Graphics Samples](https://github.com/Unity-Technologies/vector-graphics-samples) - SVG and Vector Graphics Sample Project. ![Official](UnityResource16x16.png)
+* [NanoSVG CSharp](https://github.com/thinksquirrel/nanosvg-csharp) - NanoSVG for C#.
+* [UnitySVG](https://github.com/MrJoy/UnitySVG) - SVG renderer for Unity3D.
+
+## :bulb: AI <a name="ai"></a>
+
+* [Pathfinding](https://github.com/antonpantev/pathfinding "") - Find paths in Unity Tilemaps with A* Search.
+* [Unity Movement AI](https://github.com/antonpantev/unity-movement-ai "") - A Unity library for common movement AI.
 * [A* Pathfinding Project](http://arongranberg.com/astar/) - Lightning fast pathfinding with heavily optimized algorithms and a large feature set.
-* [Apex Path (Paid)](https://www.assetstore.unity3d.com/en/#!/content/17943) - Apex Path handles dynamic pathfinding including local avoidance steering and dynamic obstacles.
+* [A* Sharp](https://github.com/davecusatis/A-Star-Sharp) - A small, easy to understand C# implementation of the A Star pathfinding algorithm for 2D grid based applications.
+* [Astar Pathfinding](https://github.com/wawethewaras/Astar-Pathfinding) - 2D pathfinding for Unity.
+* [UnityAStarNavigation](https://github.com/jeffvella/UnityAStarNavigation) - An A* navigation system for Unity using burst compiled jobs for performance.
+* [Apex Path](https://www.assetstore.unity3d.com/en/#!/content/17943) - Apex Path handles dynamic pathfinding including local avoidance steering and dynamic obstacles. :moneybag:
 * [Crystal AI](https://github.com/igiagkiozis/CrystalAI) - Crystal is a fast, scalable and extensible utility based AI framework for C# and Unity.
+* [Behaviac](https://github.com/Tencent/behaviac) - Is a framework of the game AI development, and it also can be used as a rapid game prototype design tool. behaviac supports the behavior tree, finite state machine and hierarchical task network(BT, FSM, HTN).
+* [TsiU AIToolkit CSharp](https://github.com/FinneyTang/TsiU_AIToolkit_CSharp) - AI Toolkit for Unity.
+* [EpPathFinding.cs](https://github.com/juhgiyo/EpPathFinding.cs) - A jump point search algorithm for grid based games in C#.
+* [EpPathFinding3D.cs](https://github.com/juhgiyo/EpPathFinding3D.cs) - A 3D jump point search algorithm for cube based games in C#.
+* [GOAP](https://github.com/sploreg/goap) - Goal Oriented Action Planning AI in Unity.
+* [Unity Movement AI](https://github.com/antonpantev/unity-movement-ai) - A library of common movement AI scripts known as Steering Behaviors. You can use these scripts to help your NPCs move around your game.
+* [Openpath](https://github.com/mrzapp/openpath) - Open source pathfinding for Unity.
+* [Unity Path Finding](https://github.com/mattatz/unity-path-finding) - Shortest path finding with Dijkstra's algorithm for Unity.
+* [NPBehave](https://github.com/meniku/NPBehave) - Event Driven Behavior Trees for Unity 3D.
+* [Fluid Behavior Tree](https://github.com/ashblue/fluid-behavior-tree) - A pure code behavior tree micro-framework built for Unity3D projects. Granting developers the power to dictate their GUI presentation.
+* [Unity3D Finite State Machine](https://github.com/thefuntastic/Unity3d-Finite-State-Machine)
+* [A Star Pathfinding for Unity](https://github.com/sharpaccent/Astar-for-Unity) - A Star Pathfinder, 3 axis, multithreaded for Unity.
+* [A* Pathfinding Project Pro](https://arongranberg.com/astar/front) - Lightning fast pathfinding for Unity3D. :moneybag:
+* [A* Pathfinding for Platformers](https://github.com/tutsplus/A-Star-Pathfinding-for-Platformers) - How to Adapt A* Pathfinding to a 2D Grid-Based Platformer.
+* [Unity Neural Network](https://github.com/Blueteak/Unity-Neural-Network) - Simple neural network implemented in C# for Unity3D.
+* [GameAI Movement](https://github.com/Kyntaz/gameai-movement) - Movement Algorithms for NPCs developed with the Unity Engine for the Artificial Intelligence for Games class @ IST.
+* [Knowledge Representation](https://github.com/chris-gong/knowledge-representation) - Small Unity project showcasing AI responding to changes in the game world. 
+* [Unity AI](https://github.com/lcremer/Unity_AI) - AI Behavior Tree Framework.
+* [AI Companion](https://github.com/Ell223/AI-Companion) - Created in Unity 5 for the purposes of learning AI techniques. Features behaviour trees and A* pathfinding. 
+* [LanguageProject](https://github.com/HeidiErwin/LanguageProject) - Summer 2018 Project: Semantics and Emergent NPC Behavior.
+* [OSMTrafficSim](https://github.com/maajor/OSMTrafficSim) - TrafficSim using Unity ECS.
+* [OpenPath](https://github.com/mrzapp/openpath) - Open source pathfinding for Unity.
+* [EvolutionSimulation01](https://github.com/JakobStenseke/EvolutionSimulation01) - Evolutionary simulation where agents age, reproduce, and eat each other.
+* [Path](https://github.com/AngryAnt/Path) - Pathfinding library for the Unity engine.
+* [AirSim](https://github.com/Microsoft/AirSim "") - Open source simulator for autonomous vehicles built on Unreal Engine / Unity, from Microsoft AI & Research.
+* [Ngx](https://github.com/keijiro/Ngx "") - Neural network based visual generator and mixer.
+* [Unity Formation Movement](https://github.com/Goodgulf281/Unity-Formation-Movement "") - Formation movement for Unity3D using standard Navmesh or A* Pathfinding. (#NAVMESH)
+* [BT Framework](https://github.com/f15gdsy/BT-Framework "") - A behavior tree framework that can be used to create game AI.
+* [Unity CogBot](https://github.com/THeK3nger/unity-cogbot "") - NPC AI framework for the popular Unity 3D game engine.
+* [Gridworld](https://github.com/THeK3nger/gridworld "") - An 3D enviroment for testing AIs powered by Unity3D.
+* [Unity BehaviourTree](https://github.com/nickkorta/Unity_BehaviourTree "")
+* [Artificial Intelligence](https://github.com/marcelochaves95/artificial-intelligence "") - Artificial intelligence in Unity using graphs and the pathfinding RTA* algorithm.
+
+## :computer: Machine Learning <a name="machine-learning"></a>
+
+* [Unity3D Machine Learning Toolkit](https://github.com/Unity-Technologies/ml-agents "") - Unity Machine Learning Agents Toolkit. ![Official](UnityResource16x16.png)
+* [PPOL](https://github.com/A7ocin/PPOL) - A crowd simulator based on Unity's ML Agents and using PPO Reinforcement Learning Algorithm.
+* [UnityTensorflowKeras](https://github.com/tcmxx/UnityTensorflowKeras "") - Unity In Editor Deep Learning Tools. Using KerasSharp, TensorflowSharp, Unity MLAgent. In-Editor training and no python needed.
+* [Unity Reinforcement Learning](https://github.com/eProw/Unity-reinforcement-learning "") - Reinforcement Learning project based on genetic algorithms.
+* [Unity TensorRT](https://github.com/aman-tiwari/Unity-TensorRT "") - Unity + TensorRT integration.
+* [TFClassify Unity](https://github.com/Syn-McJ/TFClassify-Unity "") - An example of using Tensorflow with Unity for image classification and object detection.
+* [Pix2Pix](https://github.com/keijiro/Pix2Pix "") - Real-time pix2pix implementation with Unity.
+* [ML Game](https://github.com/aman-tiwari/ml-game "") - Experiments with Unity and Pix2Pix.
+* [Angry AI](https://github.com/mbaske/angry-ai "") - Unity Machine Learning Battle Robots.
+* [Unity Neural Network Tanks AI](https://github.com/trulyspinach/Unity-Neural-Network-Tanks-AI "") - A simple tank battle game but it's controlled by Neural Network.
+* [ML Explorer Drone](https://github.com/mbaske/ml-explorer-drone "") - Unity Machine Learning Controlled Explorer Drone.
+* [Unity ML Environments](https://github.com/MarcoMeter/Unity-ML-Environments "") - This repository features game simulations as machine learning environments to experiment with deep learning approaches such as deep reinforcement learning inside of Unity.
+* [Obstacle Tower Challenge](https://github.com/Unity-Technologies/obstacle-tower-challenge "") - Starter Kit for the Unity Obstacle Tower challenge. ![Official](UnityResource16x16.png)
+* [Obstacle Tower Environment](https://github.com/Unity-Technologies/obstacle-tower-env "") - A procedurally generated environment consisting of multiple floors to be solved by a learning agent. It is designed to test learning agents abilities in computer vision, locomotion skills, high-level planning, and generalization. ![Official](UnityResource16x16.png)
+
+## :musical_score: Audio <a name="audio"></a>
+
+* [Reaktion](https://github.com/keijiro/Reaktion "Audio reactive animation toolkit for Unity.")
+* [Unity-NodeSynthesizer](https://github.com/rngtm/Unity-NodeSynthesizer "") - Nose-Based Synthesizer on UnityEditor.
+* [Unity-Synth-Experiments](https://github.com/pixlpa/Unity-Synth-Experiments "") - A set of simple generative synth scripts for Unity written in C# (OnAudioFilterRead).
+* [Videolab](https://github.com/teenageengineering/videolab "") - Toolkit for designing midi-controlled video content.
+* [Resonance-audio-unity-sdk](https://github.com/resonance-audio/resonance-audio-unity-sdk "") - Resonance Audio SDK for Unity.
+* [MusicEngine](https://github.com/geekdrums/MusicEngine "") - Make music synced game with Unity.
+* [G Audio](https://github.com/gregzo/G-Audio "") - 2D Audio Framework for Unity.
+* [UnityWav](https://github.com/deadlyfingers/UnityWav "") - WAV utility for saving and loading wav files in Unity.
+* [UnityOSC](https://github.com/thomasfredericks/UnityOSC "") - Open Sound Control (OSC) for Unity.
+* [UnityOSC](https://github.com/jorgegarcia/UnityOSC "") - Open Sound Control (OSC) C# classes interface for the Unity3d game engine.
+* [Rhythmify](https://github.com/Gkxd/Rhythmify "") - A Rhythm Syncing Implementation for Unity.
+* [Algorithmic-beat-mapping-unity](https://github.com/jesse-scam/algorithmic-beat-mapping-unity "") - Real-time and Preprocessed Audio Analysis for Onset Detection (Beat Mapping) Using Spectral Flux.
+* [UniBpmAnalyzer](https://github.com/WestHillApps/UniBpmAnalyzer "") - BPM analyzer for Unity.
+* [Spotify4Unity](https://github.com/JoshLmao/Spotify4Unity "") - Set of UI tools and scripts for integrating Spotify into your Unity game/app!
+* [CSharpSynthForUnity](https://github.com/kewlniss/CSharpSynthForUnity "") - Ported CSharpSynth Project from [codeplex](http://csharpsynthproject.codeplex.com/) to work in Unity.
+* [UniMic](https://github.com/adrenak/UniMic "") - A wrapper for Unity's Microphone class.
+* [Low Latency_Sound_for_Unity Android](https://github.com/tsubaki/Low-latency_Sound_for_UnityAndroid "")
+* [USFXR](https://github.com/zeh/usfxr) - A C# library used to generate and play game-like procedural audio effects inside Unity.
+* [Audio Toolkit](https://assetstore.unity.com/packages/tools/audio/audio-toolkit-free-version-2679) - A complete, easy-to-use, and performance optimized framework to play and manage music and sound effects in Unity. Both :moneybag: and :free:
+* [Unity Beat Detection](https://github.com/allanpichardo/Unity-Beat-Detection) - Musical beat detection and audio spectrum analysis for use with the Unity game engine.
+* [LibPdIntegration](https://github.com/LibPdIntegration/LibPdIntegration) - A libpd wrapper for Unity. See [Pure Data](https://puredata.info/)
+* [NAudio Unity](https://github.com/WulfMarius/NAudio-Unity) - Port of NAudio to the Mono subset used by Unity3D.
+* [Unity3D-SoundManager](https://github.com/baratgabor/Unity3D-SoundManager) - Simple but decent sound manager for Unity3D, with AudioSource pooling, 3D positioning support and completion callback.
+* [UniIosAudioService](https://github.com/sanukin39/UniIosAudioService) - Unity iOS plugin JUST playing iOS system sound. (#PLUGINS)
+* [KlakLasp](https://github.com/keijiro/KlakLasp) - An extension for the Klak Wiring system to create audio reactive behaviors.
+* [AudioRecorder](https://github.com/alternator/AudioRecorder) - Audio recorder component for Unity.
+* [UnityAbletonLink](https://github.com/comoc/UnityAbletonLink) - An Ableton Link plugin for Unity. (#PLUGINS)
+
+## :runner: Animation <a name="animation"></a>
+
+* [NIMA](https://www.2dimensions.com/ "") - Raster animation tool (no vector) for Unity and other game engines.
+* [SpriteAnimation](https://github.com/FarrokhGames/SpriteAnimation "") - A Unity-based sprite animator for simple and advanced animation setups.
+* [AI4Animation](https://github.com/sebastianstarke/AI4Animation "") - Character Animation in Unity 3D using Deep Learning and Artificial Intelligence.
+* [Boner2D](https://github.com/playemgames/Boner2D "") - Free Open Source 2D Animation Tools for Unity.
+* [PuppetTest](https://github.com/keijiro/PuppetTest "") - An experiment in procedural dance animation.
+* [EasyMotionRecorder](https://github.com/duo-inc/EasyMotionRecorder "") 
+* [DragonBonesCSharp](https://github.com/DragonBones/DragonBonesCSharp "") - DragonBones C# Runtime.
+* [Unity Runtime Animation Recorder](https://github.com/newyellow/Unity-Runtime-Animation-Recorder "") - Record animations in Unity runtime. Can save to .anim, maya, or FBX ASCII format.
+* [UnityChanSpringBone](https://github.com/unity3d-jp/UnityChanSpringBone "") - UnityChan Sping Bone System for lightweight secondary animations.
+* [LeanTween](https://github.com/dentedpixel/LeanTween "") - An efficient animation engine for Unity. [Asset Store Link](https://www.assetstore.unity3d.com/en/#!/content/3595).
+* [UnitySpritesAndBones](https://github.com/Banbury/UnitySpritesAndBones "") - Unity 3D addon for skeletal sprite animations.
+* [AnimeRx](https://github.com/kyubuns/AnimeRx "") - Rx Tween Animation Library for Unity.
+* [Unity Animator Helpers](https://github.com/ashblue/unity-animator-helpers "") - A micro-framework for changing Unity 3D's Animator parameters with ScriptableObject(s). Designed to make going from custom scripts to Animator parameters easy. Works with 2D or 3D projects.
+* [SpritedowAnimator](https://github.com/Elendow/SpritedowAnimator "") - A plugin to do simple sprite animations avoiding the big and tedious Unity's Mechanim system. (#2D)
+* [UnityGpuInstancedAnimation](https://github.com/piti6/UnityGpuInstancedAnimation "") - Unity animation object with gpu instancing.
+* [UnityGpuInstancing](https://github.com/kitasenjudesign/UnityGpuInstancing "") - GPU Instancing + Boids + Animation Texture Baker.
+* [Unity Animation Instancing](https://github.com/bmjoy/Unity-Animation-Instancing "")
+* [FACSvatar](https://github.com/NumesSanguis/FACSvatar "") - An Open Source Modular Framework From Face to FACS Based Avatar Animation (Unity3D / Blender).
+* [UrMotion](https://github.com/beinteractive/UrMotion "") - Flexible motion engine for non time-based animation in Unity.
+* [AnimationImporter](https://github.com/talecrafter/AnimationImporter "") - Aseprite Animation Importer for Unity. (#2D)
+* [StopMotion Unity](https://github.com/OskarSigvardsson/StopMotion-Unity "") - A simple StopMotion effect for Unity.
+* [AnimatorPreviewSyncParticle](https://github.com/Syy9/AnimatorPreviewSyncParticle "") - Unity animator preview sync particle. (#PARTICLE-SYSTEMS)
+* [CMUMocap](https://github.com/keijiro/CMUMocap "") - Unity humanoid animations converted from the Carnegie Mellon University Motion Capture Database.
+* [UnityQuillFBXAnim](https://github.com/kanzwataru/UnityQuillFBXAnim "") - Making using Quill FBX animations with Unity easier.
+* [MotionMatching](https://github.com/nashnie/MotionMatching "") - Road to next-gen animation. 
+* [AnimVRUnityToolkit](https://github.com/nvrmind/AnimVRUnityToolkit "") - Bring your AnimVR creations into Unity.
+
+## :dancers: Tweening <a name="tweening"></a>
+
+* [DOTween](https://www.assetstore.unity3d.com/en/#!/content/27676) - Tween any numeric property or field (including Vectors, Rectangles, etc.), plus some non-numeric ones (like strings). This is the follow-up to HOTween. Github link [here](https://github.com/Demigiant/dotween).
+* [GoKit](https://github.com/prime31/GoKit) - An open source, lightweight tween library aimed at making tweening objects dead simple.
+* [iTween](https://www.assetstore.unity3d.com/en/#!/content/84) - A simple, and easy to use animation system.
+* [iTween Expansion](https://github.com/jtothebell/iTween) - An expansion of Bob Berkebile's Unity 3D tweening plugin.
+* [XTween](https://github.com/Toki-Labs/XTween "") - Tweener for Unity.
+* [PlasticTween](https://github.com/PlasticApps/PlasticTween "") - Tween Library for Unity3D (ECS+JOBS).
+* [ReMotion](https://github.com/neuecc/ReMotion "Hyper Fast Reactive Tween Engine for Unity") - Hyper Fast Reactive Tween Engine for Unity.
+* [ECS-Tween](https://github.com/Xerios/ECS-Tween) - Simple Unity tweening system using ECS that works with GameObjects!
+* [AutoMotion](https://github.com/UnityPatterns/AutoMotion "") - A simple yet powerful set of functions for creating smooth motion, tweens, and bouncy effects.
+* [ZestKit](https://github.com/prime31/ZestKit "") - Tween library for Unity. The best of GoKit and GoKitLite combined in an easy to use API.
+* [GoKit](https://github.com/prime31/GoKit "") - Lightweight tween library for Unity.
+* [Coroutween](https://github.com/keenanwoodall/Coroutween "") - A shitty tweening library for Unity. Only made for the pun, don't actually use it.
+* [Uween](https://github.com/beinteractive/Uween "") - Lightweight tween library for Unity.
+
+## Augmented Reality <a name="augmented-reality"></a>
 
-## Augmented & Virtual Reality
-* [ARToolKit](http://artoolkit.org/documentation/doku.php?id=6_Unity:unity_about) - Augmented Reality SDK that includes libraries, utilities, and examples.
-* [Google VR SDK](https://developers.google.com/vr/unity) - Scripts and prefabs to help with the development of Google Daydream and Cardboard apps for Android and iOS.
-* [SteamVR Unity Toolkit](https://www.assetstore.unity3d.com/en/#!/content/64131) - Scripts and Great examples to abstract the use of VR controller actions in Unity.
-* [Virtual Reality Toolkit](http://github.com/thestonefox/vrtk) - Virtual Reality framework that allows for powerful interactions, locomotion, and visual effects.
 * [Vuforia](https://vuforia.com/) - Augmented Reality SDK with image and object recognition, smart terrain and extended tracking features.
+* [iOSUnityVuforiaGuide](https://github.com/keyv/iOSUnityVuforiaGuide) - Integration of Unity + Vuforia into native iOS application.
+* [ARToolKit](http://artoolkit.org/documentation/doku.php?id=6_Unity:unity_about) - Augmented Reality SDK that includes libraries, utilities, and examples. (Redirects to DAQRI website.)
+* [ARunity5](https://github.com/artoolkit/arunity5) - ARToolKit for Unity v5.x.
+* [ARCore Unity SDK](https://github.com/google-ar/arcore-unity-sdk "") - ARCore SDK for Unity.
+* [ARFoundation Samples](https://github.com/Unity-Technologies/arfoundation-samples "") - Example content for Unity projects based on [AR Foundation](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@1.0/manual/index.html). ![Official](UnityResource16x16.png)
+* [Facial AR Remote](https://github.com/Unity-Technologies/facial-ar-remote "") - A tool that allows you to capture blendshape animations directly from your iPhone X into Unity 3d by use of an app on your phone. ![Official](UnityResource16x16.png)
+* [ArucoUnity](https://github.com/NormandErwan/ArucoUnity "") - Bring augmented reality to Unity by tracking Aruco markers in real time.
+* [UnityARFaceDeformation](https://github.com/kitasenjudesign/UnityARFaceDeformation "") - AR Face Deformation with Unity ARKit Plugin.
+* [UnityARKitFaceGestures](https://github.com/dilmerv/UnityARKitFaceGestures "") - An example repository created to demonstrate how to track gestures with ARKit and Unity3D.
+* [Location-Based-Markerless-Augmented-Reality](https://github.com/hynra/Location-Based-Markerless-Augmented-Reality "") - Markerless Augmented Reality based on location made with Unity and Kudan AR SDK.
+* [Tango Examples Unity](https://github.com/googlearchive/tango-examples-unity "") - Project Tango UnitySDK Example Projects (#DEPRECATED).
+* [AR Unity](https://github.com/Bewolf2/AR-Unity "") - Augmented Reality in Unity. Uses [ALVAR](http://virtual.vtt.fi/virtual/proj2/multimedia/alvar/index.html) and OpenCV.
+* [MagicLeapFramework Unity](https://github.com/jamesashley1/MagicLeapFramework-Unity "") - Unity helper classes and examples to accelerate prototyping for Magic Leap.
+* [Magic Leap Dev Resources](https://github.com/MagicLeapDevs/MagicLeapDevResources "") - Magic Leap Developer Resources for the Lumin SDK and Magic Leap One.
+* [Vuforia Runtime Dataset Sample](https://github.com/rizasif/vuforia-runtime-dataset-sample "") - A sample unity project for loading datasets in vuforia at runtime.
+
+## Virtual Reality <a name="virtual-reality"></a>
+
+### Common <a name="virtual-reality-common"></a>
+
+* [VRTK (Virtual Reality Toolkit)](https://github.com/thestonefox/VRTK "") - A productive VR Toolkit for rapidly building VR solutions in Unity3d. :cool:
+* [VRTK Unity Core](https://github.com/ExtendRealityLtd/VRTK.Unity.Core "") - A set of design patterns for rapidly building VR solutions in Unity3D.
+* [VRTK_MouseGrab](https://github.com/ousttrue/VRTK_MouseGrab "") - VRTK SDK sample.
+* [VRTK_MyCongif](https://github.com/Vortick/VRTK_MyCongif "") - A perosonal configuration for VRTK plugin to work on unity 2018.
+* [NewtonVR](https://github.com/TomorrowTodayLabs/NewtonVR "") - A virtual reality interaction system for unity based on physics.
+* [OVRLay](https://github.com/benotter/OVRLay "") - An easy-to-use toolkit for developing OpenVR Overlays with Unity Engine.
+* [MoonMotion](https://github.com/MoonMotionProject/MoonMotion "") - Free and open source toolkit for VR locomotion.
+* [The Lab Renderer](https://assetstore.unity.com/packages/tools/the-lab-renderer-63141?aid=1100l35sb&utm_source=aff "") - The Lab Renderer (VR Essentials).
+* [WorldShare](https://github.com/ritchielozada/WorldShare "") - Virtual World Sharing Across Platforms.
+* [VRTeleportationTourTemplate](https://github.com/wotakuro/VRTeleportationTourTemplate "") - Template project for VR tour applications.
+* [VR Template](https://github.com/epitech-toulouse/Vr_Template "") - Unity project template for VR project, will be using for XR Workshop.
+* [VR Spectator Sample](https://github.com/Unity-Technologies/VR-Spectator-Sample "") - Sample project for understanding how to VR Spectate in Unity. ![Official](UnityResource16x16.png)
+* [Mesh Maker VR](https://github.com/createthis/mesh_maker_vr "") - Mesh Maker VR.
+* [CreateThis VR UI](https://github.com/createthis/createthis_vr_ui "") - User Interface system for Mesh Maker VR.
+* [YVTuber](https://github.com/youten/YVTuber "") - YVTuber(Yume VTuber System) is Unity project for VTuber(Virtual YouTuber).
+* [XLand](https://github.com/huisedenanhai/XLand "") - Live2D VTuber(Virtual YouTuber) App with extensible node graph editor.
+* [TBUTT-VR](https://github.com/turbobutton/tbutt-vr "") - A lightweight multiplatform interface for making VR games in Unity.
+* [VketBoothValidator](https://github.com/Kozu-vr/VketBoothValidator "")
+* [NoloUnity](https://github.com/n1ckfg/NoloUnity "") - Motion tracking system for virtual/augmented reality. See [NOLO driver for Windows](https://github.com/NOLOVR/NOLO-Driver-For-Windows). More [info](https://www.nolovr.com/index).
+* [VRBow](https://github.com/aleclouck/VRBow "") - Virtual Reality Bow and arrow demo made in unity.
+* [Unity VR IK Mecanim](https://github.com/createthis/unity_vr_ik_mecanim "") - VR IK using native Unity Mecanim IK.
+* [VR180MeshProjection](https://github.com/aosoft/VR180MeshProjection "") - VR180 Mesh Projection Box Parser.
+* [VRMSpringBone-Optimize](https://github.com/mao-test-h/VRMSpringBone-Optimize "") - (#ANIMATION)
+* [UniVRM](https://github.com/dwango/UniVRM "") - Unity package that can import and export VRM format. See also [LoadVRM](https://github.com/MrSlip777/LoadVRM)
+* [DesktopMascot4VRM](https://github.com/keel-210/DesktopMascot4VRM "")
+* [User Reporting VR](https://github.com/UnityTech/user-reporting-vr "") - A VR Unity project that uses the User Reporting feature of Unity Cloud Diagnostics.
+* [Unity Chemical Engine](https://github.com/zrdumped/Unity-Chemical-Engine "") - A VR Chemical Reaction & Experiments Simulation Application Developed by Unity3D.
+* [LilyRender360](https://github.com/eliemichel/LilyRender360 "") - Lily Render 360 is a tool for rendering a Unity scene into stitch-free equirectangular images.
+* [UnityVR Interaction](https://github.com/RandolphM/UnityVR-Interaction "") - Any VR (Virtual Reality) headset can work.
+* [CWVRGUI](https://github.com/chilton/CWVRGUI "") - Simple toolkit for interacting with the Unity GUI system via a hand controller in VR. (#UI)
+* [360 Video Heatmaps](https://github.com/Unity-Technologies/360-Video-Heatmaps "") - Heatmaps for 360 Video. ![Official](UnityResource16x16.png)
+* [Useful Scripts for VR Development](https://github.com/yutokun/Useful-Scripts-for-VR-Development "") - Collection of scripts to help virtual reality application development.
+* [VMagicMirror](https://github.com/malaybaku/VMagicMirror "") - VRM based avatar software for Windows with minimal devices. See also [VMagicMirrorConfig](https://github.com/malaybaku/VMagicMirrorConfig).
+
+### HTC Vive <a name="virtual-reality-htcvive"></a>
+
+* [Vive Input Utility for Unity](https://github.com/ViveSoftware/ViveInputUtility-Unity "") - A toolkit that helps developing/prototyping VR apps.
+* [uViveTrackerWithoutHMD](https://github.com/shop-0761/uViveTrackerWithoutHMD "")
+* [UnityViveTrackerExample](https://github.com/WhiteNoise/UnityViveTrackerExample "") - Example of using the Vive trackers to control a character and record it to a generic animation. (#ANIMATION)
+* [Portals VR](https://github.com/nrebei2/Portals-VR "") - Using HTC's Unity Plugin on Sterio Rendering to create a "bigger on the inside" effect in VR. Using Doctor Who's Tardis as an example.
+* [ViveTrackedDevice](https://github.com/fughilli/ViveTrackedDevice "") - Completely open-source, reverse-engineered implementation of a tracked device for the SteamVR virtual reality system.
+* [VR Speech Sandbox Vive](https://github.com/IBM/vr-speech-sandbox-vive "") - A sample application that demonstrates how to integrate voice commands and speech recognition into a virtual reality experience. 
+
+### Oculus <a name="virtual-reality-oculus"></a>
+
+* [Oculus Rift DK2 Extend Preview](https://github.com/hammmm/OculusRiftDK2ExtendPreview "") - OculusRift DK2 Unity Editor PreviewScript.
+* [RiftGesture](https://github.com/natbro/RiftGesture "") - Oculus Rift gesture detection.
+* [DH OculusVR Models](https://github.com/BritishMuseum/DH-OculusVR-models "") - 3D models decimated for use in VR experience by Oculus.
+* [VR Speech Sandbox Rift](https://github.com/IBM/vr-speech-sandbox-rift "") - Oculus Rift's version of VR Speech Sandbox Vive.
+
+### SteamVR <a name="virtual-reality-steamvr"></a>
 
-## Camera
+* [SteamVR Unity Toolkit](https://github.com/WildStyle69/SteamVR_Unity_Toolkit "") - A collection of useful scripts and prefabs for building SteamVR titles in Unity 5. See it on the [Asset Store](https://www.assetstore.unity3d.com/en/#!/content/64131).
+* [SteamVR Unity Toolkit](https://github.com/n1ckfg/SteamVR_Unity_Toolkit "") - Predecessor of @thestonefox's VRTK, organized as submodule.
+* [SteamVR Unity Plugin](https://github.com/ValveSoftware/steamvr_unity_plugin "") - Steam VR plugin for Unity.
+* [SteamVR Enabler](https://github.com/demonixis/SteamVREnabler "") - A tool to enable or disable the SteamVR runtime.
+* [PictureWindow](https://github.com/deprecatedcoder/PictureWindow "") - Allows the user (outside of HMD) to view into the virtual world by turning the display into a window.
 
-* [UFPS (Paid)](https://www.assetstore.unity3d.com/en/#!/content/2943) - Provides camera, controllers, and other effects for use in FPS games.
+### Google VR <a name="virtual-reality-googlevr"></a>
 
-## Character Controllers
+* [Google VR SDK](https://github.com/googlevr/gvr-unity-sdk "") - Scripts and prefabs to help with the development of Google Daydream and Cardboard apps for Android and iOS. (https://developers.google.com/vr/unity)
+* [Daydream Renderer for Unity](https://github.com/googlevr/daydream-renderer-for-unity "") - A set of scripts and shaders designed to allow for high quality real-time rendering on the Daydream platform targeting 60fps.
+* [NatCam VR Cardboard](https://github.com/olokobayusuf/NatCam-VR-Cardboard "") - A Google Cardboard VR project using the rear camera preview. Powered by NatCam 1.2.
+* [VR Speech Sandbox Carboard](https://github.com/IBM/vr-speech-sandbox-cardboard "") - Google Carboard's version of VR Speech Sandbox Vive.
+
+### Samsung Gear VR <a name="virtual-reality-samsung-gear-vr"></a>
+
+* [GearVR Leap Unity](https://github.com/levrn/gear-vr-leap-unity "") - Workaround in Unity to use Leap Motion Controller with Gear VR (or any other headset that doesn't support it).
+
+### VRChat <a name="virtual-reality-vrchat"></a>
+
+* [VR Chat](https://www.vrchat.net/ "") - Lets you create, publish, and explore virtual worlds with other people from around the world.
+* [Pumkins Avatar Tools](https://github.com/rurre/PumkinsAvatarTools "") - A tool to speed up setting up VRChat avatars in Unity.
+* [VRChat Counter](https://github.com/aytimothy/VRChat_Counter "") - A simple counter in VRChat that is network-friendly.
+* [VRCUnityStuffs](https://github.com/lukis101/VRCUnityStuffs "") - Collection of Unity shaders, scripts and prefabs oriented for usage in VRChat.
+* [VRMConverterForVRChat](https://github.com/esperecyan/VRMConverterForVRChat "")
+
+## Mixed Reality <a name="mixed-reality"></a>
+
+* [Microsoft Hololens 2](https://www.microsoft.com/en-us/hololens "") - Second generation mixed reality device developed by Microsoft. See its [guides](https://azure.microsoft.com/es-es/topic/mixed-reality/).
+* [Microsoft Mixed Reality Toolkit](https://github.com/Microsoft/MixedRealityToolkit-Unity "") - Microsoft Mixed Reality Toolkit.
+* [Azure Spatial Anchors Samples](https://github.com/Azure/azure-spatial-anchors-samples "") - Azure Spatial Anchors is a managed cloud service and platform that enables multi-user, spatially aware mixed reality and augmented reality (MR/AR) apps for HoloLens, iOS devices with ARKit, and Android devices with ARCore. 
+* [Ong Sharing Drag n Drop](https://github.com/mr0ng/Ong-Sharing-Drag-n-Drop "") - Ong's Drag and Drop Sharing Solution.
+* [XRTK (Mixed Reality Toolkit)](https://github.com/XRTK/core "") - The Mixed Reality Framework's core interface contracts, services, and utilities.
+* [Visual Profiler Unity)](https://github.com/Microsoft/VisualProfiler-Unity "") - The VisualProfiler provides a drop in, single file, solution for viewing your Windows Mixed Reality Unity application's frame rate and memory usage.
+* [Unity Cognitive Services Demos](https://github.com/misslivirose/unity-cognitive-services-demos "") - Examples of using Microsoft's Cognitive Services in Unity for HoloLens.
+* [Mixed Reality Design Labs Unity](https://github.com/Microsoft/MixedRealityDesignLabs_Unity "") - Mixed Reality Design Labs share experimental samples, explorations and learning from Windows Mixed Reality Design group.
+* [Editor XR](https://github.com/Unity-Technologies/EditorXR "") - Author XR in XR. ![Official](UnityResource16x16.png)
+* [XR Components](https://github.com/CandyCoded/XR-Components "") - Generic components for use with XR.
+* [UnityLIB XR Interaction](https://github.com/Fjordnet/UnityLIB-XRInteraction "") - A library for Unity3D which enables someone to create an XR application for any XR headset and controllers through one unified set of abstractions and one single library.
+* [Unity XR Grab And Climb](https://github.com/immemorable-moniker/UnityXRGrabAndClimb "") - This Unity project is a very simple XR interactions example that implements grabbing and climbing using Unity's multiplatform APIs.
+* [MR Lighting Tools Unity](https://github.com/Microsoft/MRLightingTools-Unity "") - A Unity library and MRTK extension for estimating and replicating the current environment's lighting on Mixed Reality devices.
+* [MRHand](https://github.com/Ayfel/MRHand "") - Script for handling Input for MR devices through native Unity code.
+* [Avatar Spec](https://github.com/VRBA/avatar-spec "") - A standardized spec for avatars for a multitude of interpreters made for different platforms (JavaScript, Unity, Unreal Engine etc.), so that avatars can be created once and work everywhere.
+* [Looking Glass](https://lookingglassfactory.com/ "") - A universal holographic display for 3D creators. (#VIRTUAL-REALITY) (#AUGMENTED-REALITY)
+* [LKGVR180Player](https://github.com/nkjzm/LKGVR180Player "") - VR180 Player by the (Looking Glass)[https://lookingglassfactory.com/].
+
+## Computer Vision & Tracking <a name="computer-vision-and-tracking"></a>
+
+* [Azure Kinect](https://azure.microsoft.com/es-es/services/kinect-dk/ "") - A developer kit and PC peripheral with advanced artificial intelligence (AI) sensors for sophisticated computer vision and speech models. See its [specs](https://opdhsblobprod03.blob.core.windows.net/contents/503db294612a42b3b95420aaabac44cc/0b5422607ce5da1919083d6373d49fa4?sv=2015-04-05&sr=b&sig=zX1I4tMK6KYa89hVIPJWpSH%2FYsVptK%2Fr07MaUipuVDM%3D&st=2019-02-25T07%3A36%3A47Z&se=2019-02-26T07%3A46%3A47Z&sp=r).
+* [K4Wv2UnityBridge](https://github.com/jamesashley1/K4Wv2UnityBridge "") - A Kinect v2 bridge for Unity notes: 1. currently 64-bit, so plays but does not run in editor 2. curently hd color stream only.
+* [Leap Motion](https://www.leapmotion.com/ "") - A computer hardware sensor device that supports hand and finger motions as input, analogous to a mouse, but requires no hand contact or touching.
+* [Leap Motion Core Assets](https://github.com/leapmotion/LeapMotionCoreAssets "") - Unity Assets for Leap Motion v2 Skeletal Tracking.
+* [Project North Star](https://github.com/leapmotion/ProjectNorthStar "") - The open-source files comprising Leap Motion's Project North Star AR Headset. See the blog post [here](http://blog.leapmotion.com/north-star-open-source/).
+* [Myo](https://support.getmyo.com/hc/en-us) - A gesture control armband developed by Thalmic Labs. See [link](https://xinreality.com/wiki/Myo).
+* [Intel Realsense Hand Toolkit for Unity](https://github.com/ReiiYuki/Intel-Realsense-Hand-Toolkit-Unity "") - Intel Realsense Toolkit for Hand tracking and Gestural Recognition on Unity3D.
+* [ZED SKD Unity Plugin](https://github.com/stereolabs/zed-unity "") - ZED SDK Unity plugin.
+* [UnityCloudVision](https://github.com/comoc/UnityCloudVision "") - Google Cloud Vision API client for Unity.
+* [TensorFlowUnity ObjectDetection](https://github.com/MatthewHallberg/TensorFlowUnity-ObjectDetection "") - Object detection test project with Tensorflow and Unity.
+* [KinectSDK Unity3D Interface Plugin](https://github.com/adevine1618/KinectSDK-Unity3D_Interface_Plugin "") - This is a wrapper that allows the user to access Microsoft's Kinect SDK v.1.7 data from inside the free Unity3D game engine.
+* [Kinect-VFX-Graph](https://github.com/roelkok/Kinect-VFX-Graph "") - Use Kinect's depth feed with Unity's VFX Graph. (#SHADERS)
+* [Deepdive](https://github.com/asymingt/deepdive "") - Rigid body tracking with HTC Vive trackers. (#VIRTUAL-REALITY)
+* [Rsvfx](https://github.com/keijiro/Rsvfx "") - Visual effects by Keijiro using Intel Realsense camera.
+* [Dkvfx](https://github.com/keijiro/Dkvfx "") - An example that shows how to use recorded Depthkit footage with Unity VFX Graph.
+* [Project Gesture](https://github.com/Microsoft/Gestures-Samples "") - [Project Prague](https://labs.cognitive.microsoft.com/en-us/project-gesture) Code Samples.
+* [Yolo Unity](https://github.com/mbaske/yolo-unity "") - YOLO Object Detection for Unity (Windows).
+* [Alturos.Yolo](https://github.com/AlturosDestinations/Alturos.Yolo "") - C# Yolo Darknet Wrapper (real-time object detection).
+
+## :loudspeaker: Speech Recognition <a name="speech-recognition"></a>
+
+* [Unity SpeechWithLUIS](https://github.com/ActiveNick/Unity-SpeechWithLUIS "") - Sample Unity project used to demonstrate the integration of Speech Recognition and Language Understanding using the new Microsoft Speech Service (Preview) and LUIS from Microsoft Cognitive Services.
+* [Unity MS SpeechSDK](https://github.com/ActiveNick/Unity-MS-SpeechSDK "") - Sample Unity project used to demonstrate Speech Recognition using the new Microsoft Speech Service (Preview) via WebSockets.
+
+## :movie_camera: Camera <a name="camera"></a>
+
+* [Cinemachine](https://github.com/Unity-Technologies/upm-package-cinemachine "") - Smart camera tools for passionate creators. ![Official](UnityResource16x16.png)
+* [Unity Cinemachine](https://github.com/tonygod/unity-cinemachine "") - A few helpful starter Unity Cinemachine scripts.
+* [Pixel Perfect Retro Camera](https://github.com/wolv-interactive/Pixel-Perfect-Retro-Camera "") - Pixel perfect retro camera system for Unity.
+* [Unity Pixel Camera](https://github.com/ChemiKhazi/UnityPixelCamera) - A resolution independent pixel perfect camera for Unity.
+* [DeadSimple Pixel-Perfect Camera](https://github.com/cmilr/DeadSimple-Pixel-Perfect-Camera) - An exceedingly easy-to-use pixel perfect orthographic camera script for 2D scenes in Unity. Punch in a few specs and you've got a working pixel perfect camera. It's that easy.
+* [UnityEquiCam](https://github.com/bodhid/UnityEquiCam "") - Realtime 360° ( equirectangular ) panorama Camera for Unity.
+* [Game Eye 2D](https://github.com/JasonHein/Game-Eye-2D "") - A component based orthographic camera extension for unity that tracks 2D environments.
+* [DeadSimple Pixel Perfect Camera](https://github.com/cmilr/DeadSimple-Pixel-Perfect-Camera "") - An exceedingly easy-to-use pixel perfect orthographic camera script for 2D scenes in Unity.
+An exceedingly easy-to-use pixel perfect orthographic camera script for 2D scenes in Unity.
+* [UFPS](https://www.assetstore.unity3d.com/en/#!/content/2943) - Provides camera, controllers, and other effects for use in FPS games. :moneybag:
+* [Physical Camera](https://github.com/Unity-Technologies/Physical-Camera) - Unity Component that can describes a physical camera's attributes. (#Physics) ![Official](UnityResource16x16.png)
+* [Unity Camera Follow 2D](https://github.com/minhhh/unity-camera-follow-2d) - Script to make 2d camera follow players in an interesting way.
+* [Unity CameraSizeToVelocity2D](https://github.com/tonisuo/Unity-CameraSizeToVelocity2D) - Simple script to change the cameras size depending on the velocity of the target.
+* [CameraLib4U](https://github.com/mortennobel/CameraLib4U) - A third person camera system for Unity using Chase Camera.
+* [Unity First Person View](https://github.com/TiagoF11/-Unity-First-Person-View) - An asset that allows you to have a First Person Perspective where first person objects do not clip through the environment, have a separate field of view from the environment and can receive shadows from the environment. 
+* [GyroCam](https://github.com/keijiro/GyroCam) - Quasi-AR with gyroscopic input.
+* [Unity3D PerlinCameraShake](https://github.com/baratgabor/Unity3D-PerlinCameraShake) - Perlin noise based camera shake MonoBehaviour script for Unity3D, ready to attach to a Camera. Uses a coroutine-based execution that exits after the job is done. Should be relatively performant.
+* [Unity Jobs View Frustum Culling](https://github.com/MPozek/Unity-Jobs-View-Frustum-Culling) - A simple collection of jobs used for view frustum culling
+* [UnityCameraShake](https://github.com/IronWarrior/UnityCameraShake) - Generates pseudo-random camera shake using Perlin noise.
+* [UnitySceneCameraController](https://github.com/XJINE/Unity_SceneCameraController) - Control a camera or any other object like SceneView camera.
+
+## Physics <a name="physics"></a>
+
+* [BulletSharpUnity3D](https://github.com/Phong13/BulletSharpUnity3d "") - A fork of the BulletSharp project to make the Bullet Physics Engine usable from C# code in Unity3D.
+* [GPU Physics Unity](https://github.com/jknightdoeswork/gpu-physics-unity "") - Through this configuration, no per voxel data is transferred between the GPU and the CPU at runtime.
+* [Jello Physics](https://github.com/kwanchangnim/Jello-Physics "") - 2D Soft Body Physics for Unity.
+* [ECSPhysics](https://github.com/PhilSA/ECSPhysics "") - A physics engine made with Unity ECS.
+* [UnityPhysics2D](https://github.com/MelvynMay/UnityPhysics2D) - Examples of various Unity 2D Physics components and features.
+* [HedgePhysics](https://github.com/Camano/HedgePhysics "") - A open source 3D Sonic engine made in Unity.
+* [Jitter Physics for Unity](https://bitbucket.org/alexzzzz/jitter-physics-for-unity "") - An abandoned attempt to integate [Jitter Physics](https://github.com/mattleibow/jitterphysics) engine into Unity.
+* [BEPU Physics for Unity ECS](https://github.com/bellicapax/bepu-physics-for-unity-ecs "") - Translation in progress of BEPU Physics library v1 to Unity's ECS and Job System.
+* [Randomation Vehicle Physics](https://github.com/JustInvoke/Randomation-Vehicle-Physics "") - Vehicle physics system for the Unity engine.
+* [ArcadeCarPhysics](https://github.com/SergeyMakeev/ArcadeCarPhysics "") - Arcade Car Physics - Vehicle Simulation for Unity3D.
+* [Arcade Car Physics](https://github.com/Saarg/Arcade_Car_Physics "") - Unity package for cars using wheel colliders.
+* [Unity Burst_Shape Matching](https://github.com/nialltl/unity_burst_shape_matching "") - Parallelised 2D deformable bodies using the C# Job system, Unity's Burst compiler and GPU instancing.
+* [Unity3D PhysicsGun](https://github.com/Laumania/Unity3d-PhysicsGun "") - Unity3D sample implementation of a Half-life 2 / Garry's mod/ Gmod Physics Gun.
+* [2D Deformable Body in Unity](https://github.com/Scrawk/2D-Deformable-body-in-Unity "") - A 2D Deformable body simulation in Unity using FEM. (#2D)
+* [Clothing System 3D](https://github.com/keawstudio/Clothing-System-3D "") - Asset for Unity 3D to allows character customization.
+* [GPU Cloth Simulation](https://github.com/JUSTIVE/GPU-Cloth-Simulation "") - GPU Mass-Spring Simulation Cloth in Unity.
+* [OpenRelativity](https://github.com/MITGameLab/OpenRelativity "") - An open source framework to add the effects of traveling at relativistic speeds to visualizations or games.
+* [Fusion](https://github.com/Ninjajie/Fusion "") - Unity Physics on GPU.
+* [Qu3e Sharp](https://github.com/willnode/Qu3e-Sharp "") - Lightweight and Simple 3D Open Source Physics Engine ported to C#.
+* [UnityNativeCollision](https://github.com/imxzjv/UnityNativeCollision "") - SAT Collision in C# for Unity3D Burst Compiler. Another [user](https://github.com/jeffvella/UnityNativeCollision) has it too.
+* [Unity Bullet Hell](https://github.com/jongallant/Unity-Bullet-Hell "") - An extremely efficient projectile generator for unity.
+* [UnityMathReference](https://github.com/zezba9000/UnityMathReference) - Math reference for games and more. All visualized in Unity3D.
+* [Custom 2D Colliders](https://github.com/GuyQuad/Custom-2D-Colliders) - A set of custom 2D colliders for Unity. (#2D)
+* [Custom Primitive Colliders](https://github.com/WestHillApps/Custom-Primitive-Colliders "") - Custom primitive colliders for Unity.
+* [Unity3D QuadTree Collision Detection](https://github.com/Chabinka/Unity3d-QuadTree-Collision-Detection "") - QuadTree and Collision Detection Systems for Unity3D.
+* [Unity3D QuadTree Collision Detection](https://github.com/MrTrueChina/Unity-Quadtree-Collision-Detection "")
+* [DynamicRagdoll](https://github.com/tiredamage42/DynamicRagdoll "") - Runtime customizable ragdolls in Unity. With transitions to and from animated states.
+* [Quickfracture](https://github.com/OskarSigvardsson/quickfracture) - A unity destruction effect.
+* [Cable Component](https://github.com/NoxWings/Cable-Component "") - Unity cable component implementation similar to the Unreal Engine one based on verlet integration.
+* [StandardizeBows](https://github.com/ahmetahaydemir/StandardizeBows "") - Standardize Bows is a Unity ( C# ) project that is created in order to setup bow models that will simulate the physics of a bow without having any animation or animator component.
+* [Unity Fluid Simulation 2D](https://github.com/giangchau92/Unity-Fluid-Simulation-2D) - Using extended camera to render particles then metalball processing with shader.
+* [PBD Fluid in Unity](https://github.com/Scrawk/PBD-Fluid-in-Unity) - A PBD fluid in unity running on the GPU. 
+* [UnityFluidDynamics](https://github.com/IceLanguage/UnityFluidDynamics "") - This code is translated from the code provided in Jos Stam's GDC2003 paper.
+* [2DFluidSim](https://github.com/candycat1992/2DFluidSim "") - Port 2D fluid simulation to Unity. (#2D)
+* [UnityFluidExperiments](https://github.com/MaxSigma/UnityFluidExperiments "") - Collection of Fluid Simulation Experiments in Unity.
+* [Warthog](https://github.com/brihernandez/Warthog "") - WheelCollider driven fun little vehicle like Halo's Warthog.
+* [Unity Earthquake Simulation](https://github.com/ertanturan/Unity-Earthquake-Simulation "") - Earthquake simulation using real earthquake data from textassets in unity.
+
+## Character Controllers <a name="character-controllers"></a>
+
+* [Standard Assets Characters](https://github.com/Unity-Technologies/Standard-Assets-Characters "") - Unity Standard Asset Controllers. ![Official](UnityResource16x16.png)
+
+### 2D Character Controllers <a name="2d-character-controllers"></a>
 
 * [CharacterController2D](https://github.com/prime31/CharacterController2D) - A 2D controller that behaves very similarly to Unity's CharacterController component.
+* [PlatformerRails](https://github.com/FriendSea/PlatformerRails "") - Character Controller for 2.5D Platformer on Unity.
+* [SuperCharacterController](https://github.com/IronWarrior/SuperCharacterController "") - Unity custom character controller.
+* [2DCharacterControllerTutorial](https://github.com/IronWarrior/2DCharacterControllerTutorial "") - Source code for 2D Character Controller tutorial for Unity. (#Tutorial)
+* [Unity 2D Platformer Controller](https://github.com/cjddmut/Unity-2D-Platformer-Controller) - A customizable 2D platformer motor that handles mechanics such as double jumps, wall jumps, and corner grabs. Includes a player controlled prefab that can be dropped into any scene for immediate support.
 
-## Frameworks
+### 3D Character Controllers <a name="3d-character-controllers"></a>
 
-* [Fungus](https://github.com/snozbot/fungus) - An easy to use Unity 3D library for creating illustrated Interactive Fiction games.
-* [StrangeIoC](http://strangeioc.github.io/strangeioc/) - Strange is a super-lightweight and highly extensible Inversion-of-Control (IoC) framework, written specifically for C# and Unity.
-* [uFrame (Paid)](https://www.assetstore.unity3d.com/en/#!/content/14381) - Create maintainable games faster, better, more stable, and consistent than ever before.
+* [Unity3D ThirdPersonController](https://github.com/Arjunxxxl/Unity3d_ThirdPersonController "") - Unity3d Third Person Controller.
+* [NaughtyCharacter](https://github.com/dbrizov/NaughtyCharacter) - Third Person Controller for Unity.
+* [Advanced Rigidbody FirstPerson Controller](https://github.com/Moe-Baker/Advanced-Rigidbody-FirstPerson-Controller) - Rigidbody Based FirstPerson Controller.
+* [UNet Controller](https://github.com/GreenByteSoftware/UNet-Controller) - A Character Controller based controller for Unity's new Networking system. (#NETWORKING)
+* [SuperCharacterController](https://github.com/gucheng0712/SuperCharacterController) - Unity custom character controller. (#ARCHIVED)
 
-## Input
+## Input <a name="input"></a>
 
-* [InControl](https://github.com/pbhogan/InControl) - An input manager that tames makes handler cross-platform. controller input easy.
+* [TouchUIWatcher](https://github.com/Syy9/TouchUIWatcher "") - Unity GameView Touch UI Watcher.
+* [TouchScript](https://github.com/TouchScript/TouchScript "") - Complete multi-touch solution for Unity: iOS, Android, Windows, TUIO.
+* [Unity Steer](https://github.com/ricardojmendez/UnitySteer "") - Steering, obstacle avoidance and path following behaviors for the Unity Game Engine. See the [examples](https://github.com/ricardojmendez/UnitySteerExamples "").
+* [TouchKit](https://github.com/prime31/TouchKit "") - Gestures and input handling made sane for Unity.
+* [InControl](https://github.com/pbhogan/InControl "") - An input manager for Unity that tames the cross-platform controller beast.(Discontinued)
 * [InputBinder](https://github.com/RyanNielson/InputBinder) - Bind game inputs to methods via code or using the inspector to add event driven input handling to your project.
-* [TouchKit](https://github.com/prime31/TouchKit) - Makes it easy to recognize gestures and other touch input.
-* [TouchScript](https://github.com/TouchScript/TouchScript) - Makes handling complex gesture interactions on any touch surface much easier.
+* [MouseFlight](https://github.com/brihernandez/MouseFlight "") - War Thunder style mouse flight controls for aircraft.
+* [FreelancerFlightExample](https://github.com/brihernandez/FreelancerFlightExample "") - Spaceship flight in a similar style to Freelancer.
+* [InputSystem](https://github.com/Unity-Technologies/InputSystem "") - An efficient and versatile input system for Unity. ![Official](UnityResource16x16.png)
+* [InputManager](https://github.com/daemon3000/InputManager "") - Custom InputManager for Unity.
+* [Unity Wiimote](https://github.com/Flafla2/Unity-Wiimote "") - An easy to use interface between Unity3D / C# and a Wii Remote controller.
+* [UnityMobileInput](https://github.com/mopsicus/UnityMobileInput "") - Unity mobile Input plugin for iOS and Android (Unity UI compatible).
+* [Virtual Joystick Unity](https://github.com/maydinunlu/virtual-joystick-unity "") - Virtual Joystick for Mobile Devices with Unity3D.
+* [UnityRawInput](https://github.com/Elringus/UnityRawInput "") - Windows Raw Input wrapper for Unity game engine.
 
-## Modeling
-* [Prototype](https://www.assetstore.unity3d.com/en/#!/content/11919) - Uses the core of ProBuilder, enabling you to build entire game levels (or objects) with speed and simplicity.
-* [SabreCSG](http://sabrecsg.com/) - A set of [CSG](https://en.wikipedia.org/wiki/Constructive_solid_geometry) level design tools for building complex levels quickly inside Unity. 
+### Controller Mappings <a name="controllers-mappings"></a>
+
+* [Dualshock 3 (PS3)](https://forum.unity.com/threads/ps3-button-map.89288/)
+* [Dualshock 4 (PS4)](https://twitter.com/erik_tellier/status/1071457079854944256)
+* [Nintendo Joy Con](https://www.reddit.com/r/Unity3D/comments/60wh7g/nintendo_switch_joycon_controller_mapped_for_unity/)
+* [Nintendo Pro Controller](https://answers.unity.com/questions/1419842/nintendo-switch-pro-controller-mapping.html)
+* [Xbox 360](http://wiki.unity3d.com/index.php?title=Xbox360Controller)
+* [Xbox One](https://answers.unity.com/questions/1350081/xbox-one-controller-mapping-solved.html)
+
+## :money_with_wings: Monetization <a name="monetization"></a>
 
-## Monetization
 * [Unity Ads](https://www.assetstore.unity3d.com/en/#!/content/21027) - Unity Ads is a video ad network with quick and seamless integration using regular and opt-in ads.
+* [Unity3D Store](https://github.com/soomla/unity3d-store) - Unity in-app purchase & virtual economy library. Part of The SOOMLA Framework - for game design, economy modeling and faster development.
+* [AdMob Unity Plugin](https://github.com/OrigameStudio/admob-unity-plugin) - An extension for Unity3d to place AdMob banners in your Android games. (#PLUGINS)
+* [Unity3D LevelUp](https://github.com/soomla/unity3d-levelup) - Unity3D F2P game progression library - worlds, levels, missions, scores, records and more. Part of The SOOMLA Framework - for game design, economy modeling and faster development.
+* [Google Mobile Ads Unity Plugin](https://github.com/googleads/googleads-mobile-unity) - Official Unity Plugin for the Google Mobile Ads SDK
+* [OpenIAB](https://github.com/onepf/OpenIAB) - Open In-App Billing for Google Play, SlideMe, Amazon Store, Nokia Store, Samsung Apps, Yandex.Store, Appland, Aptoide, AppMall and Fortumo.
+* [DeltaDNA Unity SDK](https://github.com/deltaDNA/unity-sdk) - Add support for deltaDNA's platform and smartads mediation to your Unity games.
+* [Vungle Unity Plugin](https://github.com/Vungle/Unity-Plugin "") - Vungle's Unity Plugin. Monetization SDK. (#MONETIZATION)
 
-## Networking
+## Services <a name="services"></a>
 
-* [Nakama](https://www.assetstore.unity3d.com/en/#!/content/81338) - Build social and realtime games with an open-source [distributed server](https://github.com/heroiclabs/nakama).
-* [Photon Bolt (Paid)](https://www.assetstore.unity3d.com/en/#!/content/41330) - Build networked games without having to know the details of networking or write any complex networking code.
+* [Unity Analytics](https://www.assetstore.unity3d.com/en/#!/content/28120) - Provides a dashboard with metrics to help track active players, sessions, retention, and revenue.
+* [Flurry Unity3D](https://github.com/Majchrzak/Flurry-Unity-3D "") - Flurry iOS and Android plugin for Unity 3D. (Analytics)
+* [Simple Firebase Unity](https://github.com/dkrprasetya/simple-firebase-unity "") - Firebase Realtime-Database's REST API Wrapper for Unity in C#.
+* [Azure Services For Unity](https://github.com/dgkanatsios/AzureServicesForUnity "") - Accessing Azure services (App Service, Table Storage, CosmosDB with Table API, Event Hubs) from a Unity game.
+* [Build & Release Unity Games with Azure DevOps](https://alexknowles.info/unity/build-release-unity-games-with-azure-devops/ "") - Tutorial on how to build Unity games with Azure DevOps.
+* [MapsSDK Unity](https://github.com/Microsoft/MapsSDK-Unity "") - This repository contains samples, documentation, and supporting scripts for Maps SDK, a Microsoft Garage project.
+* [Devtodev] (https://github.com/devtodev-analytics/unity-sdk) - A full-cycle analytics solution for game developers.
+
+## :us: :uk: Internationalization & Localization (I18n & L10n) <a name="internationalization-localization"></a>
+
+* [Language](https://github.com/FarrokhGames/Language "") - An easy-to-use localization solution for Unity3D.
+* [PolyglotUnity](https://github.com/agens-no/PolyglotUnity "") - A Polyglot Localization plugin for Unity3d that translates games to many languages.
+* [GameToolkit Localization](https://github.com/ibrahimpenekli/GameToolkit-Localization "") - Asset localization system for Unity.
+* [Unity_CSV_Localization](https://github.com/xacalite/Unity_CSV_Localization "") - Simple system for using localization values (language translations) from a CSV file in a Unity project.
+* [UnityLocalizationManager](https://github.com/Mukarillo/UnityLocalizationManager "") - Localization system to manage multiple languages including date time, currencies, and other informations that change depending on current language.
+* [Diplomata Unity](https://github.com/lavaleak/diplomata-unity "") - A Unity multi language dialogues content management system and editor extension inspired by Twine, like Fungus and Yarn, but is not node based.
+* [Localization Tool (RTL/LTR)](https://github.com/ertanturan/Unity-Localization "") - An easy-to-use alphabet and language extendible localization solution for Unity3D. Including Left-to-Right and Right-To-Left writing support for different alphabets.
+
+## :satellite: Networking <a name="networking"></a>
+
+### Frameworks
+
+* [SpatialOS GDK for Unity](https://github.com/spatialos/gdk-for-unity) - Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK. (Terms of Service discussion alert!)
+* [Pitaya](https://github.com/topfreegames/pitaya) - Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.
+* [MLAPI](https://github.com/MidLevel/MLAPI) - A game networking framework built for the Unity Engine to abstract game networking concepts.
+* [MLAPI.Relay Documentation](https://github.com/MidLevel/MLAPI.Relay-Documentation) - This is the repository for the MLAPI.Relay, a UNET Relay. This is where documentation and issues can be found and reported.
+* [Barebones Master Server](https://github.com/alvyxaz/barebones-masterserver) - Master Server framework for Unity.
+* [SmartFoxServer 2X](http://docs2x.smartfoxserver.com/ExamplesUnity/introduction) - A comprehensive SDK for rapidly developing multiplayer games and applications with Adobe Flash/Flex/Air, Unity, HTML5, iOS, Windows Phone 8, Android, Java, Windows 8, C++ and more.
+* [Mirror](https://github.com/vis2k/Mirror) - A community replacement for Unity's abandoned UNET Networking System.
+* [Insight](https://github.com/uweenukr/Insight) - Simple message server for Mirror.
+* [Forge Networking Remastered](https://github.com/BeardedManStudios/ForgeNetworkingRemastered) - In short, Forge Networking is a free and open source multiplayer game (multi-user) networking system that has a very good integration with the Unity game engine.
+* [Photon Bolt](https://www.assetstore.unity3d.com/en/#!/content/41330) - Build networked games without having to know the details of networking or write any complex networking code. :moneybag:
 * [Photon Unity Networking](https://www.assetstore.unity3d.com/en/#!/content/1786) - Plug and play cloud networking that also works for local hosting. Free for up to 20 concurrent users.
+* [Xavier](https://github.com/adrenak/Xavier "") - A networking solution for Unity based on Telepathy.
+* [Nakama](https://www.assetstore.unity3d.com/en/#!/content/81338) - Build social and realtime games with an open-source [distributed server](https://github.com/heroiclabs/nakama).
+* [Nakama Unity](https://github.com/heroiclabs/nakama-unity) - Unity client for Nakama server.
+* [Facepunch.Steamworks](https://github.com/Facepunch/Facepunch.Steamworks) - Another fucking C# Steamworks implementation.
+* [Facepunch.Steamworks.Unity](https://github.com/Facepunch/Facepunch.Steamworks.Unity "") - Tests for Facepunch.Steamworks in Unity3D.
+* [SteamNetworking](https://github.com/momower1/SteamNetworking "") - Steamworks for Unity using the Facepunch.Steamworks API.
+* [MagicOnion](https://github.com/Cysharp/MagicOnion "") - Unified Realtime/API Engine for .NET Core and Unity.
+* [Colyseus](http://colyseus.io/) - Multiplayer Game Server for Node.js. [Demo with Unity3D](https://github.com/gamestdio/colyseus-unity3d)
+* [MateriaGame DarkRift2 Tutorial](https://github.com/TheUncas/MateriaGame-DarkRift2-tutorial) - DarkRift2 Tutorial. See [more](https://darkriftnetworking.com/DarkRift2).
+* [EmbeddedFPSExample](https://github.com/LestaAllmaron/EmbeddedFPSExample) - An example on how to create a FPS game with Darkrift 2.
+* [DarkriftSerializationExtensions](https://github.com/LestaAllmaron/DarkriftSerializationExtensions) - A small collection of useful extension methods for Darkrift2.
+* [LiteNetLibManager DarkRift2](https://github.com/insthync/LiteNetLibManager_DarkRift2) - DarkRift2 transport layer for LiteNetLibManager project.
+* [Barebones Masterserver](https://github.com/alvyxaz/barebones-masterserver) - Master Server framework for Unity.
+* [SpeedDate](https://github.com/proepkes/SpeedDate) - SpeedDate Masterserver: Connecting Players.
+* [IonNetworking](https://github.com/andrewsc2001/IonNetworking) - A dedicated server setup for Unity. 
 
-## Scripting
-* [Easy Save 2 (Paid)](https://www.assetstore.unity3d.com/en/#!/content/768) - A fast and simple way to save and load data on all major platforms supported by Unity.
-* [Mad Level Manager (Paid)](https://www.assetstore.unity3d.com/en/#!/content/10070) - Provides a level manager, level selector, and progress save/load tools to make it easy to transition between levels and make level selection screens.
-* [UniStorm (Paid)](https://www.assetstore.unity3d.com/en/#!/content/2714) - A customizable dynamic day and night weather system that creates realistic storms and weather.
+### Libraries
 
-## Services
-* [Unity Analytics](https://www.assetstore.unity3d.com/en/#!/content/28120) - Provides a dashboard with metrics to help track active players, sessions, retention, and revenue.
+* [Best HTTP/2](https://assetstore.unity.com/packages/tools/network/best-http-2-155981 "") - A HTTP/1.1 and HTTP/2 implementation that supports almost all Unity mobile and standalone platforms. :moneybag:
+* [Networker](https://github.com/MarkioE/Networker "") - A simple to use TCP and UDP networking library for .NET. Compatible with Unity.
+* [Hazel Networking](https://github.com/DarkRiftNetworking/Hazel-Networking) - A low level networking library for C# providing connection orientated, message based communication via TCP, UDP and RUDP.
+* [MassiveNet](https://github.com/jakevn/MassiveNet) - Unity3D UDP networking library focused on high-CCU, multi-server architecture.
+* [ENet CSharp](https://github.com/nxrighthere/ENet-CSharp) - Reliable UDP networking library extended for the .NET environment.
+* [ENetListener](https://github.com/LestaAllmaron/ENetListener) - This listener allows you to send UDP and RUDP messages thus changing the SendMode. Reliable to use RUDP instead of TCP which has many advantages over TCP.
+* [SocketIoClientDotNet](https://github.com/Quobject/SocketIoClientDotNet) - Socket.IO Client Library for .NET.
+* [UnitySocketIO](https://github.com/NetEase/UnitySocketIO) - Socket.io client for Unity.
+* [UnityHTTP](https://github.com/andyburke/UnityHTTP) - A TCP client-based HTTP library for Unity.
+* [LiteNetLib](https://github.com/RevenantX/LiteNetLib) - Lite and reliable UDP library for Mono and .NET.
+* [LiteNetLibManager](https://github.com/insthync/LiteNetLibManager) - Higher level implementation for LiteNetLib.
+* [Pomelo Unity Client](https://github.com/NetEase/pomelo-unityclient-socket) - A client for Pomelo distributed game server in Node.js.
+* [HiSocket](https://github.com/hiramtan/HiSocket) - It is a lightweight socket solution, you can used it in Unity3D or C# project.
+* [BenchmarkNet](https://github.com/nxrighthere/BenchmarkNet) - Benchmark for testing the reliable UDP networking solutions.
+* [Unet HLAPI Manager](https://github.com/insthync/unet-hlapi-manager) - The simple network manager based on Unity's NetworkManager without players, scenes stuffs focus on network messages callback handles. Intenly made for multiple server purposes.
+* [Firestorm](https://github.com/5argon/Firestorm) - Makeshift Cloud Firestore C# API that works with Unity via REST API. Contains only basic functions.
+* [Unity Timeline Sync](https://github.com/asus4/unity-timeline-sync) - Synchronize multiple Unity Timeline via UDP.
+* [Chanquo](https://github.com/sassembla/Chanquo) - Golang-channel partial implementation for Unity.
+* [Dissonance](https://github.com/Placeholder-Software/Dissonance) - Unity Voice Chat Asset.
+* [UniP2P](https://github.com/unip2p/UniP2P) - Unity P2P Network Library.
 
-## Shaders
-* [Shader Forge (Paid)](https://www.assetstore.unity3d.com/en/#!/content/14147) - A node-based shader editor giving you the artistic freedom of shader creation, with no need to code.
+### REST
 
-## Textures
+* [RestClient](https://github.com/proyecto26/RestClient) - Simple HTTP and REST client for Unity based on Promises, also supports Callbacks!
+* [RESTClient](https://github.com/Unity3dAzure/RESTClient) - REST Client for Unity with JSON and XML parsing. (Features JSON helper to handle nested arrays and deserializing abstract types).
+* [Restifizer Unity3D](https://github.com/vedi/restifizer-unity3d) - Restifizer SDK for Unity3d. A way to significantly simplify creation of full-functional RESTful services, using MongoDB as a database.
+* [UnityOpenApi](https://github.com/kolodi/UnityOpenApi) - Unity friendly RESTful API client generator.
 
-* [8 Free Substances (Free)](https://www.assetstore.unity3d.com/en/#!/content/7940) - 8 configurable procedural textures.
+### Web Sockets
 
-## Tweening
+* [UnityWebSocket](https://github.com/Unity3dAzure/UnityWebSocket) - Web Socket client for Unity.
+* [Websocket Sharp](https://github.com/sta/websocket-sharp) - A C# implementation of the WebSocket protocol client and server.
 
-* [DOTween](https://www.assetstore.unity3d.com/en/#!/content/27676) - Tween any numeric property or field (including Vectors, Rectangles, etc.), plus some non-numeric ones (like strings). This is the follow-up to HOTween.
-* [GoKit](https://github.com/prime31/GoKit) - An open source, lightweight tween library aimed at making tweening objects dead simple.
-* [iTween](https://www.assetstore.unity3d.com/en/#!/content/84) - A simple, and easy to use animation system.
-* [LeanTween](https://www.assetstore.unity3d.com/en/#!/content/3595) - FOSS, and also the most lightweight tweening library for Unity. Allows you to tween any value you have access to via the .value() method.
+### WebRTC
+
+* [AirPeer](https://github.com/adrenak/AirPeer) - A WebRTC based networking plugin for Unity.
+* [WebRTC Unity Plugin](https://github.com/bengreenier/webrtc-unity-plugin) - Cross-platform Webrtc support for Unity apps. (#PLUGINS)
+* [P2P.NET](https://github.com/Phylliida/P2P.NET) - (Formerly UnityP2P) Peer to peer networking in Unity using WebRTC and a free Heroku server for signaling.
+
+### JWT
+
+* [JWT for Unity](https://github.com/monry/JWT-for-Unity) - JWT (JSON Web Token) implementation for .NET 3.5+ (Public Domain).
+
+### VoIP
+
+* [UniVoice](https://github.com/adrenak/UniVoice) - P2P VoIP in Unity.
+* [uNetVoice](https://github.com/hecomi/uNetVoice) - Tiny voice chat implementation for Unity. 
+
+### Examples
+
+* [Unity Multiplayer Packages](https://github.com/Unity-Technologies/multiplayer) - Unity multiplayer packages and samples. ![Official](UnityResource16x16.png)
+* [Basic Multiplayer Unity](https://github.com/manlaig/basic_multiplayer_unity) - Fast-Paced UDP Client-Server implementation.
+* [Gambetta_Networked Demo](https://github.com/RamiAhmed/Gambetta_NetworkedDemo) - Fast-Paced Multiplayer: Sample Code and Live Demo - Gabriel Gambetta's Multiplayer Network Demo in Unity C# as Networked using Lidgren Network.
+* [UnityUnetMovement](https://github.com/GenaSG/UnityUnetMovement) - This repository contains Unity3D UNET based server-authoritative movement script with client-side prediction and reconciliation.
+* [Unity UNET Authoritative Networking](https://github.com/atrakeur/unity-unet-authoritative-networking) - A simple implementation of authoritative movement on top of UNET. (#DEPRECATED)
+* [NATPunchthroughClient](https://github.com/noblewhale/NATPunchthroughClient) - An example implementation of NAT Punchthrough combined with Unity's UNet HLAPI.
+* [Unity Physics CSP](https://github.com/spectre1989/unity_physics_csp) - Basic implementation of client-side prediction in Unity, so real networking happens, all network traffic is simulated in a single Unity instance.
+* [uTextureSendReceive](https://github.com/BarakChamo/uTextureSendReceive) - Unity network texture sender and receiver for video and frame streaming.
+* [UnityReplaySystem](https://github.com/IronWarrior/UnityReplaySystem) - Project demonstrating how to use input logging to create a replay system, where the replay is viewed by replaying the inputs with a deterministic fixed timestep.
+* [CppUnityTCPClientServer](https://github.com/Willtl/CppUnityTCPClientServer) - Test project Unity client, C++ (with boost) server (TCP).
+* [Local Multiplayer UI](https://github.com/lejean/Local-multiplayer-UI) - A unity project made for navigating the UI for a local multiplayer game. Contains a custom input module made for 4 controllers using X_input/direct input.
+
+## :pencil2: Scripting <a name="scripting"></a>
+
+### :chart_with_upwards_trend: Algorithms <a name="algorithms"></a>
+
+* [Unity Teddy](https://github.com/mattatz/unity-teddy "") - Teddy algorithm implementation in Unity.
+* [Hull Delaunay Voronoi](https://github.com/Scrawk/Hull-Delaunay-Voronoi "") - Hull, Delaunay and Voronoi algorithms in Unity.
+* [csDelaunayUnity](https://github.com/nothke/csDelaunayUnity "") - GC free (non alloc) voronoi diagram for Unity.
+* [LinHowe GameAlgorithm](https://github.com/IceLanguage/LinHowe_GameAlgorithm "") - Based on Unity to simply implement algorithms commonly used in game program development.
+* [LinHowe GameAlgorithm](https://github.com/jesta88/Unity-Voronoi "") - Port of [Javascript Voronoi](https://github.com/gorhill/Javascript-Voronoi) by Raymond Hill to Unity. Also, an attempt at dynamic mesh fractures.
+* [Unity Metaballs 2D](https://github.com/luke161/Unity-Metaballs-2D "") - Implementation of 2D Metaballs with marching squares in Unity. (#2D)
+* [Metaball Sample](https://github.com/Butadiene/Metaball-sample "") - Metaball sample.
+* [Catmull Rom Splines](https://github.com/JPBotelho/Catmull-Rom-Splines "") - Catmull-Rom spline implementation in Unity.
+* [Marching Cubes On The GPU](https://github.com/Scrawk/Marching-Cubes-On-The-GPU "") - A implementation of the marching cubes algorithm on the GPU in Unity.
+* [PathFindingStudy](https://github.com/gucheng0712/PathFindingStudy "") - A study of different Graph Search(Pathfinding) techniques in unity, includes: Breadth-First Search, Dijkstra Search, Greedy-Best-Frist Search, A*. (#AI)
+* [Advanced Algorithms](https://github.com/justcoding121/Advanced-Algorithms "") - 100+ algorithms & data structures generically implemented in C#.
+* [Unity Delaunay](https://github.com/OskarSigvardsson/unity-delaunay) - A Delaunay/Voronoi library for Unity, and a simple destruction effect. (#LIBRARIES)
+* [UnityOctree](https://github.com/Unity-Technologies/UnityOctree) - A dynamic, loose octree implementation for Unity written in C#. ![Official](UnityResource16x16.png)
+* [UnityOctree](https://github.com/Nition/UnityOctree) - Same as the previous resource.
+* [ECS Octree](https://github.com/Antypodish/ECS-Octree "") - ECS based octree.
+* [DynamicObjectTracking](https://github.com/phatboysh/DynamicObjectTracking "") - A multithreaded implementation of Nition's Octree for Unity allowing for discriminatory object tracking with large numbers of moving objects.
+* [Ring Buffer](https://bitbucket.org/sirgru/ring_buffer) - This is a very simple implementation of a RingBuffer<T>, without any excessive API and without thread safety. It presumes usage of value-type elements.
+* [CellularGrowth](https://github.com/mattatz/CellularGrowth "") - GPU-based cellular growth simulation in Unity.
+* [Unity Line Segments Intersection](https://github.com/setchi/Unity-LineSegmentsIntersection "") - Line segments intersection for Unity.
+* [Boids](https://github.com/Chris-Kirkham/boids "") - An implementation of the Boids algorithm (Reynolds, C. W. (1987) Flocks, Herds, and Schools: A Distributed Behavioral Model) for Unity.
+* [IK Solvers](https://github.com/NoxWings/IK-Solvers "") - Basic IK Experiments.
+* [SimpleIKSolver](https://github.com/Unity-Technologies/SimpleIKSolver "") ![Official](UnityResource16x16.png)
+* [CCD](https://github.com/akanarika/CCD "") - CCD Inverse Kinematics Implemented by Unity3D.
+* [Dithering Unity3D](https://github.com/mcraiha/Dithering-Unity3d "") - Dithering algorithms for Unity3D.
+
+### Attributes <a name="attributes"></a>
+
+* [NaughtyAttributes](https://github.com/dbrizov/NaughtyAttributes) - Attribute Extensions for Unity.
+* [Unity3D ComponentAttribute](https://github.com/Thundernerd/Unity3D-ComponentAttribute) - An attribute that let's you auto-load components.
+* [AssetPathAttribute](https://github.com/ByronMayne/AssetPathAttribute "") - AssetPathAttribute is a Unity attribute used in Unity to allow you to have drag and drop asset references in the inspector but really use string paths for serialization.
+* [Unity3D-ExecutionOrderAttribute](https://github.com/Thundernerd/Unity3D-ExecutionOrderAttribute "") - An attribute that sets a script's execution order.
+* [Unity Built In Attributes](https://github.com/teebarjunk/Unity-Built-In-Attributes "") - A list of built in Unity Attributes.
+* [SerializedParameter_Unity](https://github.com/tsubaki/SerializedParameter_Unity) - Persist data between play mode sessions attribute.
+* [UnityGetComponentAutoInjector](https://github.com/jinnin0105/UnityGetComponentAutoInjector) - Unity GetComponent Auto Injector.
+* [UnityNonNull](https://github.com/ulrikdamm/UnityNonNull) - [NonNull] attribute to fields and classes in Unity.
+* [UnityCompactFieldAttribute](https://github.com/AnomalousUnderdog/UnityCompactFieldAttribute) - Lets each property label have their own width, to prevent the labels from getting cut off.
+* [SetProperty](https://github.com/gucheng0712/SetProperty) - A PropertyAttribute/PropertyDrawer combination that allows for properties in Unity.
+
+### Frameworks <a name="frameworks"></a>
+
+#### Entity-Component System
+
+* [Entitas (Official)](https://github.com/sschmid/Entitas-CSharp "") - Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity.
+* [BovineLabs Entities](https://github.com/tertle/com.bovinelabs.entities "") - A collection of extensions, systems and jobs for Unity ECS.
+* [Entitas Lite](https://github.com/rocwood/Entitas-Lite "") - Entitas-Lite is a No-CodeGenerator branch of Entitas, and also a fast & easy ECS framework for C#/Unity. 
+* [ECS Unity](https://github.com/dimmpixeye/ecs.unity "") - The Entity Component System framework for Unity. Ease the pain of decoupling data from behaviors.
+* [Entitas](https://github.com/Leopotam/ecs "") - C# Entity Component System with optional integration to Unity game engine.
+* [Svelto.ECS](https://github.com/sebas77/Svelto.ECS "") - C# Lightweight Data Oriented Entity Component System Framework. See legacy attemps [here](https://github.com/sebas77/-Obsolete-Lightweight-IoC-Container-for-Unity3D) and [here](https://github.com/sebas77/-Deprecated-Svelto.IoC). Also [Svelto.SignalChain](https://github.com/sebas77/Svelto.SignalChain). Also has a [debugger](https://github.com/YashikMoloka/Svelto.ECS.Debugger).
+* [NanoECS](https://github.com/SinyavtsevIlya/NanoECS "") - C#-Unity ECS framework.
+* [ECSTest](https://github.com/keijiro/ECSTest "") - Some small tests for Unity ECS.
+* [URSA](https://github.com/pointcache/URSA "") - Integrated ECS framework for Unity.
+* [JECSu](https://github.com/pointcache/JECSu "") - Just another ECS for unity.
+* [ECS](https://github.com/adizhavo/ECS "") - An entity component system framework that uses generics to achieve composition without having the need to write new code in the entity class.
+* [ECS and DoD In Unity](https://github.com/LifeIsGoodMI/ECS-And-DoD-In-Unity "") - Entity Component Systems & Data Oriented Design In Unity.
+* [ECS FAQ](https://github.com/SanderMertens/ecs-faq "") - Frequently asked questions about ECS.
+
+#### Inversion of Control (IOC)
 
-## UI
+* [StrangeIoC](http://strangeioc.github.io/strangeioc/) - Strange is a super-lightweight and highly extensible Inversion-of-Control (IoC) framework, written specifically for C# and Unity.
+* [Zenject](https://github.com/svermeulen/Zenject "") - Dependency Injection Framework for Unity3D. Other fork can be found [here](https://github.com/modesttree/Zenject).
+* [OpenFramework](https://github.com/omid3098/OpenFramework) - A Lightweight framework for unity with dependency injection.
+* [Unity Container](https://github.com/unitycontainer/unity) - A full featured, extensible dependency injection container.
+* [Adic](https://github.com/intentor/adic) - Lightweight dependency injection container for Unity.
+
+#### Reactive
+
+* [UniRx (Reactive Extensions for Unity)](https://github.com/neuecc/UniRx "") - A reimplementation of the .NET Reactive Extensions. Rx cures the "asynchronous blues" without async/await.
+* [UniRx.Async UPM)](https://github.com/5argon/UniRx.Async-UPM "") - neuecc's UniRx.Async UPM pullable version.
+* [ECSRx](https://github.com/EcsRx/ecsrx) - A reactive take on the ECS pattern for .NET game developers.
+* [ECSRx.unity](https://github.com/EcsRx/ecsrx.unity) - A simple framework for unity using the ECS paradigm but with UniRx for fully reactive systems.
+
+#### MVVM
+
+* [uMVVM](https://github.com/MEyes/uMVVM) - A simple Unity MVVM framework.
+* [Unity3D Foundation](https://github.com/NVentimiglia/Unity3d-Foundation) - Unity3d Databinding, MVVM, Tasks, Localization. (#DEPRECATED). See Foundation Light.
+* [Foundation Light](https://github.com/NVentimiglia/Foundation-Light) - Light Weight Architecture Library.
+* [uFrame Complete](https://github.com/uFrame/uFrame.Complete) - All in one repo, includes: Kernel, Designer, Architect, MVVM, ECS. See more [here](https://github.com/uFrame).
+* [Loxodon Framework](https://github.com/cocowolf/loxodon-framework) - Unity3D MVVM Loxodon Framework Databinding Localization UGUI.
+
+#### Clean Architecture
+
+* [CAFU Core](https://github.com/umm/cafu_core) - Clean Architecture For Unity. See [sample](https://github.com/monry/cafu_sample).
+
+#### Others
+
+* [QFramework](https://github.com/liangxiegame/QFramework "") - Your first K.I.S.S Unity 3D Framework.
+* [SmartData](https://github.com/sigtrapgames/SmartData) - A designer-friendly, editor-driven Unity3D framework for connecting data and events. 
+* [Fungus](https://github.com/snozbot/fungus) - An easy to use Unity 3D library for creating illustrated Interactive Fiction games.
+* [GameFramework](https://github.com/EllanJiang/GameFramework) - This is literally a game framework, based on Unity game engine. It encapsulates commonly used game modules during development, and, to a large degree, standardises the process, enhances the development speed and ensures the product quality. 
+* [GameFramework](https://github.com/FlipWebApps/GameFramework) - A free framework for Unity that will help drastically increase the development speed and feature set of your games.
+* [UnityGameFramework Template](https://github.com/HolicXXX/UnityGameFramework-Template) - A common Unity template Project base on UnityGameFramework.
+* [Autoya](https://github.com/sassembla/Autoya) - Thin framework for Unity.
+* [Unity Framework](https://github.com/cleavetv/unity-framework) - An application framework for C# Unity3D game projects.
+* [uFrame](https://www.assetstore.unity3d.com/en/#!/content/14381) - Create maintainable games faster, better, more stable, and consistent than ever before. :moneybag:
+* [CatLib](https://github.com/CatLib/Framework) - CatLib Component-Based Framework.
+* [Unidux](https://github.com/mattak/Unidux) - Redux Architecture for Unity.
+* [Imperial Studio Libraries](https://github.com/Trojaner/ImperialStudio-Libraries) - Contains a modern framework for game projects.
+* [Actors Unity3d Framework](https://github.com/dimmpixeye/Actors-Unity3d-Framework) - Ease the pain of decoupling data from behaviors in Unity.
+* [UXF](https://github.com/immersivecognition/unity-experiment-framework) - Framework for human behaviour experiments in Unity.
+* [Weaver](https://github.com/ByronMayne/Weaver) - Weaver is a code weaving framework built right into Unity Engine. Based heavily off of Fody.
+* [MOBA_CSharp_Unity](https://github.com/yasgamesdev/MOBA_CSharp_Unity) - Framework for MOBA games. The server does not depend on Unity. Run on Linux.
+* [EasyMOBA](https://github.com/nidaynere/easymoba) - MOBA game template for Unity.
+* [RPGCore](https://github.com/Fydar/RPGCore) - RPGCore is a framework for producing RPG games and mechanics in Unity.
+* [UniversalUnityHooks](https://github.com/UserR00T/UniversalUnityHooks) - A framework designed to hook into and modify methods in unity games via dlls.
+* [ScriptableObject Architecture](https://github.com/DanielEverland/ScriptableObject-Architecture) - Makes using Scriptable Objects as a fundamental part of your architecture in Unity super easy. (#PATTERNS)
+* [UDBase](https://github.com/KonH/UDBase) - Module-based game template for Unity. Modules in UDBase are called Controllers, their implementation can be replaced without changing your project source code.
+* [Voxelmetric](https://github.com/richardbiely/Voxelmetric) - An efficient voxel framework for Unity3D. Legacy code is [here](https://github.com/Voxelmetric/Voxelmetric1).
+* [ColaFrameWork](https://github.com/XINCGer/ColaFrameWork)
+* [Lockstep Framework](https://github.com/SnpM/LockstepFramework) - A framework designed for games that need lockstep simulations. It includes a deterministic 2D physics engine, pathfinding, behavior system, and more. LSF is integrated with Unity.
+* [Akka.Unity.Sample](https://github.com/Arkatufus/Akka.Unity.Sample) - Akka.Net 1.3.0 Running in Unity3D.
+* [SpacePuppy Unity Framework 3.0](https://github.com/lordofduct/spacepuppy-unity-framework-3.0) - A framework of various tools to facilitate making games in Unity 2017.
+
+### :straight_ruler: Patterns <a name="patterns"></a>
+
+* [Unity Design Patterns](https://github.com/QianMo/Unity-Design-Pattern "") - All Gang of Four Design Patterns written in Unity C# with many examples. And some Game Programming Patterns written in Unity C#.
+* [unity-design-patterns](https://github.com/Naphier/unity-design-patterns "") - Examples of programming design patterns in Unity C#.
+* [Disruptor Unity3D](https://github.com/dave-hillier/disruptor-unity3d "") - Basic implementation of Disruptor for Unity3d.
+* [Unity Singleton](https://github.com/BharathVishal/Unity-Singleton "") - A sample project explaining the usage of singleton object to hold global game state.
+* [yaSingleton](https://github.com/jedybg/yaSingleton) - A singleton pattern implementation for Unity3d. Based on ScriptableObjects instead of the conventional MonoBehaviour approach.
+* [UnitySingleton](https://github.com/UnityCommunity/UnitySingleton) - The best way to implement singleton pattern in Unity.
+* [Factory](https://github.com/Real-Serious-Games/Factory) - Factory for object creation and dependency injection. Works with normal C# apps or under Unity3D.
+* [Design Patterns in Unity Example](https://github.com/marwie/Design-Patterns-in-Unity-Example) - Most of Derek Banas Video Tutorial Series on Design Patterns to C# in Unity translated.
+* [Signals](https://github.com/UnityPatterns/Signals) - A simple, easy to implement, editor-driven signal/event system for Unity. See  author's [repositories](https://github.com/UnityPatterns).
+* [Message Bus Pattern](https://github.com/franciscotufro/message-bus-pattern) - A Unity pattern to avoid object coupling.
+* [Unity Game Programming Patterns](https://github.com/TarasOsiris/unity-game-programming-patterns) - Game Programming Pattern Examples in Unity3D.
+* [Unity Singleton MonoBehavior](https://github.com/kleber-swf/Unity-Singleton-MonoBehaviour) - An implementation of Singleton pattern for Unity MonoBehaviours.
+* [Prototype](https://github.com/inkle/prototype) - Prototype component pattern for Unity.
+
+### Pooling Systems <a name="pooling"></a>
+
+* [Unity QuickPool](https://github.com/densylkin/QuickPool) - Simple pooling toolkit for Unity game engine.
+* [RecyclerKit](https://github.com/prime31/RecyclerKit) - Object pool manager for Unity.
+* [ObjectPool](https://github.com/UnityPatterns/ObjectPool) - Instead of creating and destroying new objects all the time, this script reduces garbage by pooling instances, allowing you to seemingly create hundreds of new objects while only actually using a recycled few.
+* [Unity Object Pool](https://github.com/thefuntastic/unity-object-pool) - An elegant object pool and manager implementation for Unity.
+* [UnityPooling](https://github.com/Mukarillo/UnityPooling) - An optimized approach object pooling.
+* [Unity3D Prefab Pool](https://github.com/TarasOsiris/unity3d-prefab-pool) - Simple Prefab Pool for Unity3D.
+* [Starfall Pool Manager](https://github.com/starfallproduction/starfall-pool-manager) - Gameobject pool manager that Starfall Production use while making game.
+* [UnityObjectPooler](https://github.com/imxzjv/UnityObjectPooler) - Simple object pool for Unity.
+* [QuickPool](https://github.com/densylkin/QuickPool) - Simple pooling toolkit for Unity game engine.
+* [Unity Pooler](https://github.com/GalvanicGames/unity-pooler) - Object pooler for GameObjects and regular C# classes.
+* [Runtime-Extendible Object Pooler Unity](https://github.com/ertanturan/Unity-Object-Pooling) - Runtime-Extendible object pooler for gameobjects .
+* [Lean Pool](https://assetstore.unity.com/packages/tools/utilities/lean-pool-35666) - Free lightweight asset manages prefab spawning, despawning, recycling, and much more! 
+
+
+### Serialization <a name="serialization"></a>
+
+* [JsonUtility](https://docs.unity3d.com/ScriptReference/JsonUtility.html "") - Utility functions for working with JSON data.
+* [JSON.NET for Unity3D](https://github.com/SaladLab/Json.Net.Unity3D "") - Forked Newtonsoft.Json to support Unity3D.
+* [ZeroFormatter](https://github.com/neuecc/ZeroFormatter "") - Fastest C# Serializer and Infinitely Fast Deserializer for .NET, .NET Core and Unity.
+* [UTF8Json](https://github.com/neuecc/Utf8Json "") - Definitely Fastest and Zero Allocation JSON Serializer for C#(NET, .NET Core, Unity, Xamarin)
+* [FullSerializer](https://github.com/jacobdufault/fullserializer "") - A robust JSON serialization framework that just works with support for all major Unity export platforms.
+* [Odin Serializer](https://github.com/TeamSirenix/odin-serializer "") - Fast, robust, powerful and extendible .NET serializer built for Unity.
+* [Msgpack Sharp](https://github.com/scopely/msgpack-sharp) - A lightweight, high performance MessagePack framework for the CLR that works in constrained environments like AOT under Unity and Xamarin.
+* [Msgpack Unity3D](https://github.com/deniszykov/msgpack-unity3d) - MessagePack and JSON serializer for Unity3D.
+* [Msgpack CLI](https://github.com/msgpack/msgpack-cli) - MessagePack implementation for Common Language Infrastructure.
+* [MessagePack CSharp](https://github.com/neuecc/MessagePack-CSharp) - Extremely Fast MessagePack Serializer for C#(.NET, .NET Core, Unity, Xamarin).
+* [MessagePackGridView](https://github.com/E-K/MessagePackGridView) - MessagePack Data Viewer built on MessagePack Csharp and Unity TreeView.
+* [Protobuf3 for Unity](https://github.com/bitcraftCoLtd/protobuf3-for-unity) - Google Protocol Buffers runtime library version 3 for Unity (targeting .NET 3.5).
+* [Protobuf net](https://github.com/mgravell/protobuf-net) - Protocol Buffers library for idiomatic .NET.
+* [Sproto Csharp](https://github.com/lvzixun/sproto-Csharp) - A pure C# implementation of sproto.
+* [Sproto Unity](https://github.com/m2q1n9/sproto-Unity) - A demo show how to use sproto-Csharp in Unity.
+* [Unity Serializer NG](https://github.com/TheSniperFan/unityserializer-ng) - Resurrection of the discontinued Unity Serializer by Mike Talbot from WhyDoIDoIt.com (Unity 5).
+* [OpenFile](https://github.com/mrzapp/openfile) - Open source serialization for Unity.
+* [Protobuf Unity](https://github.com/5argon/protobuf-unity "") - Automatic .proto files compilation in Unity project to C# as you edit them.
+* [JSONObject](https://github.com/mtschoen/JSONObject) - The JSONObject class/library for Unity.
+* [TinyJSON](https://github.com/pbhogan/TinyJSON) - TinyJSON is a simple JSON library for C# that strives for ease of use.
+* [JSONFX for Unity3D](https://bitbucket.org/TowerOfBricks/jsonfx-for-unity3d)
+* [BitpackingTools](https://github.com/emotitron/BitpackingTools) - Bitpacking/serialization libraries used interally for Unity Store NetworkSyncTransform and TransformCrusher Assets.
+* [Knight Windjson](https://github.com/winddyhe/knight-windjson) - A Json Parser used in Unity3D engine.
+* [Unity Interface Reference](https://github.com/Cippman/Unity-InterfaceReference) - A serializable class that holds the reference to an interface.
+
+### Logging <a name="logging"></a>
+
+* [UberLogger](https://github.com/bbbscarter/UberLogger "") - Replacement logging framework for Unity, with a new editor and in-game console.
+* [Common.Logging.Unity3D](https://github.com/SaladLab/Common.Logging.Unity3D "") - Common Logging (A portable logging abstraction for .NET) for Unity3D.
+* [NLog Unity3D](https://github.com/AqlaSolutions/NLog-Unity3D "") - Advanced .NET and Silverlight Logging.
+* [log4net.unity](https://github.com/HolyShovelSoft/log4net.unity) - Some log4net helper classes and UnityEngine.Debug appender for Unity.
+* [Consolation](https://github.com/mminer/consolation) - In-game debug console that displays output from 'Debug.Log'.
+* [Command Terminal](https://github.com/stillwwater/command_terminal) - Unity Command Terminal: In-Game Console.
+* [Lunar Unity Console](https://github.com/SpaceMadness/lunar-unity-console "") - High-performance Unity iOS/Android logger built with native platform UI.
+* [SDConsole](https://github.com/gabrielevierti/SDConsole) - An in-game developer console for Unity.
+* [UnityConsole](https://github.com/Wenzil/UnityConsole "") - Easy-to-use developer console for Unity 5.
+* [UnityIngameDebugConsole](https://github.com/yasirkula/UnityIngameDebugConsole "") - A uGUI based console to see debug messages and execute commands during gameplay in Unity.
+* [Unity3D Console](https://github.com/mikelovesrobots/unity3d-console "") - Quake-style console plugin for Unity3d.
+* [UnityREPL](https://github.com/MrJoy/UnityREPL "") - C# REPL tool for Unity3D built on Miguel's tool.
+* [Command Terminal](https://github.com/stillwwater/command_terminal) - Unity Command Terminal: In-Game Console.
+* [Net Peeweek Console](https://github.com/peeweek/net.peeweek.console) - An interactive runtime console for unity available as package.
+* [CUDLR](https://github.com/proletariatgames/CUDLR) - Console for Unity Debugging and Logging Remotely. (#DEPRECATED)
+* [TTConsole](https://github.com/chiuan/TTConsole) - The Best Debuger & Runtime Console For Unity3D.
+* [Unity File Debug](https://github.com/Sacred-Seed-Studio/Unity-File-Debug) - Enhanced debug logging for Unity, with JSON/CSV export and HTML viewer.
+* [Unity Logs Viewer](https://github.com/aliessmael/Unity-Logs-Viewer) - Using this tool you can easily check your editor console logs inside the game itself! No need to go back to the project and do any tests to track the problems!
+
+### Error Reporting  <a name="error-reporting"></a>
+
+* [Bugsnag Unity](https://github.com/bugsnag/bugsnag-unity "") - Automatic error reporting for Unity games.
+* [Instabug](https://instabug.com/platforms/unity "") - Bug Reporting and In-App Chat for Unity Games. See [more](https://docs.instabug.com/docs/unity-integration-android).
+
+### Debugging  <a name="debugging"></a>
+
+* [Graphy](https://github.com/Tayx94/graphy "") - The ultimate, easy to use, feature packed FPS counter, stats monitor and debugger for your Unity project.
+* [kPortals](https://github.com/Kink3d/kPortals "") - A pre-calculated Portal visibility system for Unity.
+* [UnityHeapDump](https://github.com/Zuntatos/UnityHeapDump "") - Tool to dump memory to text files for inspection.
+* [RuntimeUnityEditor](https://github.com/ManlyMarco/RuntimeUnityEditor) - In-game inspector and debugging tools for applications made with Unity3D game engine.
+* [Unity RuntimeCodeExecuter](https://github.com/flamacore/Unity-RuntimeCodeExecuter) - A simple program that uses NET 2.0 library to execute any code in runtime. Specifically oriented for usage in Unity.
+* [HiLog Unity](https://github.com/hiramtan/HiLog_unity "") - HiDebug, the extensions of Unity's debug plugin.
+* [UnitySystemVisualizer](https://github.com/5argon/UnitySystemVisualizer "") - Unity ECS's system visualizer.
+* [Unity3D Runtime Debug Draw](https://github.com/jagt/unity3d-runtime-debug-draw "") - Single file debuging DrawLine/DrawText/etc that works in both Scene/Game view, also works in built PC/mobile builds.
+* [REX Diagnostics](https://github.com/thorgeirk11/REX-Diagnostics "") - Unity extension that enables expression evaluation at runtime to facilitate testing and debugging.
+* [upm.MemoryInfoPlugin-for-Unity](https://github.com/hiyorin/upm.MemoryInfoPlugin-for-Unity "") - A set of tools for Unity to allow handling memory info for Android and iOS.
+* [com.bovinelabs.analyzers](https://github.com/tertle/com.bovinelabs.analyzers "") - Package to add Roslyn Analyzers to Unity projects.
+* [UnityDebugDrawer](https://github.com/imxzjv/UnityDebugDrawer "") - Draw debug handles and other GUI elements in the scene view from anywhere in your code base.
+* [UnityDebugAutoRemove](https://github.com/flamacore/UnityDebugAutoRemove "") - Auto remove debug.log lines with this simple replacer unless it's a development build.
+* [CODA](https://github.com/kcers/coda "") - Burst Compiler Static Code Analysis.
+* [DebugPlus](https://github.com/benoit-dumas/DebugPlus "") - Unity asset to draw all built-in gizmos in the Unity Debug way.
+* [Apkd.UnityDemystifier](https://github.com/apkd/Apkd.UnityDemystifier "") - Improved stack trace display for Unity.
+* [UnityGendarmerie](https://github.com/maluoi/UnityGendarmerie "") - Simple hooks for using [Gendarme](https://github.com/spouliot/gendarme) from inside the Unity editor.
+* [Uni Debug Menu](https://github.com/baba-s/uni-debug-menu "") - Customizable debug menu for games.
+
+### Coroutines / Threading  <a name="coroutines-threading"></a>
+
+* [CoroutineChain](https://github.com/geniikw/CoroutineChain) - Unity3D, Coroutine, scripting.
+* [Unity Routines](https://github.com/tomblind/unity-routines) - Replacement for Unity coroutines that supports hierarchical routines and pooling.
+* [UnityAsyncRoutines](https://github.com/TorVestergaard/UnityAsyncRoutines) - An extremely lightweight Unity library for creating and managing asynchronous coroutines for easy, straight-forward multi-threading and parallellism.
+* [UnityMainThreadDispatcher](https://github.com/PimDeWitte/UnityMainThreadDispatcher) - A simple, thread-safe way of executing actions (Such as UI manipulations) on the Unity Main Thread.
+* [UnityMainThreadDispatcher](https://github.com/ashikns/UnityMainThreadDispatcher) - Fork of previous UnityMainThreadDispatcher.
+* [Asyncoroutine](https://github.com/zsaladin/Asyncoroutine "") - Asyncoroutine is a unity asset that allows you to use Coroutine and async/await together.
+* [TeaTime](https://github.com/alvivar/TeaTime "") -  A fast & simple queue for timed callbacks, focused on solving common coroutines patterns in Unity games.
+* [OneShotCoroutine](https://github.com/Cippman/Unity-OneShotCoroutine "") -  A plug 'n' play solution to run coroutines of inactive gameObjects.
 
-* [NGUI (Paid)](https://www.assetstore.unity3d.com/en/#!/content/2413) - A powerful UI system and event notification framework.
-* [TextMesh Pro](https://www.assetstore.unity3d.com/en/#!/content/84126) - A alternative to render text in uGUI by using the distance field technique, which allows crisp fonts at any scale. This was recently purchased by Unity and will be integrated into the engine in the future.
+### :orange_book: Libraries <a name="libraries"></a>
 
-## Utilities
+* [Awesome Dotnet](https://github.com/quozd/awesome-dotnet) - Awesome list for .NET related resources. :cool:
+* [NativeCollections](https://github.com/jacksondunstan/NativeCollections "") - Native Collection Types for Unity.
+* [Unity Native Array](https://github.com/keijiro/unity-native-array "") - Passing C# array to a native plug-in.
+* [C# Sharp Promise](https://github.com/Real-Serious-Games/C-Sharp-Promise) - Promises library for C# for management of asynchronous operations.
+* [Unity Resource Checker](https://github.com/handcircus/Unity-Resource-Checker) - Editor utility for unity to help check resources in the current scene (including active textures, their sizes, materials, meshes and which objects are using them).
+* [UnityNativeScripting](https://github.com/jacksondunstan/UnityNativeScripting) - Unity Scripting in C++.
+* [Unity Mathematics](https://github.com/Unity-Technologies/Unity.Mathematics "") - A prototype of a C# math library providing vector types and math functions with a shader like syntax. ![Official](UnityResource16x16.png)
+* [Vector3D](https://github.com/sldsmkd/vector3d "") - Double precision Vector Libraries for Unity3D.
+* [3DMath](https://github.com/GregLukosek/3DMath "") - Unity C# 3D Math methods library.
+* [LINQ to GameObject for Unity](https://github.com/neuecc/LINQ-to-GameObject-for-Unity) - Traverse GameObject Hierarchy by LINQ.
+* [Unity3D Async Await Util](https://github.com/svermeulen/Unity3dAsyncAwaitUtil) - A bunch of code to make using async-await easier in Unity3D.
+* [UnityComponent](https://github.com/GameBuildingBlocks/UnityComponent) - Unity Resource Component.
+* [Unity.Library.eppz](https://github.com/eppz/Unity.Library.eppz) - Collection of libraries for Unity.
+* [UnityBezierSolution](https://github.com/yasirkula/UnityBezierSolution) - A bezier spline solution for Unity 3D with some utility functions (like travelling the spline with constant speed/time).
+* [UnityEngineAnalyzer](https://github.com/vad710/UnityEngineAnalyzer) - Roslyn Analyzer for Unity3D.
+* [UnityTimer](https://github.com/akbiggs/UnityTimer) - Powerful and convenient library for running actions after a delay in Unity3D.
+* [UniGif](https://github.com/WestHillApps/UniGif) - GIF image decoder for Unity.
+* [UnityMeshSimplifier](https://github.com/Whinarn/UnityMeshSimplifier) - Mesh simplification for Unity.
+* [UnityMeshSimplifier](https://github.com/Unity-Technologies/UnityMeshSimplifier) - Mesh simplification for Unity. ![Official](UnityResource16x16.png)
+* [EzySlice](https://github.com/DavidArayan/EzySlice) - An open source mesh slicer framework for Unity3D Game Engine. Written in C#.
+* [MeshDecimator](https://github.com/Whinarn/MeshDecimator) - A mesh decimation library for .NET and Unity.
+* [CosineGradient](https://github.com/keijiro/CosineGradient) - Cosine gradient generator for Unity.
+* [PerfAssist](https://github.com/GameBuildingBlocks/PerfAssist) - Various performance-related components for Unity development.
+* [A Terrible Kingdom](https://github.com/UnityTechnologies/ATerribleKingdom) - Scripting the Timeline for games in creative ways. 
+* [Wave Function Collapse](https://github.com/mxgmn/WaveFunctionCollapse) - Bitmap & tilemap generation from a single example with the help of ideas from quantum mechanics.
+* [Unity Wave Function Collapse](https://github.com/selfsame/unity-wave-function-collapse) - Fork of WaveFunctionCollapse.
+* [Fluent State Machine](https://github.com/Real-Serious-Games/Fluent-State-Machine) - Fluent API for creating state machines in C#.
+* [Easy Save 2](https://www.assetstore.unity3d.com/en/#!/content/768) - A fast and simple way to save and load data on all major platforms supported by Unity. :moneybag:
+* [Mad Level Manager](https://www.assetstore.unity3d.com/en/#!/content/10070) - Provides a level manager, level selector, and progress save/load tools to make it easy to transition between levels and make level selection screens. :moneybag:
+* [UniStorm](https://www.assetstore.unity3d.com/en/#!/content/2714) - A customizable dynamic day and night weather system that creates realistic storms and weather. :moneybag:
+* [GreenMambaStealth](https://github.com/DameonL/GreenMambaStealth) - An advanced stealth system for Unity that detects how well-lit a character is, allowing characters to hide in dynamic shadows.
+* [Pedometer API](https://github.com/olokobayusuf/Pedometer-API) - Pedometer is a native pedometer API for Unity Engine.
+* [Signals](https://github.com/yankooliveira/signals) - A typesafe, lightweight messaging lib for Unity.
+* [Coop Design](https://github.com/simeonradivoev/Coop-Design) - A prototype for runtime cooperative level designing in Unity 3D.
+* [Hydrogen CSharp](https://github.com/nxrighthere/Hydrogen-CSharp) - A prototype for runtime cooperative level designing in Unity 3D.
+* [Skill System](https://github.com/dongweiPeng/SkillSystem)
+* [SharpZipLib](https://github.com/icsharpcode/SharpZipLib) - A Zip, GZip, Tar and BZip2 library written entirely in C# for the .NET platform. 
+* [K4os.Compression.LZ4](https://github.com/MiloszKrajewski/K4os.Compression.LZ4) - LZ4/LH4HC compression for .NET Standard 1.6/2.0 (formerly known as lz4net).
+* [SSH.NET](https://github.com/sshnet/SSH.NET) - SSH.NET is a Secure Shell (SSH) library for .NET, optimized for parallelism.
+* [SharpSSH](http://www.tamirgal.com/blog/page/SharpSSH.aspx) - SharpSSH is a pure .NET implementation of the SSH2 client protocol suite.
+* [edtFTPnet/Free](https://enterprisedt.com/products/edtftpnet/) - Free .NET FTP library.
+* [netftp](https://archive.codeplex.com/?p=netftp) - .NET FTP Client.
+* [JWT](https://github.com/jwt-dotnet/jwt) - JWT (JSON Web Token) implementation for .NET 3.5+
+* [FluentValidation.Net35](https://github.com/emersonsoares/FluentValidation.Net35) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules.
+* [NPOI](https://archive.codeplex.com/?p=npoi) - Library to interact with Microsoft Office.
+* [YamlDotNet](https://github.com/aaubry/YamlDotNet) - YamlDotNet is a .NET library for YAML.
+* [Unity3D Script Library](https://github.com/QianMo/Unity3D-Script-Library) - A Script Library of Unity3D.
+* [OpenStash](https://github.com/mrzapp/openstash) - Open source inventory framework for Unity.
+* [OpenConvo](https://github.com/mrzapp/openconvo) - Open source conversation framework for Unity.
+* [UnityBarcodeScanner](https://github.com/kefniark/UnityBarcodeScanner "") - Simple Unity Barcode Scanner.
+* [PerlinNoise](https://github.com/keijiro/PerlinNoise "") - 1D/2D/3D Perlin noise function for Unity.
+* [LibNoise.Unity](https://github.com/ricardojmendez/LibNoise.Unity "") - Coherent noise library for Unity, a port of LibNoise.
+* [UnityRandom](https://github.com/tucano/UnityRandom) - Random library in C# for Unity3D.
+* [BulletMLLib](https://github.com/pixelnest/BulletMLLib "") - A Unity version of the open source C# library used to read BulletML XML files. See [BulletMLLib](https://github.com/dmanning23/BulletMLLib).
+* [Unity Voxelizer](https://github.com/brianasu/unity-voxelizer "") - Utility library to voxelize meshes in Unity.
+* [Klak](https://github.com/keijiro/Klak "") - Creative coding library for Unity.
+* [Archiver Unity](https://github.com/LightBuzz/Archiver-Unity "") - Compress and decompress files and folders in Unity3D.
+* [Excel4Unity](https://github.com/joexi/Excel4Unity "") - Excel for Unity. Provides both read and write with .xls and .xlsx.
+* [LiteCSV](https://github.com/terrynoya/LiteCSV "") - A lightweight csv table parser in C# mainly for unity but also use in .NET.
+* [BurstImageProcessing](https://github.com/stella3d/BurstImageProcessing "") - Fast parallel image processing on the CPU, using Unity C# jobs and Burst compilation (Experimental). 
+* [Curl Unity](https://github.com/91Act/curl-unity "") - This is a C# wrapper for Unity to use libcurl with http2/openssl enabled.
+* [WolfboyDispatcher](https://github.com/sassembla/WolfboyDispatcher "") - Small messaging system for Unity.
+* [Glader.Essentials](https://github.com/HelloKitty/Glader.Essentials "") - Essential development libraries for C#/.NET and Unity3D.
+* [Unity CoC](https://github.com/jeffcampbellmakesgames/unity-coc "") - CoC is a convention over configuration library for Unity that helps to set a common folder convention in a Unity project.
 
-* [Consolation](https://github.com/mminer/consolation) - In-game debug console that displays output from `Debug.Log`.
-* [CSharpatron (Paid)](https://www.assetstore.unity3d.com/en/#!/content/20232) - Automatically convert scripts from UnityScript to C# without breaking existing game objects.
-* [GitHub for Unity](https://unity.github.com/) - The new GitHub for Unity extension brings the GitHub workflow and more to Unity, providing support for large files with Git LFS and file locking.
+### :nut_and_bolt: Utilities <a name="utilities"></a>
+
+#### Common
+
+* [Unity Atoms](https://github.com/AdamRamberg/unity-atoms) - Tiny modular pieces utilizing the power of Scriptable Objects.
+* [ScriptFinder](https://github.com/JoebRogers/ScriptFinder) - A Unity editor extension to find script references within your project in seconds.
+* [SwissArmyLib](https://github.com/ArchonInteractive/SwissArmyLib) - Collection of helpful utilities we use in our Unity projects.
+* [UniVersionManager](https://github.com/sanukin39/UniVersionManager) - Simple Version Getter for Unity, it can be used for iOS, Android and unity editor platform. It can also get build version.
+* [UniClipboard](https://github.com/sanukin39/UniClipboard) - Simple clipboard plugin for Unity.
+* [SceneHistory Unity](https://github.com/takupisu/SceneHistory-Unity) - Open scenes quickly from a custom history of scenes. Supports scene addition.
 * [Scene View Bookmarks](https://github.com/mminer/scene-view-bookmarks) - Editor extension to bookmark and later recall scene views.
-* [SnazzyGrid (Paid)](https://www.assetstore.unity3d.com/en/#!/content/19245) - Makes it easy to manage positions of assets in the scene with easy to use snapping tools and many more features to improve the scene creation workflow.
-* [UniMerge (Paid)](https://www.assetstore.unity3d.com/en/#!/content/9733) - Editor extension for merging scenes and prefabs, also integrates with VCS.
-* [UniRx](https://github.com/neuecc/UniRx) - UniRx (Reactive Extensions for Unity) is a reimplementation of the .NET Reactive Extensions. Rx cures the "asynchronous blues" without async/await.
-* [UnityToolbag](https://github.com/nickgravelyn/unitytoolbag) - Collection of miscellaneous open source scripts and helpers for Unity 5.0.
+* [Unity Mulligan Renamer](https://github.com/redbluegames/unity-mulligan-renamer "") - Mulligan Renamer tool for the Unity Editor allows for quick and safe renaming of many assets and gameobjects at once.
+* [UnitySizeExplorer](https://github.com/aschearer/unitysizeexplorer "") - Visualize how much space each asset in your Unity game takes and quickly optimize your game's file size.
+* [SnazzyGrid](https://www.assetstore.unity3d.com/en/#!/content/19245) - Makes it easy to manage positions of assets in the scene with easy to use snapping tools and many more features to improve the scene creation workflow. :moneybag:
+* [UniMerge](https://www.assetstore.unity3d.com/en/#!/content/9733) - Editor extension for merging scenes and prefabs, also integrates with VCS. :moneybag:
+* [UnityIconCustomizer](https://github.com/makoto-unity/UnityIconCustomizer "You can customize your app icon with this. Like adding version number, 'BETA' and so on.")
+* [UnityMemoryMappedFile](https://github.com/sh-akira/UnityMemoryMappedFile "")
+* [AutoIconBuilder](https://github.com/negipoyoc/UnityAutoIconBuilder "")
+* [uShaderTemplate](https://github.com/hecomi/uShaderTemplate "Unity editor extension to generate shaders from template files.") - Unity editor extension to generate shaders from template files. (#SHADERS)
+* [Projeny](https://github.com/svermeulen/Projeny "") - A project and package manager for Unity.
+* [Presentation](https://github.com/UnityTechnologies/Presentation "") - No need to switch to Power Point anymore.
+* [EdNotes](https://github.com/plyoung/EdNotes "") - Attach notes to objects in Unity.
+* [NDocumentation](https://github.com/vertxxyz/NDocumentation) - A documentation window for Unity Editor that displays rich text pages.
+* [SaveGameFree](https://github.com/BayatGames/SaveGameFree "") - A free and simple but powerful solution for saving and loading game data in Unity.
+* [ColorBands](https://github.com/rstecca/ColorBands "") - Unity 3D's Gradient is a handy data type but comes with some limitations.
+* [Swatchr](https://github.com/jknightdoeswork/swatchr) - A color palette management system for Unity.
+* [ColorPalette](https://github.com/DomDomHaas/ColorPalette) - Light version of the ColorPalettes Asset for Unity.
+* [CropTexture](https://github.com/natsupy/CropTexture) - Crop and resize texture in Unity editor!
+* [AssetAuditor](https://github.com/MarkUnity/AssetAuditor "") - Tools to control the asset import settings in a Unity project.
+* [ScriptFinder](https://github.com/JoebRogers/ScriptFinder) - A Unity editor extension to find script references within your project in seconds.
+* [UnityPreviewGenerator](https://github.com/klhurley/UnityPreviewGenerator) - Generates preview textures for sprites, icons of Unity models.
+* [ClassTypeReference for Unity](https://bitbucket.org/rotorz/classtypereference-for-unity) - A class which provides serializable references to System.Type of classes with an accompanying custom property drawer which allows class selection from drop-down.
+* [Settings Unity](https://github.com/LightBuzz/Settings-Unity) - Settings utility for Unity3D.
+* [PNGCS](https://github.com/andrew-raphael-lukasik/pngcs) - Complete PNG encoding and decoding for Unity.
+* [Clock](https://github.com/LestaAllmaron/Clock) - A completly accurate timer with performance tracking for multiplayer game servers.
+* [UnityIO](https://github.com/ByronMayne/UnityIO) - An easy to use API that allows you to manipulate files inside of Unity without the headache of using AssetDatabase.
+* [VariableAssets](https://github.com/ZeroSleepGames/VariableAssets) - Variable assets for Unity3D.
+* [AutoSaveScene](https://github.com/liortal53/AutoSaveScene) - Unity editor helper for auto saving scene & minimizing lost work.
+* [EnumDispatcher](https://github.com/5argon/EnumDispatcher) - ECS backed C# enums as Flux/Redumox action in Unity.
+* [UnityHelpers](https://github.com/jeffvella/UnityHelpers) - A collection of random scripts related to Unity.
+* [UndoPro](https://github.com/Seneral/UndoPro) - UndoPro is a command-based undo system integrated into Unity's default system. This allows devs to use actions for their undo/redo operations without forcing the user into a new undo-workflow!
+* [Ink Unity Integration](https://github.com/inkle/ink-unity-integration) - Unity integration for the open source [ink](https://github.com/inkle/ink) narrative scripting language.
+* [Unity Auth Manager](https://github.com/zklinger2000/unity-auth-manager) - An example of using a Javascript Web Token (JWT) based authentication system for an app built with Unity.
+* [Deform](https://github.com/keenanwoodall/Deform) - A fully-featured deformer system for Unity.
+* [Gamekit3D](https://github.com/Unity-Technologies/Gamekit3D) ![Official](UnityResource16x16.png)
+* [EasingCore](https://github.com/setchi/EasingCore) - Simple easing implementation for Unity.
+* [Unity SemVer](https://github.com/jeffcampbellmakesgames/unity-semver) - A SemVer 2.0.0 implementation for Unity.
+* [MasterUnityHandles](https://github.com/alelievr/MasterUnityHandles) - Unity custom handles examples.
+* [Unity Mesh Triangulator](https://github.com/joshcamas/unity-mesh-triangulator) - A modified version of alexmuab's unity-mesh-triangulator.
+* [Unity Rulers](https://github.com/geekrelief/unityrulers) - A ruler editor to measure distances between game objects in the Scene view.
+* [Unity Game Loader](https://github.com/GalvanicGames/unity-game-loader) - A loading system to load in assets across frames.
+* [SaveManager](https://github.com/ewersp/SaveManager) - A simple, yet powerful binary serializer for persisting game data in Unity. 
+* [NativeSDF](https://github.com/Amarcolina/NativeSDF) - A simple, yet powerful binary serializer for persisting game data in Unity.
+* [UnityResourceMgr](https://github.com/billwillman/UnityResourceMgr)
+* [UnityHexGrid](https://github.com/Amaranthos/UnityHexGrid) - A hex grid generation tool, for use in Unity.
 
-## Visual Scripting
+#### Gizmos
 
-* [Playmaker (Paid)](https://www.assetstore.unity3d.com/en/#!/content/368) - Quickly make gameplay prototypes, A.I. behaviors, animation graphs, interactive objects, and more using finite state machines.
+* [Unity3DRuntimeTransformGizmo](https://github.com/HiddenMonk/Unity3DRuntimeTransformGizmo "") - A runtime transform gizmo similar to unitys editor so you can translate (move, rotate, scale) objects at runtime.
+* [FastGizmosUnity](https://github.com/sverdegd/FastGizmosUnity "") - Set of gizmos utilities for Unity.
+* [Gizmos](https://github.com/popcron/gizmos) - Used for drawing runtime gizmos in builds and editor (Unity3D).
+* [Unity SimpleUsefulGizmos](https://github.com/flamacore/Unity-SimpleUsefulGizmos) - Additional Gizmos showing information on your scene view like colored colliders, rotation indicator lines.
 
-# Projects
+#### Splines
 
-## Games
+* [Bezier3D](https://github.com/Siccity/Bezier3D "") - Unity3D: Simple core bezier functionality featuring interpolation and orientation.
+* [UniSpline](https://github.com/adrenak/UniSpline "") - A Unity tool for creating curves.
+* [RageSpline](https://github.com/Freakow/RageSpline "") - Scalable Vector Graphics creation and drawing component for Unity.
+* [Bezier Curves In Unity](https://github.com/Scrawk/Bezier-Curves-In-Unity "") - Bezier curve code.
 
-* [Nodulus](https://github.com/Hyperparticle/nodulus) - A complete puzzle game with a clever twist. Play it online.
+#### Strings
+
+* [String_format](https://github.com/little-sharps/string_format) - An enhancement to the String.Format library that allows for named place holders.
+* [FastString](https://github.com/snozbot/FastString "") - Alternative to StringBuilder class for Unity games, with minimal memory allocation and faster performance.
+
+#### Preprocessor Directives
+
+* [Better Defines](https://github.com/TarasOsiris/Better-Defines) - An easy and elegant way to manage your preprocessor directives in Unity3D.
+* [UnityDefineManager](https://github.com/karl-/UnityDefineManager "") - Easily manage global defines in Unity.
+
+#### INI Files
+
+* [INI Parser](https://github.com/rickyah/ini-parser) - Read/Write an INI file the easy way!
+* [UnityIniFiles](https://github.com/iBicha/UnityIniFiles "") - A very naive implementation to import .ini configuration files into Unity.
+
+#### Command Palette
+
+* [DTCommandPalette](https://github.com/DarrenTsung/DTCommandPalette) - Command palette for Unity - run methods, open scenes, and more!
+* [Unity3D Quick Search](https://github.com/appetizermonster/Unity3D-QuickSearch) - A Command Palette for Unity.
+
+#### Dialogues
+
+* [Merino](https://github.com/radiatoryang/merino "") - A narrative design tool that lets you write Yarn scripts inside the Unity Editor.
+* [Dialogue](https://github.com/Siccity/Dialogue "") - Node based dialogue system.
+* [Cradle](https://github.com/daterre/Cradle "") - Formerly UnityTwine, is a plugin for Unity that powers the storytelling side of a game.
+
+#### Screen Recorders
+
+* [Moments](https://github.com/Chman/Moments "") - A quick GIF replay recorder for Unity.
+* [FFmpegOut](https://github.com/keijiro/FFmpegOut "") - Video capture plugin for Unity with FFmpeg.
+* [FrameCapture](https://github.com/Chman/FrameCapture "") - A simple frame-by-frame capture tool for Unity to record perfectly smooth, supersampled replays or cinematics.
+* [FrameCapturer](https://github.com/unity3d-jp/FrameCapturer "") - Export framebuffer, GBuffer or any RenderTextures from Unity to file. supported format: png, exr, gif, webm, mp4.
+* [GenericFrameRecorder](https://github.com/Unity-Technologies/GenericFrameRecorder "") ![Official](UnityResource16x16.png)
+* [UnityEveryplaySaveToLocal](https://github.com/yasirkula/UnityEveryplaySaveToLocal) - A helper script to save captured Everyplay videos to local file system on Android & iOS.
+* [FrameDump](https://github.com/keijiro/FrameDump) - A small utility for exporting image sequence from Unity.
+* [Select GUI Capture Sample](https://github.com/edom18/SelectGUICaptureSample) - This is sample for capturing that can ignore specific GUI elements. (#UI)
+* [Unity VR Video Recording Test](https://github.com/aosoft/UnityVRVideoRecordingTest) - Test project to record VR sessions. (#VIRTUAL-REALITY)
+* [AsyncCaptureTest](https://github.com/keijiro/AsyncCaptureTest "") - Non-blocking screen capture example with asynchronous GPU readback.
+* [UnityCapture](https://github.com/schellingb/UnityCapture "") - Streams Unity rendered output to other Windows applications as virtual capture device.
+
+#### Color Pickers
+
+* [Unity Inmediate Color Picker](https://github.com/mattatz/unity-immediate-color-picker) - Color picker for Unity in immediate GUI mode.
+* [HSV Color Picker Unity](https://github.com/judah4/HSV-Color-Picker-Unity "") - HSV color picker using Unity UI.
+* [UnityColorPicker](https://github.com/jongallant/UnityColorPicker) - A standalone color picker asset for Unity.
+* [CUI Color_Picker](https://github.com/SnapshotGames/cui_color_picker "") - Color Picker for Unity UI in a single script/prefab.
+* [CircularColorPickerUnity](https://github.com/mathiassiig/CircularColorPickerUnity) - Just a shader and a script for a circular color picker.
+* [Unity Color Wheel](https://github.com/fkate/Unity_ColorWheel) - Color Picker Element for the newer Unity GUI System.
+* [VR Color Picker](https://github.com/shinn716/VRColorPicker) - Raycast to Color Pick. (#VIRTUAL-REALITY)
+
+#### Collections
+
+* [MyBox](https://github.com/Deadcows/MyBox "") - MyBox is a set of attributes, tools and extensions for Unity.
+* [Unity Utilities](https://github.com/TobiasWehrum/unity-utilities "") - A collection of Unity3D scripts I've been sharing between projects.
+* [unity-cj-lib](https://github.com/TheAllenChou/unity-cj-lib "") - Utility library for Unity.
+* [Unity Utils](https://github.com/nubick/unity-utils "") - Different help scripts for Unity engine.
+* [Demilib](https://github.com/Demigiant/demilib "") - A library of various utilities and tools for Unity (alpha).
+* [Unityassets](https://github.com/fholm/unityassets "") - Assorted unity assets and utilities.
+* [UnityLibrary](https://github.com/UnityCommunity/UnityLibrary "") - Library of all kind of scripts, snippets & shaders for Unity.
+* [E7Unity](https://github.com/5argon/E7Unity "") - Common Unity resources Exceed7 Experiments uses in projects.
+* [HelpfulScripts](https://github.com/cjacobwade/HelpfulScripts "") - A collection of random, useful scripts.
+* [Unity Utils](https://github.com/ObelardO/Unity-Utils "") - Small usefull scripts, tips.
+
+#### Others
+
+* [Graph Visualizer](https://github.com/Unity-Technologies/graph-visualizer "") - Visualizer for your Playable graphs. ![Official](UnityResource16x16.png)
+* [Doors Plus Lite](https://github.com/AlexanderAmeye/doors-plus-lite "") - A basic door script for the Unity3D game engine.
+* [AutoLOD](https://github.com/Unity-Technologies/AutoLOD "") - Automatic LOD generation + scene optimization. ![Official](UnityResource16x16.png)
+* [MathUtilities](https://github.com/zalo/MathUtilities "") - A collection of some of the neat math and physics tricks that I've collected over the last few years.
+* [Wooga Lambda CSharp](https://github.com/wooga/Wooga.Lambda-CSharp "") -  Functional primitives for Unity3D.
+* [UnityDeeplinks](https://github.com/TROPHiT/UnityDeeplinks "") - A set of tools for Unity to allow handling deeplink activation from within Unity scripts.
+* [DTValidator](https://github.com/DarrenTsung/DTValidator "") - Tool for validating objects (eg. GameObjects, ScriptableObjects, etc) in the Unity Editor.
+* [Unity.Library.eppz.Lines](https://github.com/eppz/Unity.Library.eppz.Lines "") - Lightweight OpenGL line rendering for Unity. Like Debug.DrawLine in Game view.
+* [KDTree](https://github.com/viliwonka/KDTree "") - Fast KDTree for Unity, with thread-safe querying.
+* [GameViewSizeChanger](https://github.com/Syy9/GameViewSizeChanger "") - Unity GameView Changer.
+* [Unity Safe Area Canvas](https://github.com/nkjzm/Unity-SafeAreaCanvas "") - An asset for adjusting the size automatically and preview in Editor.
+* [EncodeToTGA](https://github.com/phwitti/EncodeToTGA "") - Texture2D.EncodeToTGA (Unity)
+* [PickleBuilder](https://github.com/PicklesIIDX/PickleBuilder "") - A Steam enabled multi-platform build tool for Unity.
+* [Unity ScriptableObjects Game Events](https://github.com/NeoDragonCP/Unity-ScriptableObjects-Game-Events- "") - Receive Update callback(s) from anywhere and in any order in Unity!
+* [UnityOrderedUpdate](https://github.com/yasirkula/UnityOrderedUpdate "") - Based on a great talk by Ryan Hipple, here is my improved version of his Game Event system for Unity.
+* [UnityWireframeRenderer](https://github.com/miguel12345/UnityWireframeRenderer "") - Get a beautiful cross-platform wireframe renderer for your meshes with one click.
+* [NatShare API](https://github.com/olokobayusuf/NatShare-API "") - NatShare is a native sharing API for Unity Engine.
+* [Unity GoogleData](https://github.com/kimsama/Unity-GoogleData "") - See [Unity-QuickSheet](https://github.com/kimsama/Unity-QuickSheet "").
+* [GoogleSheetsUnity](https://github.com/5argon/GoogleSheetsUnity) - Get data from your private Google Sheets to Unity! (Read-only).
+* [Unity Free Flight](https://github.com/NickolausDS/Unity-Free-Flight "") - A Unity Package to provide bird-like flight to Unity Game Objects.
+* [Unity EventBinder](https://github.com/GeorgeDascalu/Unity-EventBinder) - User Interface Event decoupler.
+* [Unity BitmapFontImporter](https://github.com/litefeel/Unity-BitmapFontImporter) - An Unity editor extension for bitmap font.
+* [xNode BehaviourTree](https://github.com/jnhtt/xNode-BehaviourTree) - Some log4net helper classes and UnityEngine.Debug appender for Unity.
+* [MVPScriptGenerator4Unity](https://github.com/MasaKoha/MVPScriptGenerator4Unity) - MVP Script Generator for Unity Editor.
+* [CAD in Unity](https://github.com/i2e-haw-hamburg/cad-in-unity "") - Loading CAD into Unity 3D applications.
+* [Spine Runtimes](https://github.com/EsotericSoftware/spine-runtimes) - Collection of Spine runtimes including with Unity3d version.
+* [InGameReplay](https://github.com/FeNo/InGameReplay) - Allow you to record the transform of any objects to replay it.
+* [MMD for Unity](https://github.com/mmd-for-unity-proj/mmd-for-unity) - MikuMikuDance for Unity.
+* [SerializableCallback](https://github.com/Siccity/SerializableCallback) - UnityEvent and System.Func had a child.
+* [Unity3D Extensions](https://github.com/jbruening/unity3d-extensions) - Extension and utility methods for the Unity game engine.
+* [EZ Item Editor](https://github.com/anasiqbal/ez-item-editor) - A game data editor for unity that provides a simple solution to entering, maintaining, and consuming game data.
+* [CSharpatron](https://www.assetstore.unity3d.com/en/#!/content/20232) - Automatically convert scripts from UnityScript to C# without breaking existing game objects. :moneybag:
+* [Unity Plane Mesh Splitter](https://github.com/artnas/Unity-Plane-Mesh-Splitter) - A simple script which let's you split any mesh into smaller chunks.
+* [Mesh Voxelization](https://github.com/Scrawk/Mesh-Voxelization "") - Mesh voxelization in Unity.
+* [GPUMatrixMultiplicationTest](https://github.com/mattatz/GPUMatrixMultiplicationTest "") - GPU matrix multiplication in Unity.
+* [Unity Simple SRT](https://github.com/roguecode/ "") - A super simple SRT subtitle parser.
+* [Mesh Combine Wizard](https://bitbucket.org/sirgru/meshcombinewizard "") - Running the wizard will combine all the meshes on the chosen gameObject and its children that share the same material.
+* [CubemapToEquirectangular](https://github.com/Mapiarz/CubemapToEquirectangular "") - Cubemap to equirectangular format converters for Unity3D.
+* [CloudNoiseGen](https://github.com/Fewes/CloudNoiseGen "") - A static utility class for Unity which handles generating and loading periodic, cloud-like (perlin-worley) 3D noise textures on the GPU.
+* [AceArcadeMissiles](https://github.com/brihernandez/AceArcadeMissiles "") - Arcade style missile code, effect, and sound pack.
+* [GunTurrets](https://github.com/brihernandez/GunTurrets "") - Starting point for turrets that can be mounted on arbitrarily rotating things.
+* [UnityInstancedHealthBars](https://github.com/sinbad/UnityInstancedHealthBars "") - Example projects using instancing in Unity to render enemy health bars in 1 draw call.
+* [UnityBurstFunctions](https://github.com/imxzjv/UnityBurstFunctions "") - Pattern and helpers for writing Unity Burst jobs as generic Functions/Actions.
+* [Inventory](https://github.com/FarrokhGames/Inventory "") - A Diablo 2-style inventory system for Unity3D.
+* [Piranha](https://github.com/keenanwoodall/Piranha "") - A simple tool to make rigidbodies swarm a mesh in Unity.
+* [SmoothingTest](https://github.com/keijiro/SmoothingTest "") - Critically damped spring smoothing.
+* [Grapple Effect](https://github.com/keenanwoodall/Grapple-Effect "") - An example of a simple grapple effect in Unity.
+* [LinkedListUpdateManager](https://github.com/Xerios/LinkedListUpdateManager "") - A simple script to manage updates for Unity.
+
+### :wrench: Tools <a name="tools"></a>
+
+* [Unity Tools](https://github.com/NoxHarmonium/unity-tools "") - Scripting Toolkit Github's Page.
+* [Unity Tools](https://github.com/kode80/UnityTools "") - Unity Tools Github's Page.
+* [Unity Toolbag](https://github.com/nickgravelyn/UnityToolbag "") - Collection of miscellaneous open source scripts and helpers for Unity 5.0.
+* [Leopotam Group Library Unity](https://github.com/Leopotam/LeopotamGroupLibraryUnity "") - Tools library for unity 3d game engine: animator graph helpers, serialization (json), localization, event routing (eventbus, ui actions), embedded scripting, uGui xml markup, threading, tweening, in-memory protection and other helpers.
+* [U3D](https://github.com/DragonBox/u3d "") - Cross-platform Unity3D tools.
+* [UnitySimplePatchTool](https://github.com/yasirkula/UnitySimplePatchTool "") - Unity port of SimplePatchTool library to add patching support to standalone Unity applications.
+* [TextMeshProReplacer](https://github.com/jackisgames/TextMeshProReplacer "") - Unity port of SimplePatchTool library to add patching support to standalone Unity applications.
+* [CantysToolbox](https://github.com/CantyCanadian/CantysToolbox "") - Set of tools for any Unity projects.
+* [Unity Development Tools](https://github.com/heisarzola/Unity-Development-Tools "") - A collection of several tools and code snippets to improve development speed and best practices in the "Unity" game engine.
+* [ToolsCollection](https://github.com/Unity-Technologies/ToolsCollection "") - Official Unity Tools shared by its developers. ![Official](UnityResource16x16.png)
+* [ModTool](https://github.com/Hello-Meow/ModTool "") - Mod support for Unity.
+* [UnityStudio](https://github.com/RaduMC/UnityStudio) - Unity Studio is a tool for exploring, extracting and exporting assets from Unity games and apps. (#ASSET-STORE)
+* [Bitstrap](https://github.com/bitcake/bitstrap) - BitStrap is BitCake's collection of Unity tools that improve our workflow.
+* [uDllExporter](https://github.com/hecomi/uDllExporter "") - Tool to build DLLs in Unity.
+* [UPAToolkit](https://github.com/Brackeys/UPAToolkit "") - A free Pixel Art Toolkit for the Unity Engine.
+* [IL Repack](https://github.com/gluck/il-repack "") - Open-source alternative to ILMerge.
+* [Xcodeapi](https://bitbucket.org/Unity-Technologies/xcodeapi "") - This is an Xcode Manipulation module maintained by the Unity mobile team. ![Official](UnityResource16x16.png)
+* [iOS Native Code Samples](https://bitbucket.org/Unity-Technologies/iosnativecodesamples "") - These are native code samples for iOS maintained by the Unity iOS team. ![Official](UnityResource16x16.png)
+* [XUPorter](https://github.com/onevcat/XUPorter "") - Add files and frameworks to your Xcode project after it is generated by Unity 3D.
+* [Xcodeproj](https://github.com/CocoaPods/Xcodeproj "") - Create and modify Xcode projects from Ruby.
+* [Mod-pbxproj](https://github.com/kronenthaler/mod-pbxproj "") - A python module to manipulate XCode projects.
+* [AssetForge](https://kenney.itch.io/assetforge) - Easily create simple assets in seconds. :moneybag:
+* [UnityPSDLayoutTool](https://github.com/GlitchEnzo/UnityPSDLayoutTool) - A tool used to import a Photoshop Documents (.psd files) into the Unity Game Engine.
+* [Psd2UnityImporter](https://github.com/SubjectNerd-Unity/Psd2UnityImporter) - An advanced PSD importer tool for Unity.
+* [GSLS Optimizer](https://github.com/aras-p/glsl-optimizer) - GLSL optimizer based on Mesa's GLSL compiler. Used in Unity for mobile shader optimization. (#SHADERS)
+* [Memory Profiler](https://bitbucket.org/Unity-Technologies/memoryprofiler) - Unity 5.3a4 has a new very lowlevel memory profiler API.  It can tell you which objects got blamed for how much C++ memory allocations. ![Official](UnityResource16x16.png)
+* [Uni Simple Profiler](https://github.com/baba-s/uni-simple-profiler)
+* [Support for Unity Memory Profiler](https://github.com/robertoardila/support-unity-memoryprofiler "") - Extension for the existing Unity memory profiler project.
+* [DekosTools](https://github.com/rafaelhipercg/DekosTools "") - Tools to make work easier on Unity3D.
+* [PPTech Build Tools](https://github.com/quatmo/pptech-build-tools "") - Build Tools for Unity 3D that we use for Braveland game.
+* [Prime31 Unity AddOns](https://github.com/prime31/P31UnityAddOns "") - Mostly defunct. Features were added and components broken out in the 'Kit' repositories.
+* [PrefabPainter](https://github.com/Roland09/PrefabPainter "") - Tool for conveniently adding huge amounts of prefabs.
+* [Unity Finder](https://github.com/UnityTech/unity_finder "") - Node.js module for finding all Unity installations on Windows and Mac computers.
+* [Unity3D Tools](https://github.com/TheUncas/unity3D-tools "") - Unity3D common useful tools.
+* [Quick Play Tool](https://github.com/atrblizzard/Quick-Play-Tool "") - Unity3D editor tool to speed up scene switching and playtesting when you are working with multiple scenes.
+* [Cyber Dogs Toolbox](https://github.com/Harley-Torrisi/Cyber-Dogs-Toolbox "") - A default asset used to help in the development of games using C# in Unity.
+* [UnityCommon](https://github.com/brihernandez/UnityCommon "") - Assortment of commonly re-used tools and code for my Unity projects.
+* [BlendShapeBuilder](https://github.com/unity3d-jp/BlendShapeBuilder "") - Tweak vertices and generate blend shapes in Unity.
+* [Ferr Tools](https://ferrlib.com/ "") - Different tools for common tasks in Unity (Terrain, Vertex painter, Level Design...)
+* [FerrCommon](https://github.com/maluoi/FerrCommon "") - Common code for the Ferr tools.
+* [LayerManager](https://github.com/YondernautsGames/LayerManager "") - A simple tool for reordering, merging and modifying unity layers. Updates game objects, components and assets to match.
+* [RectTransformEditor](https://github.com/Syy9/RectTransformEditor "") - Custom RectTransform Editor.
+* [BGC Tools](https://github.com/UCRBrainGameCenter/BGC_Tools "") - A collection of useful Unity Tools and scripts developed at the UC Riverside Brain Game Center.
+* [Unity3DTiles](https://github.com/NASA-AMMOS/Unity3DTiles "") - A 3D Tiles implementation in Unity.
+* [BlendShapeBuilder](https://github.com/flammpfeil/BlendShapeBuilder "") - Tweak vertices and generate blend shapes in Unity.
+* [AbilityDesigner](https://github.com/NoxNorthwind/AbilityDesigner "") - A plugin which gives you a dynamic, extendable and user friendly tool for the creation of abilities in games. 
+
+## :electric_plug: Plugins <a name="plugins"></a>
+
+### Mobile
+
+* [Unity Android Notifications](https://github.com/Agasper/unity-android-notifications "") - Unity3D Plugin for Android local notifications with example project.
+* [UnityShowAndroidStatusBar](https://github.com/Over17/UnityShowAndroidStatusBar "") - Show Android status bar for applications built with Unity 5.3 and later.
+* [Permission Plugin for Unity](https://github.com/hiyorin/PermissionPlugin-for-Unity "") - A set of tools for Unity to allow handling Permission for Android and iOS.
+* [Google SignIn Plugin for Unity](https://github.com/hiyorin/GoogleSigninPlugin-for-Unity "") - A set of tools for Unity to allow handling Google Sign-in for Android and iOS.
+* [Memory Info Plugin for Unity](https://github.com/hiyorin/MemoryInfoPlugin-for-Unity "") - A set of tools for Unity to allow handling memory info for Android and iOS.
+* [System Volume Plugin for Unity](https://github.com/hiyorin/SystemVolumePlugin-for-Unity "") - A set of tools for Unity to allow handling system volume for Android and iOS.
+* [Unity JAR Resolver](https://github.com/googlesamples/unity-jar-resolver "") - Unity plugin which resolves Android & iOS dependencies and performs version management.
+* [Unity Native Sharing](https://github.com/ChrisMaire/unity-native-sharing "") - A Unity plugin to open native sharing dialogs on iOS and Android, primarily for sharing screenshots.
+* [Unity Native Toolkit](https://github.com/ryanw3bb/unity-native-toolkit "") - Native iOS & Android functionality in Unity.
+* [UniAndroidVibration](https://github.com/sanukin39/UniAndroidVibration) - Unity Android plugin JUST execute device vibration.
+* [iVidCapPro](https://github.com/ThisNetWorks/iVidCapPro "") - iVidCapPro is a plugin that enables Unity, to capture video and audio from your Unity iOS application.
+* [CO2](https://github.com/sassembla/CO2) - Android plugin generator for Unity.
+* [Unity Webview](https://github.com/gree/unity-webview) - A plugin for Unity 5 that overlays WebView components on Unity view. It works on Android, iOS, Unity Web Player, and OS X (Windows is not supported for now).
+* [iOS Unity5](https://github.com/blitzagency/ios-unity5 "") - How to integrate Unity with an Native iOS Application using Swift.
+* [iMessageStickerUnity](https://github.com/agens-no/iMessageStickerUnity "") - An iMessage Sticker plugin for Unity3d that adds a Sticker extension target to an xCode project created by Unity3D.
+* [Peuck](https://github.com/fcarucci/peuck "") - Android utilities for Unity.
+* [Unity Webview Integration](https://github.com/keijiro/unity-webview-integration "") - Plugin to use webview in your Unity application.
+* [UnityNativeShare](https://github.com/yasirkula/UnityNativeShare "") - A Unity plugin to natively share files (images, videos, documents, etc.) and/or plain text on Android & iOS.
+* [UniLocalNotification](https://github.com/sanukin39/UniLocalNotification "") - Simple Local Notification Plugins for Unity.
+
+### Services
+
+* [Google Play Games](https://github.com/playgameservices/play-games-plugin-for-unity "") - Google Play Games plugin for Unity.
+* [Facebook SDK for Unity](https://github.com/facebook/facebook-sdk-for-unity "") - The Facebook SDK for Unity.
+* [Twity](https://github.com/toofusan/Twity "") - (Previously: twitter-for-unity) Twitter API Client for Unity C#.
+* [Unity3D Profile](https://github.com/soomla/unity3d-profile "") - Unity3D plugin for Facebook, Twitter and Google Plus. The social module of SOOMLA - free2play mobile game framework for iOS and Android. 
+* [Firebase Unity](https://github.com/firebase/Firebase-Unity "") - Integration for Unity with Firebase.
+* [Steamworks-Platform](https://github.com/mPowerGames/Steamworks-Platform "") - Unity interface ISocialPlatform implementation with Steamworks.NET.
+* [Steamworks.NET](https://github.com/rlabrecque/Steamworks.NET "") - Steamworks wrapper for Unity.
+* [Mapbox Unity SDK](https://github.com/mapbox/mapbox-unity-sdk "") - Mapbox Unity SDK.
+* [IndoorAtlas Unity Plugin](https://github.com/IndoorAtlas/unity-plugin "") - [IndoorAtlas](https://www.indooratlas.com/) plugin for Unity.
+* [USD Unity SDK](https://github.com/Unity-Technologies/usd-unity-sdk "") - Integration of Pixar's Universal Scene Description into Unity. (#Augmented Reality) ![Official](UnityResource16x16.png)
+* [Vimeo Unity SDK](https://github.com/vimeo/vimeo-unity-sdk "") - Easily stream your Vimeo videos into Unity or record and publish out to Vimeo.
+* [IBM Watson SDK for Unity](https://github.com/watson-developer-cloud/unity-sdk "") - Unity SDK to use the IBM Watson services.
+* [Unity Flurry SDK](https://github.com/flurry/unity-flurry-sdk) - Unity plugin for Flurry SDK.
+* [Flurry Unity Plugin](https://github.com/bearprada/flurry-unity-plugin) - The Flurry Library for Unity3D. support Android and iOS.
+* [Google Analytics Plugin for Unity](https://github.com/googleanalytics/google-analytics-plugin-for-unity) - Google Analytics plugin for the Unity game creation system.
+* [GetSocial Unity SDK](https://github.com/getsocial-im/getsocial-unity-sdk) - This is the demo application for GetSocial SDK.
+* [Reign Unity Plugin](https://github.com/reignstudios/Reign-Unity-Plugin5) - This Reign API is a cross-platform, unified API for the Unity game engine.
+* [Reign Unity Plugin v4](https://github.com/reignstudios/Reign-Unity-Plugin) - Unity 4.x version of the Reign plugins.
+* [Unity Wakatime](https://github.com/vladfaust/unity-wakatime "") - [WakaTime](https://wakatime.com/) plugin for Unity.
+* [Line SDK Unity](https://github.com/line/line-sdk-unity "") - Provides a modern way of implementing LINE APIs in Unity games, for iOS and Android.
+* [Mastodon Unity](https://github.com/Santarh/mastodon-unity "")
+* [PlayFab Unity SDK](https://github.com/PlayFab/UnitySDK "") - Unity C# SDKs for PlayFab. See also its [extensions](https://github.com/PlayFab/UnityEditorExtensions).
+* [UnityPlugin](https://github.com/modio/UnityPlugin "") - Unity Plugin for integrating mod.io - a modding API for game developers.
+
+### Languages
+
+* [UnityJS](https://github.com/SimHacker/UnityJS "") - Unity3D C# / JavaScript Bridge.
+* [Unity Python](https://github.com/exodrifter/unity-python "") - Python plugin for Unity3D.
+* [Unity Swift](https://github.com/miyabi/unity-swift "") - Native plugin to write native code in Swift for Unity.
+* [UnityRustPlugin](https://github.com/keijiro/UnityRustPlugin) - An example showing how to write a Unity native plugin in Rust.
+* [NLua](https://github.com/NLua/NLua "") - NLua is the bind between Lua world and the .NET world.
+* [Moonsharp](https://github.com/xanathar/moonsharp/ "") - An interpreter for the Lua language, written entirely in C# for the .NET, Mono, Xamarin and Unity3D platforms, including handy remote debugger facilities.
+* [slua](https://github.com/pangweiwei/slua "") - Fastest lua binding via static code generating for Unity3D and mono.
+* [uLua](https://github.com/jarjin/uLua "")
+* [xLua](https://github.com/Tencent/xLua) - xLua is a hot-fix solution plugin for Unity3D, it supports android, ios, windows, osx, etc. (Recommended)
+* [UniLua](https://github.com/xebecnan/UniLua) - A pure C# implementation of Lua 5.2 focus on compatibility with Unity3D.
+* [KopiLuaInterface](https://github.com/gfoot/kopiluainterface) - LuaInterface adapted to work with KopiLua.
+* [ExportLuaUI](https://github.com/glegoo/ExportLuaUI)
+* [LuaProfiler For Unity](https://github.com/ElPsyCongree/LuaProfiler-For-Unity) - Profiler for Lua inside of Unity.
+* [Entitas Lua](https://github.com/sniper00/entitas-lua) - Entitas ECS implementation in Lua.
+* [MobileLegend](https://github.com/Preston-Chen/MobileLegend) - Use toLua Framework to create client on Unity.
+
+### Others
+
+* [ShaderLabVS](https://github.com/wudixiaop/ShaderlabVS "") - ShaderlabVS is a Visual Studio plugin for Unity Shaderlab programming.
+* [NewtonUnityPlugin](https://github.com/svenberra/NewtonUnityPlugin "") - A managed plugin for Unity 3D that allows you to use the Newton Dynamics physics engine.
+* [Openpose Unity_Plugin](https://github.com/CMU-Perceptual-Computing-Lab/openpose_unity_plugin "") - OpenPose's Unity Plugin for Unity users.
+* [MeshSync](https://github.com/unity3d-jp/MeshSync "") - Live link plugin for Unity. supported tools: Maya, Maya LT, 3ds Max, Motion Builder, Blender, Metasequoia.
+* [VoxHands](https://github.com/hiroki-o/VoxHands "") - Humanoid Finger Controller Plugin for Unity.
+* [Atlas Unity](https://github.com/wooga/atlas-unity) - This plugin provides tasks to run unity batchmode commands in gradle. It runs and reports unity unit-tests and is able to export .unitypackage files.
+* [Unity Shell](https://github.com/marijnz/unity-shell "") - Write and execute code in an intuitive "shell" with autocompletion, for the Unity Editor.
+* [Unity3D Jenkins Plugin](https://github.com/jenkinsci/unity3d-plugin "") - Jenkins Unity3d plugin. (#CONTINUOUS-INTEGRATION)
+* [Unity3D_MQTT](https://github.com/vovacooper/Unity3d_MQTT "") - MQTT protocol running on Unity3D.
+* [2D Light of Sight Unity](https://github.com/f15gdsy/2D-Light-of-Sight-Unity "") - A plugin for creating 2D lighting & shadows, and line of sight effects in Unity3D.
+* [GPU Noise For Unity](https://github.com/heyx3/GPUNoiseForUnity "") - A Unity plugin for generating noise on the GPU for use in the editor.
+* [UnityCam](https://github.com/mrayy/UnityCam "") - Unity3D Virtual webcam plugin, streams unity viewport contents to other applications as virtual camera.
+* [mrayGStreamerUnity](https://github.com/mrayy/mrayGStreamerUnity "") - GStreamer Integration with Unity using a Native plugin.
+* [KlakSpout](https://github.com/keijiro/KlakSpout "") - Spout plugin for Unity.
+* [KlakNDI](https://github.com/keijiro/KlakNDI "") - NewTek NDI™ plugin for Unity.
+* [Klinker](https://github.com/keijiro/Klinker "") - An experimental implementation of Blackmagic DeckLink plugin for Unity.
+* [KlakHap](https://github.com/keijiro/KlakHap) - HAP video player plugin for Unity.
+* [KlakSyphon](https://github.com/keijiro/KlakSyphon) - Syphon plugin for Unity.
+* [ChromaPack](https://github.com/keijiro/ChromaPack "") - A lossy texture compression plugin for Unity.
+* [VoxBlend](https://github.com/hiroki-o/VoxBlend) - BlendShape Controller Plugin for Unity.
+* [BepInEx](https://github.com/BepInEx/BepInEx) - Unity game patcher and plugin framework.
+* [UnityElevatorCompiler](https://github.com/m3rt32/UnityElevatorCompiler) - A plugin that plays elevator music while Unity compiles your code. :cool:
+* [myS7ProSimLib](https://github.com/kodaman2/myS7ProSimLib) - Imported S7PROSimLib type library. To connect unity3D with Siemens PLCSim using COM Interop.
+* [UnityOptixPlugin](https://github.com/Alexander-Scott/UnityOptixPlugin) - An example of a Unity plugin that allows you to leverage the power of NVIDIA Optix.
+* [RegionCapture](https://github.com/maximrouf/RegionCapture) - Plugin for Unity 2017 (for mobile and desktop app's).
+* [EffekseerForUnity](https://github.com/effekseer/EffekseerForUnity) - This is the [Effekseer's](https://github.com/effekseer/Effekseer) runtime plugin for Unity.
+
+### :eyes: Visual Scripting <a name="visual-scripting"></a>
+
+* [AssetGraph](https://github.com/unity3d-jp/AssetGraph) - Visual Workflow Automation Tool for Unity.  ![Official](UnityResource16x16.png)
+* [Playmaker](https://www.assetstore.unity3d.com/en/#!/content/368) - Quickly make gameplay prototypes, A.I. behaviors, animation graphs, interactive objects, and more using finite state machines. :moneybag:
+* [Bolt](https://ludiq.io/bolt) - Brings complete visual scripting to Unity, empowering artists, designers and programmers to create gameplay mechanics and interactive systems without writing a single line of code. (:moneybag: with Free edition)
+* [Constellation](https://github.com/ConstellationLanguage/Constellation) - Constellation is a visual scripting language for unity that gives you the tools of a programmer without having to write a single line of code. 
+* [Artimech](https://github.com/Scramasax/Artimech) - Open source visual scripting system for Unity.
+
+### Snippets & Gists <a name="snippets-&-gists"></a>
+
+* [Naphier Gists](https://gist.github.com/Naphier) - Useful gists for Unity3D.
+* [BetterDefines.cs](https://gist.github.com/TarasOsiris/343df8337fa2a7f80f59) - Better Defines for Unity3D.
+* [DownloadManager.cs](https://gist.github.com/asus4/2490117) - Download manager for Unity.
+* [CameraExtensions.cs](https://gist.github.com/TarasOsiris/a8904989c18424bcdf73) - A better way of manipulating the culling mask.
+* [ShowToastUnityAndroid.cs](https://gist.github.com/TarasOsiris/dec42cf3ecca6c854182f385e38dbf57) - Shows toast on Android.
+* [FBSucks.cs](https://gist.github.com/TarasOsiris/dec42cf3ecca6c854182f385e38dbf57) - Share image with text on android (works with FB).
+* [GetSocialDeepLinkingActivity.java](https://gist.github.com/TarasOsiris/1ab79165909ea01575a0) - This activity is created because we cannot get Activity.onNewIntent callback in Unity when the app is running in background.
+* [VSCode Unity Code Snippets](https://github.com/kleber-swf/vscode-unity-code-snippets) - All snippets for Unity3D development.
+* [Unity Snippets](https://github.com/anchan828/unity-snippets) - Unity3D snippets for differents IDEs.
+
+### Integrated Development Environment (IDE) <a name="ide"></a>
+
+* [Visual Studio (Windows)](https://visualstudio.microsoft.com/es/) - Official supported IDE for Unity in Windows platform. Mac version [here](https://visualstudio.microsoft.com/es/vs/mac/).
+* [Jetbrains' Rider](https://www.jetbrains.com/dotnet/promo/unity/) - Jetbrains alternative to Visual Studio.
+* [Visual Studio Code](https://code.visualstudio.com/) - Cross platform IDE built with web technologies.
+* [MonoDevelop](https://www.monodevelop.com/) - MonoDevelop editor. Initially the default editor for Unity. Now is deprecated.
+* [Consulo](http://consulo.site/) - Consulo editor.
+
+#### IDE Integrations <a name="ide-integrations"></a>
+
+* [Unity VS Toolbox](https://github.com/Naphier/Unity-VS-Toolbox) - Included in this project is a VS toolbox for most of the Monobehaviour events listed in order of execution. You'll also find a bunch of templates that can be installed so they will show up in the Add Item context menu.
+* [Unity C# 5.0 and 6.0 Integration](https://github.com/Naphier/Unity-VS-Toolbox) - This is a hack that replaces Unity's C# compiler with the latest Roslyn, which lets you write scripts in Unity using C# 7.3.
+* [VSCode Unity Debug Support](https://github.com/Unity-Technologies/vscode-unity-debug) - Unity debugging support for VS Code. ![Official](UnityResource16x16.png)
+* [VSCode Unity Integration](https://github.com/dotBunny/VSCode) - Unity Visual Studio Code Integration.
+* [Unity Tools](https://github.com/TobiahZ/unity-tools) - A Visual Studio Code Extension to provide some tools for Unity development.
+* [Resharper Unity](https://github.com/JetBrains/resharper-unity) - A proxy App to be able to open Unity 5 C# classes using the new Project Rider from Jetbrains, in Mac OS X.
+* [ProjectRider Unity](https://github.com/yonstorm/ProjectRider-Unity) - IntelliJ Project Rider integration for Unity.
+* [RiderProxy](https://github.com/siliconcat/RiderProxy) - Unity support for both ReSharper and Rider.
+* [Unity3DVim](https://github.com/NOSDuco/Unity3dVim) - Unity Vim Editor Integration for Linux.
+
+## :sparkler: Rendering & Post-Processing <a name="rendering-and-post-processing"></a>
+
+### Shaders <a name="shaders"></a>
+
+* [ShaderGraph](https://github.com/Unity-Technologies/ShaderGraph "") - Unity ShaderGraph project. ![Official](UnityResource16x16.png)
+* [ShaderGraph Example Library](https://github.com/UnityTechnologies/ShaderGraph_ExampleLibrary "") - A library of Shaders created using Unity's Shader Graph. ![Official](UnityResource16x16.png)
+* [ShaderGraph Examples (Keijiro)](https://github.com/keijiro/ShaderGraphExamples "") - Simple examples of Unity shader graphs. 
+* [ShaderGraph Examples](https://github.com/RubenCUR/ShaderGraph-Examples "") - ShaderGraph Examples for Unity 2018.1.
+* [Shader Graph Nodes](https://github.com/gilescoope/shader-graph-nodes "") - Custom Nodes for Unity Shader Graph.
+* [SG HDRP Lit](https://github.com/RemyUnity/SG-HDRP-Lit "") - Shadergraph version of the HDRP/Lit shader.
+* [SRPBatcherBenchmark](https://github.com/Unity-Technologies/SRPBatcherBenchmark "") - Various benchmark scenes for SRP batcher (both LWRP & HDRP). ![Official](UnityResource16x16.png)
+* [UnityLWRPEssentials](https://github.com/dilmerv/UnityLWRPEssentials "") - Unity Lightweight Render Pipeline with a variety of shader examples built in Shader Graph.
+* [ShaderForge](https://github.com/FreyaHolmer/ShaderForge) - A node-based shader editor giving you the artistic freedom of shader creation, with no need to code. (Was :moneybag: but now is open source and not maintained). [Asset Store Link](https://www.assetstore.unity3d.com/en/#!/content/14147)
+* [ShaderLabLab](https://github.com/rambutan2000/ShaderLabLab) - A system using T4 Templates to generate Unity ShaderLab code in the Editor.
+* [Graphics Test Framework](https://github.com/Unity-Technologies/Graphics-Test-Framework) - The UTR based Graphics Test Framework. ![Official](UnityResource16x16.png)
+
+#### Ocean
+
+* [Ocean_Community_Next_Gen](https://github.com/eliasts/Ocean_Community_Next_Gen "") - Next gen iteration of the unity community ocean shader.
+* [Ceto](https://github.com/Scrawk/Ceto "") -  Ocean system for Unity.
+* [Ocean_Mobile with Boat Physics](https://github.com/laurentClave/Ocean_mobile_with_boat_physic "")
+* [Crest Ocean Render](https://github.com/huwb/crest-oceanrender "") - An advanced ocean system implemented in Unity3D.
+* [Phillips Ocean](https://github.com/Scrawk/Phillips-Ocean "") - A ocean using Phillips spectrum in Unity.
+* [WaveShaderDemo](https://github.com/EsProgram/WaveShaderDemo "")
+
+#### Water
+
+* [Unity 2D Water](https://github.com/Brajanowski/unity-2d-water "") - Simple water in Unity for 2D platform games.
+* [Water2D Unity](https://github.com/valryon/water2d-unity "") - A simple shader + example of a water surface with reflection in 2D.
+* [Unity Water Shader2D](https://github.com/real-marco-b/unity-water-shader2d "") - A 2D water shader for Unity.
+* [Water Shader](https://github.com/tuxalin/water-shader "") - Procedural water shader for general use. (#PROCEDURAL-GENERATION)
+* [waterShaderUnity](https://github.com/MattCairns/waterShaderUnity "") - Playing with creating a water shader using Gerstner waves.
+* [Unity Surface Water Shader](https://github.com/jakubshark/Unity-Surface-Water-Shader "") - A water surface shader for Unity.
+* [Lowpoly Water Shader](https://github.com/danielzeller/Lowpoly-Water-Unity "") - Low poly water with edge/shore blend. Similar to the awesome water in Monument Valley.
+* [Unity Wave Propagation Water Ripple](https://github.com/ya7gisa0/Unity-Wave-Propagation-Water-Ripple "") - Water ripple shader for Unity.
+* [UnityHDRPSimpleWater](https://github.com/flamacore/UnityHDRPSimpleWater "") - Simple water shader prepared with ShaderGraph in Unity 2018.3.6.
+* [DynamicRipples](https://github.com/SquirrelyJones/DynamicRipples "") - Dynamic ripple rendering and water surface compositing for Unity 3D.
+* [ToonWaterShader](https://github.com/IronWarrior/ToonWaterShader "") - Renders and animates toon-style waves from a noise texture and generates shoreline foam based off the depth buffer.
+
+#### Grass
+
+* [SurrealGrassShader](https://github.com/tchpowdog/SurrealGrassShader "") - PBR Grass Geometry shader for Unity.
+* [KvantGrass](https://github.com/keijiro/KvantGrass "") - Animating grass shader for Unity.
+* [UnityTerrainGrass](https://github.com/Nition/UnityTerrainGrass "") - Drop-in replacement terrain grass shaders for Unity.
+* [GrassBending](https://github.com/Elringus/GrassBending) - A replacement for Unity's terrain grass shader with alpha blended rendering and touch bending effect. (#TERRAIN)
+* [UnityHDRPTerrainDetailGrass](https://github.com/flamacore/UnityHDRPTerrainDetailGrass "") - A very simple detail shader for the new Terrain engine 2018.3+.
+
+#### Snow / Ice
+
+* [DeepSnowFootprint](https://github.com/ZGeng/DeepSnowFootprint "") - A unity shader solution to generate footprint on thick snow surfaces.
+* [Unity Frosted Glass](https://github.com/andydbc/unity-frosted-glass) - Frosted glass material made in Unity.
+* [Cracked Ice Shader](https://80.lv/articles/how-to-build-cracked-ice-in-material-editor/) - Cracked Ice material tutorial. (#TUTORIALS)
+
+#### Sand
+
+* [JourneySand](https://github.com/AtwoodDeng/JourneySand) - An Unity project to reproduce the sand rendering in Journey's style.
+
+#### Toon
+
+* [UnityToonShader](https://github.com/IronWarrior/UnityToonShader "") - Source code for Toon Shader tutorial for Unity. Has specular, rim lighting, and can cast and receive shadows.
+* [ToonShading](https://github.com/Kink3d/ToonShading "") - A collection of "Toon" shaders for Unity based on a stepped PBR approximation.
+* [LiliumToonGraph](https://github.com/you-ri/LiliumToonGraph "") - LWRP ShaderGraph Toon Shader.
+* [UnityChanToonShaderVer2 Project](https://github.com/ACIIL/UnityChanToonShaderVer2_Project "") - UTS2-AC - UnityChanToonShaderVer2 Project / v.2.0.4+ - different vrchat support and lighting manipulation and style.
+* [UnityChanToonShaderVer2_EmissiveScroll](https://github.com/tomori-hikage/UnityChanToonShaderVer2_EmissiveScroll "") - UnityChanToonShaderVer2 with EmissiveScroll.
+* [Xiexes Unity Shaders](https://github.com/Xiexe/Xiexes-Unity-Shaders "") - A re-write and restructure of XSToon.
+* [MToon](https://github.com/Santarh/MToon "") - Toon Shader with Unity Global Illumination.
+
+#### Cel Shading
+
+* [Wind Waker Shader](https://github.com/albertomelladoc/Wind-Waker-Shader) - Cel Shading of two thresholds with a blur/gradient between them for Unity.
+
+#### Retro
+
+* [PSX Retroshader](https://github.com/dsoft20/psx_retroshader "") - Shader that "emulates" the rendering style of PS1.
+* [RetroTVFX](https://github.com/KillaMaaki/RetroTVFX "") - A small collection of shaders for a range of authentic old TV effects (Composite, S-Video, RF, etc).
+* [Unity VHS Glitch](https://github.com/staffantan/unity-vhsglitch "") - Glitched VHS post-processing shader for Unity3D.
+* [RetroSuite3D](https://github.com/oxysoft/RetroSuite3D "") - Some image effects and shaders to achieve a retro look in Unity.
+* [Unity Glitch](https://github.com/staffantan/unityglitch "") - Glitch post-processing shader for Unity3D.
+
+#### Mirror
+
+* [Unity Realtime Planar Mirror](https://github.com/MaxwellGengYF/Unity-Realtime-Planar-Mirror "") - Powerful, deeply optimized real-time planar mirror in Unity.
+* [Projection Examples Using Mirrors](https://github.com/joansolroo/ProjectionExamples-UsingMirrors "") - This is a simple example of how projectors interact with mirrors.
+* [Mirror](https://github.com/nkjzm/Mirror) - A mirror script.
+
+#### Hologram
+
+* [HologramShader](https://github.com/andydbc/HologramShader "") - Test of an hologram material made in Unity.
+* [Unity HologramShield](https://github.com/paulgswanson/Unity-HologramShield "") - An hologram shield shader for Unity.
+* [ReinhardtLike Shield ShaderForge](https://github.com/vaxkun/ReinhardtLike-Shield-ShaderForge "") - A shader made to emulate Reinhardt shield effect using ShaderForge on Unity3D.
+* [HoloShield](https://github.com/AdultLink/HoloShield "") - Highly customizable sci-fi shield / force field shader for Unity3D.
+
+#### Wireframe
+
+* [Unity Wireframe](https://github.com/Chaser324/unity-wireframe "") - General purpose wireframe shaders for use in Unity.
+* [The Amazing Wireframe Shader](https://assetstore.unity.com/packages/vfx/shaders/wireframe-shader-the-amazing-wireframe-shader-18794?aid=1100l35sb&utm_source=aff "") :moneybag:
+* [BarabaraShader](https://github.com/sugi-cho/BarabaraShader "") - Global Outline - Unity (3D/UI/Sprites) full-screen masked outline shader.
+
+#### Outline
+
+* [UltimateOutline](https://github.com/Shrimpey/UltimateOutline "") - The easiest way to achieve outlines in Unity.
+* [UnityOutlineShader](https://github.com/IronWarrior/UnityOutlineShader) - Source code for Outline Shader tutorial for Unity. Detects edges in a scene using the depth and normals buffers.
+* [Globaloutline](https://github.com/rickomax/globaloutline) - Source code for Outline Shader tutorial for Unity. Detects edges in a scene using the depth and normals buffers.
+
+
+#### Dissolve
+
+* [SphereDissolve](https://github.com/AdultLink/SphereDissolve "") - Customizable procedural spherical dissolve shader for Unity3D, for all your customizable procedural spherical dissolve needs!
+* [Unity3D Dissolve Shader](https://github.com/kwnetzwelt/unity3d-dissolve-shader "") - A shader and example scene for a shader which is able to create objects starting from a world position outwards.
+* [VerticalDissolve](https://github.com/AdultLink/VerticalDissolve) - Procedural vertical dissolve shader. Highly customizable. Tweak edge color, noisiness & waviness, rim light, emission scrolling and more.
+
+#### NPR (Non Photorealistic Rendering)
+
+* [Kamakura Shaders](https://github.com/kayac/kamakura-shaders) - Kamakura Shaders is a collection of shaders and components focusing on Non-Photorealistic Rendering for Unity with a bunch of features and adjustable parameters in a user-friendly interface.
+
+#### Audio
+
+* [Unity Sound Shader Test](https://github.com/rngtm/Unity-SoundShaderTest "") - Audio synthesis test using shader on Unity. (#Audio)
+* [Unity3D Liquidy Surface Shader](https://github.com/avseoul/Unity3D_LiquidySurfaceShader "") - An audio reactive shader in Unity3D (#Audio)
+
+#### Hair / Fur
+
+* [Unity Hair Shader](https://github.com/AdamFrisby/UnityHairShader "") - A hair shader for Unity 5 originally built for the sine.space virtual world.
+* [NVIDIAHairWorksIntegration](https://github.com/unity3d-jp/NVIDIAHairWorksIntegration) - NVIDIA Hair Works Integration for Unity.
+* [Stanford Bunny Fur With Unity](https://github.com/chenjd/Stanford-Bunny-Fur-With-Unity) - Using the Geometry Shader to generate fur on GPU.
+* [Marschner Hair Unity](https://github.com/maajor/Marschner-Hair-Unity) - Implement Marschner Shading Model In Unity.
 
-# Resources
+#### Triplanar Mapping
 
-## Tips and Tricks
+* [StandardTriplanar](https://github.com/keijiro/StandardTriplanar "") - Unity's standard shader with triplanar mapping.
+
+#### Interior Mapping
+
+* [Unity InteriorMapping](https://github.com/Gaxil/Unity-InteriorMapping "") - Interior mapping shader for Unity with a sample scene.
+
+#### Car Painting
+
+* [CarPaint](https://github.com/Roland09/CarPaint) - Material for the Unity Standard Assets Car.
+
+#### Mobile
+
+* [Unity Standard Shader Mobile](https://github.com/nylonee/unity-standard-shader-mobile "") - Mobile optimised shader for Unity 3D.
+
+#### Others
+
+* [Dota2 Shader for Unity](https://github.com/JamesDante/Dota2-Shader-For-Unity "") - Dota2 Shader for Unity Engine.
+* [StandardGeometryShader](https://github.com/keijiro/StandardGeometryShader "") - An example of a geometry shader with Unity's standard lighting model support.
+* [Procedural Stochastic Texturing](https://github.com/UnityLabs/procedural-stochastic-texturing) - Modified Unity Standard shader implementing Procedural Stochastic Texturing.
+* [NoiseBall](https://github.com/keijiro/NoiseBall "") - Mesh deforming shader example (Unity).
+* [NoiseBall2](https://github.com/keijiro/NoiseBall2 "") - A small example of procedural modeling with compute shaders.
+* [NoiseBall3](https://github.com/keijiro/NoiseBall3 "") - A Unity example that shows how to use the new implementation of DrawProcedural.
+* [Unity Compute Shader Test](https://github.com/Arlorean/UnityComputeShaderTest "") - Unity Compute Shader Realtime Ray Tracing.
+* [Unity Metaballs](https://github.com/ya7gisa0/Unity Metaballs "") - Metaball shader example.
+* [AnisotropicStandardShader](https://github.com/Kink3d/AnisotropicStandardShader "") - A modified version of Unity's Standard Shader using an Anisotropic GGX BRDF.
+* [Unity Dithered Transparency Shader](https://github.com/gkjohnson/unity-dithered-transparency-shader "") - Unity material and shader for applying clipped, dithered transparency.
+* [Rimlight](https://github.com/AdultLink/Rimlight "") - Customizable rimlight shader for Unity that includes pulsation and noise scrolling.
+* [BloodFx](https://github.com/keijiro/BloodFx "") - Procedural blood stain shader.
+* [SquashAndStretch](https://github.com/PandaArcade/SquashAndStretch "") - A Unity 2018.10b12 project where I am experimenting with a squash and stretch shader.
+* [Hatching Shader](https://github.com/nkihrk/HatchingShader "")
+* [UnitySpriteShaders](https://github.com/traggett/UnitySpriteShaders "") - An Uber Shader for rendering Sprites in Unity.
+* [Splatoonity](https://github.com/SquirrelyJones/Splatoonity "") - Splatoon like painting in Unity3D.
+* [uCurvedScreen](https://github.com/hecomi/uCurvedScreen "") - Curved-screen shader aseet for Unity.
+* [Unity CommandBuffer Refraction](https://github.com/Doppelkeks/Unity-CommandBufferRefraction "") - Blurred Refraction shaders created with Amplify Shader Editor using Command Buffers. Cool for glass looking materials, works without Amplify Shader Editor too.
+* [uRaymarching](https://github.com/hecomi/uRaymarching "") - Raymarching Shader Generator in Unity.
+* [Unity Marching Cubes GPU](https://github.com/pavelkouril/unity-marching-cubes-gpu "") - GPU ComputeShader implementation of Marching Cubes algorithm.
+* [Unity3DCrossSectionShader](https://github.com/Dandarawy/Unity3DCrossSectionShader "") - CG shader for unity3D to create a cross section through meshes.
+* [CrossFadingLod](https://github.com/keijiro/CrossFadingLod "") - Cross-fading LOD shader example.
+* [Unity NextGenSprites](https://github.com/paulgswanson/UNity-NextGenSprites "")
+* [Unity Texture Curve](https://github.com/andydbc/unity-texture-curve "") - Example showing how to bake an AnimatedCurve into a Texture and use it in a shader.
+* [VR Time Shaders](https://github.com/y23586/vrchat-time-shaders "") - Utility shaders to implement time-related stuffs in VRChat.
+* [TexturePanner](https://github.com/AdultLink/TexturePanner) - This repository hosts a shader for Unity3D whose main goal is to facilitate the creation of neon-like signs, conveyor belts and basically whatever based on scrolling textures.
+* [VilarVRC](https://github.com/Vilar24/VilarVRC) - Vilar's Shaders for VRChat.
+* [Dual Quaternion Skinning for Unity](https://github.com/ConstantineRudenko/DQ-skinning-for-Unity)
+* [UnityGPUNoise](https://github.com/GlitchEnzo/UnityGPUNoise) - A set of shaders to help perform various Noise functions on the GPU.
+* [Pixel Render Unity3D](https://github.com/kode80/pixelrenderunity3d) -  PixelRender is a complete system for realtime rendering of 3D scenes as 2D pixel art in Unity3D. (#2D) (#EFFECTS) (#UTILITIES)
+* [ShadowDrawer](https://github.com/keijiro/ShadowDrawer) - Shadow matte shader for Unity.
+* [Flow Map Shader](https://gist.github.com/TarasOsiris/e0e6e6c3b8fdb0d8074b) - Flow Map Shader for Unity3D. Used with Sprites.
+* [CurveTexture](https://github.com/slipster216/CurveTexture) - Easily encode arbitrary curves into textures and apply them to materials or global shader properties.
+* [QuadWarp](https://github.com/fuqunaga/QuadWarp) - QuadWarp sample code for Unity.
+* [Unity3D Lightning Shader](https://github.com/ya7gisa0/Unity3D-Lightning-Shader "") - Procedural Lightning Shader for Unity3D.
+* [Unity HDRP SpeedTree Materials](https://github.com/flamacore/UnityHDRPSpeedTreeMaterials "") - Material replacements for getting SpeedTree models to work on HDRP Terrain. Highly experimental.
+* [Noise Texture Particles](https://github.com/Dafirex/Noise-Texture-Particles "") - Shader for Unity particles that use noise textures as inputs to create different patterns.
+* [Analytical Normals 3D](https://github.com/ya7gisa0/Analytical-Normals-3D "")
+* [UnityComputeShaderTest](https://github.com/kitasenjudesign/UnityComputeShaderTest "") - Compute shader example.
+* [OpaqueActiveCamo](https://github.com/SquirrelyJones/OpaqueActiveCamo "") - Unity 3D project showing opaque active camouflage rendering technique.
+* [Zagara](https://github.com/justalittlefat/Zagara "") - A tiny softrendering engine based on Unity3D. See [more](https://github.com/yqlizeao/UnitySoftRender).
+* [HSVA Unity](https://github.com/greggman/hsva-unity "") - A Hue Saturation Value adjustment shader for Unity. Useful for making lots of character colors.
+* [Unity3D Plane Clipping](https://github.com/toxicFork/Unity3D-Plane-Clipping "") - Plane clipping shaders for Unity3D 5. Extends the Standard shader.
+* [ExtendStandard](https://github.com/chenyong2github/ExtendStandard "") - Extended Unity's Standard PBR shader.
+* [UIRays](https://github.com/PandaArcade/UIRays "") - An example of a simple UI rays shader.
+* [SSS Unity](https://github.com/sebastianhein/sss-unity "") - Sub Surface Scattering Approximation Shader for Unity 3D.
+
+#### Collections
+
+* [Lux](https://github.com/larsbertram69/Lux "") - Open source physically based shader framework for Unity.
+* [Awesome Unity Shader](https://github.com/QianMo/Awesome-Unity-Shader "") - About cool Unity3D Shaders.
+* [ShurikenPlus](https://github.com/keijiro/ShurikenPlus "") - A collection of custom shaders for Unity particle system (Shuriken).
+* [Fun Frag Shaders](https://github.com/makitsune/fun-frag-shaders "") - Fun fragment shaders you can use in Unity.
+* [Cubeds Unity Shaders](https://github.com/cubedparadox/Cubeds-Unity-Shaders "") - A compilation of custom shaders for Unity3D.
+* [Arktoon Shaders](https://github.com/synqark/Arktoon-Shaders "") - Alternative Unity shaders made by synqark.
+* [Neitri Unity Shaders](https://github.com/netri/Neitri-Unity-Shaders "") - A compilation of shaders for Unity3D and VRChat.
+* [Syns Unity Shaders](https://github.com/synlogic/Syns-Unity-Shaders "") - A set of fun/useful shaders for use in VRChat and Unity itself.
+* [Okano's Unity Shaders](https://github.com/kayteh/shaders "") - Big mishmash of reworked, original, and mixed shaders.
+* [Unity Shaders](https://github.com/knapeczadam/Unity-Shaders "") - Shader demo - More than 300 examples.
+* [Unity Shaders](https://github.com/igradeca/Unity-Shaders) - Unity project about reseach on shaders and particle system.
+* [Unity Visualizations](https://github.com/WorldOfZero/UnityVisualizations "") - Collection of shaders and visual effects created for Unity 3D.
+* [Unity Shader Sketches](https://github.com/setchi/Unity-ShaderSketches) - Sketches made with ShaderLab in Unity.
+* [ShaderProject](https://github.com/ellioman/ShaderProject) - A container for all sorts of handy shaders.
+* [Unity3D CG Programming](https://github.com/przemyslawzaworski/Unity3D-CG-programming "") - Various shaders.
+* [Shaders](https://github.com/ewersp/Shaders "") - A collection of shaders written in CG/ShaderLab for Unity.
+* [Shaders for Unity](https://github.com/wolf96/shader_for_unity "") - Some shaders for unity,such as Post processing, brdf, rendering and so on.
+
+#### Utilities
+
+* [ConfigurableShaders](https://github.com/supyrb/ConfigurableShaders "") - Unity Shader enum references.
+* [foo.md](https://gist.github.com/aras-p/b2a0952161cb0c2b2cc0) - Controlling fixed function states from materials/scripts in Unity. By aras-p.
+* [hlsl2glslfork](https://github.com/aras-p/hlsl2glslfork "") - HLSL to GLSL language translator based on ATI's HLSL2GLSL. Used in Unity.
+* [Voxel Performance](https://github.com/charlesgriffiths/VoxelPerformance "") - High performance voxel landscape functions for Unity 5.3+ using compute and geometry shaders.
+
+### Skyboxes <a name="skyboxes"></a>
+
+* [UnitySkyboxShaders](https://github.com/keijiro/UnitySkyboxShaders "") - Custom skybox shaders.
+* [CloudSkybox](https://github.com/keijiro/CloudSkybox "") - Skybox shader with volumetric clouds.
+* [UnitySkyboxShaders](https://github.com/keijiro/UnitySkyboxShaders "") - Custom skybox shaders.
+* [Swarm](https://github.com/keijiro/Swarm "") - An example of use of compute shaders and procedural instancing.
+* [Skybox](https://assetstore.unity.com/packages/2d/textures-materials/sky/skybox-4183?aid=1100l35sb&utm_source=aff "") - Free skybox from the Asset Store.
+* [LSky Dynamic Skydome Unity](https://github.com/Rallec/LSky-Dynamic-Skydome-Unity "") - Dynamic skydome for Unity3D.
+* [LSky Dynamic Skydome Unity (Another)](https://github.com/Vytek/LSky-Dynamic-Skydome-Unity "") - Dynamic skydome for Unity3D.
+* [Celeste Sky Core Unity](https://github.com/Rallec/Celeste-Sky-Core-Unity "") - Dynamic Sky for Unity.
+* [CloudSkybox](https://github.com/AsehesL/CloudSkybox "") - Skybox shader with volumetric clouds.
+* [DarkAndStormy](https://github.com/SquirrelyJones/DarkAndStormy "") - Overcast clouds with crazy colors skybox shader for Unity3D.
+* [LSky Unity](https://github.com/Rallec/LSky-Unity "") - Dynamic Skydome for unity (built in render).
+
+### Effects <a name="effects"></a>
+
+* [Scriptable Render Pipeline](https://github.com/Unity-Technologies/ScriptableRenderPipeline "") - Designed to give artists and developers the tools they need to create modern, high-fidelity graphics in Unity. ![Official](UnityResource16x16.png)
+* [Unity MPipeline Framework](https://github.com/MaxwellGengYF/Unity-MPipeline-Framework "") - A convenient programming framework for Scriptable Rendering Pipeline.
+* [Testbed HDRP](https://github.com/keijiro/TestbedHDRP "") - Testbed project for Unity HDRP (High Definition Render Pipeline).
+* [LookingGlassRenderPipeline](https://github.com/wotakuro/LookingGlassRenderPipeline "") - Sample of LookingGlassRenderPipeline.
+* [Post-Processing Stack](https://github.com/Unity-Technologies/PostProcessing "") - Components for camera and other effects. ![Official](UnityResource16x16.png)
+* [Skinner](https://github.com/keijiro/Skinner "") - Special Effects with Skinned Mesh in Unity.
+* [SkinnedMeshCombiner](https://github.com/joshcamas/skinnedmeshcombiner "") - A Skinned Mesh Combiner that doesn't require actual skinned meshes as inputs.
+* [KinoBokeh](https://github.com/keijiro/KinoBokeh "") - Depth of field effect for Unity
+* [Kinoglitch](https://github.com/keijiro/KinoGlitch "") - Video glitch effects for Unity.
+* [KinoContour](https://github.com/keijiro/KinoContour "") - Contour line filter for Unity.
+* [Page curl effect for Unity3D](https://github.com/Dandarawy/Unity3DBookPageCurl "") - Page curl effect for Unity3D Github Page
+* [Outline Effect](https://github.com/cakeslice/Outline-Effect "") - Outline Image Effect for Unity.
+* [Outline Effect (fork)](https://github.com/lordofduct/Outline-Effect "") - Outline Image Effect for Unity.
+* [Outline Effect but its faster](https://github.com/JimmyCushnie/Outline-Effect-but-its-faster "") - A fork of Outline Effect with improved performance.
+* [Unity 5 Effects](https://github.com/i-saint/Unity5Effects) - Effect storage space for Unity 5.
+* [KinoFringe](https://github.com/keijiro/KinoFringe "") - Chromatic aberration image effect for Unity.
+* [OIT_Lab](https://github.com/candycat1992/OIT_Lab "") - Order-independent Transparent in Unity.
+* [Unity Dither4444](https://github.com/keijiro/unity-dither4444 "") - AssetPostProcessor for making high-quality 16-bit color textures in Unity.
+* [Super Blur](https://github.com/PavelDoGreat/Super-Blur "") - Screen and UI gaussian blur for Unity.
+* [RainDropEffect](https://github.com/EdoFrank/RainDropEffect "") - RainDropEffect for the Unity Asset Store.
+* [LensRain](https://github.com/Kink3d/LensRain "") - A screen-space lens rain effect using Unity's V2 Post-processing framework.
+* [SSMS](https://github.com/OCASM/SSMS "") - Screen space multiple scattering for Unity. 
+* [KinoFog](https://github.com/keijiro/KinoFog "") - Global fog effect for Unity.
+* [KinoMotion](https://github.com/keijiro/KinoMotion "") - Motion blur post-processing effect for Unity.
+* [Sprite Glow](https://github.com/Elringus/SpriteGlow "") - A sprite glow effect for Unity game engine.
+* [Temporal](https://github.com/playdeadgames/temporal "") - Temporal Reprojection Anti-Aliasing for Unity 5.0+.
+* [Firefly](https://github.com/keijiro/Firefly "") - Unity ECS example for special effects.
+* [DepthInverseProjection](https://github.com/keijiro/DepthInverseProjection "") - An example showing how to inverse-project depth samples into the view/world space in Unity.
+* [Fragments](https://github.com/keijiro/Fragments "") - Fragment mesh objects for particle effects in Unity.
+* [UnityPCSS](https://github.com/TheMasonX/UnityPCSS "") - Nvidia's PCSS soft shadow algorithm implemented in Unity.
+* [SMAA](https://github.com/Chman/SMAA "") - A highly customizable implementation of Subpixel Morphological Antialiasing for Unity.
+* [uSMAA](https://github.com/ArieLeo/uSMAA "") - SMAA implementation for Unity.
+* [IMP](https://github.com/xraxra/IMP "") - Billboard imposter baking for Unity.
+* [PotentiallyVisibleSetPlugin](https://github.com/nashnie/PotentiallyVisibleSetPlugin "")
+* [CP_SSSSS](https://github.com/CustomPhase/CP_SSSSS "") - Naive screen-space subsurface scattering solution for Unity 5.
+* [Unity Signed Distance Field Shadow](https://github.com/chenjd/Unity-Signed-Distance-Field-Shadow "") - Signed Distance Field Shadow in Unity.
+* [Bloom Effect Unity](https://github.com/hdmmY/Bloom-Effect-Unity "") - Bloom Effect Implementation.
+* [Unity ProjectionSpray v2](https://github.com/sugi-cho/Unity-ProjectionSpray-v2 "")
+* [Unity Screen Space Reflection](https://github.com/MaxwellGengYF/Unity-Screen-Space-Reflection "") - Clearly Screen Space Reflection!
+* [kDecals](https://github.com/Kink3d/kDecals "") - A forward projector Decal system for Unity.
+* [SkinnedDecals](https://github.com/lhlvieira/SkinnedDecals "") - A simple un-optimized skinned decal system for Unity.
+* [ComputeStochasticReflections](https://github.com/simeonradivoev/ComputeStochasticReflections "") - Compute Stochastic Screen Space Reflections for unity post processing.
+* [NoiseRings](https://github.com/kaelb/NoiseRings "") - NoiseRings is a noisy emanating ring effect for Unity adapted with permission from the VR music video experience Chorus.
+* [UnityEffects](https://github.com/vivekhnz/UnityEffects "") - A collection of video game effects recreated in Unity.
+* [Unity BOTW Screenspace Rain](https://github.com/thnewlands/unity-botw-screenspace-rain "") - A study of screenspace rain impacts in Breath of the Wild.
+* [Helicopter Effect](https://twitter.com/unity3dexpert/status/1050240849085431808)
+* [Facepunch.Highlight](https://github.com/Facepunch/Facepunch.Highlight) - Mesh outline effect.
+* [FoW_Shadow_Map](https://github.com/krazzei/FoW_shadow_map "") - An example project of how to do fog of war in Unity 3D.
+* [MeshEffectForTextMeshPro](https://github.com/mob-sakai/MeshEffectForTextMeshPro "") - Mesh effect components for TextMeshPro in Unity.
+* [uHomography](https://github.com/hecomi/uHomography "") - Homography Transformation Image Effect for Unity.
+* [FastPostProcessing](https://github.com/demonixis/FastPostProcessing "") - A small and fast post processing stack (only one pass) targeting mobile and mobile VR for Unity. (#VIRTUAL REALITY)
+* [Heatwave](https://github.com/andrewgotow/Heatwave "") - A simple post-processing effect for the Unity game engine which renders small-scale distortions.
+* [CameraProjector](https://github.com/fuqunaga/CameraProjector "") - Project the image captured by the camera onto the object. (#CAMERA)
+* [ProjectionMapping Unity](https://github.com/sugi-cho/ProjectionMapping-unity "") - Simple Projection-Mapping tool for Unity (WIP).
+* [RDSystem](https://github.com/keijiro/RDSystem "") - Reaction-diffusion system with CustomRenderTexture.
+* [HDRP ReactionDiffusionSystem](https://github.com/alelievr/HDRP_ReactionDiffusionSystem "") - Reaction diffusion system using HDRP and custom render textures.
+* [Unity Voxel](https://github.com/mattatz/unity-voxel "") - Mesh voxelization for Unity.
+* [UnityWaveEquation](https://github.com/AsehesL/UnityWaveEquation "")
+* [Deform Prototype](https://github.com/keenanwoodall/Deform-Prototype "") - My second attempt at a framework for deforming meshes in the editor and at runtime in Unity. (Not in development)
+* [Static Blured Screen](https://github.com/mob-sakai/StaticBluredScreen) - Non-realtime (=static) screen blur for Unity. Easy to use background for dialogs. (#CAMERA)
+* [KinoObscurance](https://github.com/keijiro/KinoObscurance) - Screen Space Ambient Obscurance image effect for Unity.
+* [UnityEffects](https://github.com/kode80/UnityEffects) - A collection of free to use effects for Unity3D.
+* [OneStepEffects](https://github.com/makoto-unity/OneStepEffects) - You can add beautiful image effects by one step.
+* [KinoBloom](https://github.com/keijiro/KinoBloom) - Bloom effect for Unity.
+* [Perfect Spheres](https://github.com/gilescoope/perfect-spheres) - A system for rendering spheres cheaply and accurately.
+* [A Crack In The Slab](https://github.com/Broxxar/ACrackInTheSlab) - An exploration to recreate an effect from Dishonored 2 in Unity.
+* [SonarFx](https://github.com/keijiro/SonarFx) - Sonar effect for Unity.
+* [DistortionImageEffect](https://github.com/slipster216/DistortionImageEffect) - An image effect based distortion/heat effect that doesn't use grab pass.
+* [kode80SSR](https://github.com/kode80/kode80SSR) - An open source screen space reflections implementation for Unity3D 5.
+* [Cinematic Image Effects](https://bitbucket.org/Unity-Technologies/cinematic-image-effects) - Unity official cinematic image effects for your camera. ![Official](UnityResource16x16.png)
+* [PcxEffects](https://github.com/keijiro/PcxEffects)
+* [ViewportPerspective](https://github.com/cecarlsen/ViewportPerspective) - Camera image effect for adjusting the viewport perspective using four corner handles. (#CAMERA)
+* [Unity Ground Truth Ambient Occlusison](https://github.com/haolange/Unity-Ground-Truth-Ambient-Occlusion) - A physically based screen space ambient occulsion post processing effect.
+* [Volumetric Clouds](https://github.com/jaagupku/volumetric-clouds) - Volumetric clouds in Unity.
+* [Shader Effects](https://github.com/NoxWings/Shader-Effects) - Unity shader effects.
+* [Glow](https://github.com/rakkarage/Glow) - Unity ShaderGraph effect test.
+* [EdgeDetect-PostProcessingUnity](https://github.com/jean-moreno/EdgeDetect-PostProcessingUnity) - Unity legacy Edge Detect image effect ported to Post Processing Stack v2.
+* [StaticBluredScreen](https://github.com/mob-sakai/StaticBluredScreen) - Non-realtime (=static) screen blur for Unity. Easy to use background for dialogs.
+* [Koch's Fractals](https://github.com/hww/koch_fractals) - Koch Fractals Demo for Unity.
+* [SDF Gen Unity](https://github.com/mmerchante/sdf-gen-unity) - A signed distance function generator running inside Unity.
+* [SDFr](https://github.com/xraxra/SDFr) - A signed distance field baker for Unity 
+* [MeshToSDF](https://github.com/aman-tiwari/MeshToSDF) - Convert a mesh to an SDF for the Visual Effect Graph in realtime.
+* [UnitySlitScan](https://github.com/kitasenjudesign/UnitySlitScan) - Simple time-displacement filter (slit-scan) on Unity.
+* [Crystal Caustics](https://github.com/CJT-Jackton/Crystal-Caustics) - Approximated crystal caustics effect in real-time.
+* [Smrvfx](https://github.com/keijiro/Smrvfx) - An example that shows how to pass data from a skinned mesh renderer to a visual effect graph.
+* [SE Natural Bloom Dirty Lens](https://github.com/sonicether/SE-Natural-Bloom-Dirty-Lens) - (Legacy) post-processing effect for Unity.
+* [Colorgrade](https://github.com/jarnik/colorgrade) - Color Grading for Unity.
+* [Unity PostProV2 User LUT And Z Grading](https://github.com/Philipp-Seifried/Unity-PostProV2-User-LUT-And-Z-Grading) - Z-Based Color Grading and Separate User LUT for Unity's "Post-Processing Stack V2".
+* [PixelVision](https://github.com/n1ckfg/PixelVision) - Pixel effect + LUT for Unity 2017.
+
+
+### Particle Systems (VFX) <a name="particle-systems"></a>
+
+* [KvantSpray](https://github.com/keijiro/KvantSpray "") - Object instancing/particle animation system for Unity.
+* [KvantWall](https://github.com/keijiro/KvantWall "") - GPU accelerated object array animator for Unity. (#ANIMATION)
+* [Voxelman](https://github.com/keijiro/Voxelman "") - Unity ECS + C# Job System example.
+* [GPU Particles](https://github.com/Robert-K/gpu-particles "") - A GPU Particle System for Unity.
+* [KvantWig](https://github.com/keijiro/KvantWig "") - Non-realistic hair simulation in Unity.
+* [ParticleEffectForUGUI](https://github.com/mob-sakai/ParticleEffectForUGUI "") - This plugin provide a component to render particle effect for uGUI in Unity 2018.2+. The particle rendering is maskable and sortable, without Camera, RenderTexture or Canvas.
+* [ShinyEffectForUGUI](https://github.com/mob-sakai/ShinyEffectForUGUI) - Shiny effect of uGUI, which does not need mask or normal map.
+* [KvantStream](https://github.com/keijiro/KvantStream "") - A simple GPU particle system for Unity.
+* [GPU Particles](https://github.com/Robert-K/gpu-particles "") - A GPU Particle System for Unity.
+* [CurlNoiseParticleSystem](https://github.com/edom18/CurlNoiseParticleSystem "") - Particle system using Curl Noise for Unity.
+* [HoudiniEngineForUnity_deprecated](https://github.com/sideeffects/HoudiniEngineForUnity_deprecated "") - Houdini Engine for Unity (Deprecated).
+* [FluvioFX](https://github.com/thinksquirrel/fluviofx "") - Fluid dynamics for Unity's VFX graph.
+* [Effekseer](https://github.com/effekseer/Effekseer "") - A tool editing particle effects.
+* [Unity Mesh Triangulator](https://github.com/alexmuab/unity-mesh-triangulator "") - Explode into triangles any mesh you want!
+* [OffScreenParticleRendering](https://github.com/slipster216/OffScreenParticleRendering "") - Off Screen Particle Rendering system for Unity.
+* [UnityParticleGalaxyGPGPU](https://github.com/etienne-p/UnityParticleGalaxyGPGPU "") - A galaxy particle system running on the GPU, made with Unity.
+* [AnimationParticleSystem Unity](https://github.com/sugi-cho/AnimationParticleSystem-Unity "") - A simple example of usage of Animated-Mesh-Surface-Position-Texture-Generator, SurfaceSamplerUnity, ParticleSystem VertexStreams and CustomData.
+* [UnityParticleSystemPreview](https://github.com/akof1314/UnityParticleSystemPreview "") - Unity ParticleSystem Preview.
+* [Unity Particle Scaler](https://github.com/minhhh/unity-particle-scaler "") - Convenient Editor Window to scale Unity's Shuriken Particle System. (#EXTENSIBILITY)
+* [ParticleCloudVRC](https://github.com/lukis101/ParticleCloudVRC "") - Interactable shader-based particle system for VRChat/Unity. (#SHADERS) (#VIRTUAL-REALITY)
+* [GPUTrail](https://github.com/fuqunaga/GPUTrail "") - Trails with ComputeShader implementtaion for Unity.
+* [GPUPTrail](https://github.com/Butadiene/GPUPTrail "")
+* [TrailBoids](https://github.com/keijiro/TrailBoids "") - Just tried making boids with particle trails.
+* [KvantSwarm](https://github.com/keijiro/KvantSwarm "") - Flowing line renderer for Unity.
+* [OutLine Geometry](https://github.com/yuyujunjun/OutLine_Geometry "") - VFX using Outline And Geometry.
+* [LaspVfx](https://github.com/keijiro/LaspVfx "") - Audio reactive Unity VFX with LASP.
+* [ParticleFeatures_2018.3](https://github.com/UnityTechnologies/ParticleFeatures_2018.3 "") - A project of examples of new Particle Features in Unity 2018.3. ![Official](UnityResource16x16.png)
+* [VoxToVFX](https://github.com/Zarbuz/VoxToVFX "") - Import a MagicaVoxel project to Unity using the new VFX Graph.
+
+### Lightning / Points of Clouds <a name="lightning-points-clouds"></a>
+
+* [Aura](https://github.com/raphael-ernaelsten/Aura "") - Volumetric Lighting for Unity.
+* [SEGI](https://github.com/sonicether/SEGI "") - A fully-dynamic voxel-based global illumination system for Unity with Single Pass, Instanced & Forward/Deferred Rendering.
+* [Lightmap Switching Tool](https://github.com/laurenth-unity/lightmap-switching-tool "") - Tool that allows switching different baked lightmap sets on a unity scene at runtime.
+* [Light Probe Populator](https://github.com/alexismorin/Light-Probe-Populator "") - Automatic Unity Light Probe Generation.
+* [Volumetric Lights](https://github.com/SlightlyMad/VolumetricLights "") - Volumetric Lights for Unity.
+* [LightShafts](https://github.com/robertcupisz/LightShafts "") - A light shafts (volumetric shadows) effect for Unity.
+* [Vapor](https://github.com/ArthurBrussee/Vapor "") - Volumetric Fog for Unity.
+* [AtmosphericScattering](https://github.com/SlightlyMad/AtmosphericScattering "") - Atmospheric Scattering for Unity.
+* [Unity Volumetric Fog](https://github.com/SiiMeR/unity-volumetric-fog "") - Volumetric fog implementation in Unity.
+* [Unity Volumetric Light](https://github.com/MaxwellGengYF/Unity-Volumetric-Light "") - A powerful volumetric light plugin based on post-processing in Unity3D.
+* [Unity Volume Sampler](https://github.com/mattatz/unity-volume-sampler "") - Mesh volume sampler with voxelizer & 3D poisson disk sampling for Unity.
+* [Unity Volume Rendering](https://github.com/mattatz/unity-volume-rendering "") - Volume rendering by object space raymarching for Unity.
+* [DFVolume](https://github.com/keijiro/DFVolume "") - Distance-field volume generator for Unity.
+* [Unity Volumetric Fog](https://github.com/SiiMeR/unity-volumetric-fog "") - Volumetric fog implementation in Unity.
+* [LiveScan3D-Hololens](https://github.com/MarekKowalski/LiveScan3D-Hololens "") - A Unity application for receiving and rendering point clouds on Hololens and other devices. (#MIXED REALITY)
+* [Simple Light Probe Placer](https://github.com/AlexanderVorobyov/simple-light-probe-placer) - It is simple tool for Unity3d and it help you easily place Light Probes in your scene.
+* [LightProbesPlacement](https://github.com/laurenth-unity/LightProbesPlacement) - Unity project showing how to use the custom Package LightProbesVolumes for placing lightprobes automatically.
+* [VolumetricLinesUnity](https://github.com/johannesugb/VolumetricLinesUnity) - Source of the Volumetric Lines Asset from Unity's Asset Store.
+* [ProbePolisher](https://github.com/keijiro/ProbePolisher) - Light probe editor for Unity.
+* [LightProbeUtility](https://github.com/keijiro/LightProbeUtility "") - Applying light probes to a mesh drawn with Graphics.DrawMesh.
+* [Pcx](https://github.com/keijiro/Pcx "") - Point cloud importer & renderer for Unity.
+* [PointCloudUnity](https://github.com/mirobyrtus/PointCloudUnity "") - Point cloud loader.
+* [SpriteLightKit](https://github.com/prime31/SpriteLightKit "") - Blended lighting system for Unity that works with standard Sprites. (#2D)
+* [ContactShadows](https://github.com/keijiro/ContactShadows "") - Experimental implementation of contact shadows for Unity.
+* [Shadow Volumes Toolkit](https://github.com/charblar/shadow-volumes-toolkit "") - Dynamic, pixel-perfect shadows based on the Shadow Volume algorithm. (#ARCHIVED)
+* [Unity Deferred Lighting Model](https://github.com/MaxwellGengYF/Unity-Deferred-Lighting-Model "") - Optimized lighting processing shaders for deferred rendering path.
+* [Unity Ground Truth Ambient Occlusion](https://github.com/MaxwellGengYF/Unity-Ground-Truth-Ambient-Occlusion "") - A physically based screen space ambient occulsion post processing effect.
+* [Unity SRP VXGI](https://github.com/Looooong/Unity-SRP-VXGI "") - Voxel-based Global Illumination using Unity Scriptable Render Pipeline.
+* [ShadowVolume](https://github.com/chengkehan/ShadowVolume "") - Shadow Volume for Static-Scene-Object of Unity.
+* [Brunetons Improved Atmospheric Scattering](https://github.com/greje656/Brunetons-Improved-Atmospheric-Scattering "") -  Unity port of Brunetons improved atmospheric scattering.
+* [PointCloudLoader](https://github.com/rctheriot/PointCloudLoader "") -  A Point Cloud loading utility for Unity.
+* [PlannarShadowForUnity](https://github.com/ozlael/PlannarShadowForUnity "") - Planar Shadow is very cheap and useful for mobile games.
+* [CascadedShadowMapping](https://github.com/chenyong2github/CascadedShadowMapping "")
+* [Cornell Box Photon Mapping](https://github.com/cvryn7/Cornell-Box-Photon-Mapping "") - Used photon mapping to render photo realistic cornell box.
+* [RRLS](https://github.com/deyyanl/rrls "") - Realistic real-time light simulation for Unity game engine.
+
+
+### Raymarching <a name="raymarching"></a>
+
+* [uRaymarching Examples](https://github.com/hecomi/uRaymarchingExamples) -  Examples using uRaymarching.
+* [Unity Raymarching Collision](https://github.com/hecomi/UnityRaymarchingCollision) -  Raymarching x Rigidbody interaction example.
+* [Unity Raytracer](https://github.com/SIZMW/unity-raytracer) -  This project demonstrates ray tracing in Unity, which is a real time rendering engine.
+* [Unity Compute Shader Ray Tracing Practice](https://github.com/ya7gisa0/Unity-Compute-Shader-Ray-Tracing-Practice) -  Raytracing shader tutorial for Unity.
+* [unity Experimental DXR](https://github.com/Unity-Technologies/Unity-Experimental-DXR) -  Experimental Direct X Raytracing in Unity. ![Official](UnityResource16x16.png)
+* [Raymarching On Unity 5](https://github.com/i-saint/RaymarchingOnUnity5) - Raymarcher in Unity 5.
+* [Ray Marching](https://github.com/SebLague/Ray-Marching) - Experimenting with using ray marching to render signed distance functions in Unity.
+
+## Voxel <a name="voxel"></a>
+
+* [VoxelWorld](https://github.com/SidiaDevelopment/VoxelWorld) - Training Unity on a Voxel World.
+* [VoxelMeshGenerator](https://github.com/chulini/VoxelMeshGenerator) - Unity3D C# project that generates a voxel 3D mesh using the greedy mesh technique.
+* [Warfest Voxel Unity](https://github.com/ArnaudValensi/warfest-voxel-unity) - A voxel game prototype made with Unity.
+
+## :bar_chart: UI <a name="ui"></a>
+
+### Control Components <a name="ui-controls-components"></a>
+
+* [Unity UI Extensions](https://bitbucket.org/UnityUIExtensions/unity-ui-extensions) - An extension project for the new Unity UI system (uGUI).
+* [CandyCoded](https://github.com/CandyCoded/CandyCoded "") - Custom Unity Components that are delightful.
+* [UnityCodes](https://github.com/springd5211/UnityCodes "") - Unity UI controls.
+* [UIElementsExamples](https://github.com/Unity-Technologies/UIElementsExamples "") - Unity project containing examples to use UIElements in the Editor. ![Official](UnityResource16x16.png)
+* [Unity_UI_Samples](https://github.com/tsubaki/Unity_UI_Samples "")
+* [Rec-Ex](https://github.com/slavniyteo/rect-ex "") - Unity3D Rect Extensions.
+* [UnityUI StarMap](https://github.com/SimonDarksideJ/UnityUI-StarMap "") - Elite Dangerous star viewer using the Unity UI System.
+
+#### Minimap <a name="ui-controls-minimap"></a>
+
+* [MiniMap](https://github.com/Area730/MiniMap) - Unity3D minimap (radar) system (Asset Store link - https://www.assetstore.unity3d.com/en/#!/content/33729).
+
+#### Text <a name="ui-controls-text"></a>
+
+* [uGUI Hypertext](https://github.com/setchi/uGUI-Hypertext "") - Hypertext for uGUI.
+* [uGUI LinkImageText](https://github.com/akof1314/uGUI_LinkImageText) - Unity uGUI Text support insert link and image.
+* [UnityTMProFontCustomizedCreater](https://github.com/akof1314/UnityTMProFontCustomizedCreater) - Custom TextMeshPro Font creator.
+
+##### Font Rendering <a name="ui-controls-text-font-rendering"></a>
+
+* [Text Mesh Pro](https://www.assetstore.unity3d.com/en/#!/content/84126) - An alternative to render text in uGUI by using the distance field technique, which allows crisp fonts at any scale. This was recently purchased by Unity and will be integrated into the engine in the future. (FREE)
+* [Typogenic](https://github.com/Chman/Typogenic) - Signed-distance field text rendering for Unity.
+* [UnityStbEasyFont](https://github.com/aras-p/UnityStbEasyFont) - A port of stb_easy_font.h to Unity/C#.
+
+#### Shapes <a name="ui-controls-shapes"></a>
+
+* [UI Shapes Kit](https://github.com/thisotherthing/ui-shapes-kit "") - Procedural shapes for Unity UI.
+* [Shapes2D](https://github.com/all-iver/shapes2d "") - Make simple art assets quickly in Unity.
+* [ShapeRenderer](https://github.com/epezent/ShapeRenderer "")
+* [Unity UI Polygon](https://github.com/CiaccoDavide/Unity-UI-Polygon) - Polygon renderer for the new Unity UI.
+
+#### Sprite Atlas <a name="ui-controls-spriteatlas"></a>
+
+* [AtlasImage](https://github.com/mob-sakai/AtlasImage) - AtlasImage is a graphic component use SpriteAtlas for uGUI. In addition, add useful sprite selector and border editor to the inspector.
+* [Unity2017AutoCreateSpriteAtlas](https://github.com/hanbim520/Unity2017AutoCreateSpriteAtlas)
+
+#### Scroll View <a name="ui-controls-scroll-view"></a>
+
+* [LoopScrollRect](https://github.com/qiankanglai/LoopScrollRect) - UGUI ScrollRect reusing cells, to improve performance, loading time and draw calls.
+* [EnhancedScrollView](https://github.com/tinyantstudio/EnhancedScrollView) - Cool 3d scoll view for Unity(NGUI 3D UGUI support).
+* [List View Framework](https://bitbucket.org/Unity-Technologies/list-view-framework) - The List View Framework is a set of core classes which can be used as-is or extended to create dynamic, scrollable lists in Unity applications. ![Official](UnityResource16x16.png)
+* [InfinityScroll](https://github.com/ivomarel/InfinityScroll) - These scripts will make your UnityGUI ScrollRects scroll infinitely.
+* [uGUI Super Scrollview Example](https://github.com/baba-s/ugui-super-scrollview-example "") - Sample project that summarizes usage examples of "UGUI Super ScrollView".
+* [FancyScrollView](https://github.com/setchi/FancyScrollView "") - A scrollview component that can implement highly flexible animation.
+* [UnityDynamicScrollRect](https://github.com/Mukarillo/UnityDynamicScrollRect "") - An optimized approach to lists with dozens of elements and a Pooling system.
+* [UnityDynamicScrollView](https://github.com/aillieo/UnityDynamicScrollView) - Dynamic scrollView based on UGUI.
+* [Unity Scrolly](https://github.com/alhaddado/unity-scrolly) - A Touch/Drag scroll list implementation using Unity GUI (4.6+).
+* [ReuseScroller](https://github.com/midnightSuyama/ReuseScroller) - Reuse cell for uGUI ScrollView.
+* [Variable Infinite Scroll](https://github.com/ToshikiImagawa/Variable-infinite-scroll) - Variable infinite scroll in Unity UI.
+
+#### Page View <a name="ui-controls-page-view"></a>
+
+* [Unity PagingView](https://github.com/kiepng/Unity-PagingView "") - PagingView for Unity.
+
+#### Search <a name="ui-controls-search"></a>
+
+* [Unity Autocomplete Search Field](https://github.com/marijnz/unity-autocomplete-search-field "") - Search field with Autocomplete, a simple Unity Editor UI component.
+
+#### Chart <a name="ui-controls-chart"></a>
+
+* [UChart](https://github.com/springd5211/UChart "") - Data chart/data graph for Unity.
+* [Scatterplot_Standalone](https://github.com/PrinzEugn/Scatterplot_Standalone "") - 3D scatterplot in Unity.
+
+#### Progress Bar <a name="ui-controls-progress-bar"></a>
+
+* [RadialProgressBar](https://github.com/AdultLink/RadialProgressBar "") - Customizable radial progress bar shader for Unity3D. Allows you to set arc range, minimum and maximum colors, textures, radius, and a few more things. Create HP Bars, Speedometers, rank progress, etc!
+* [uGUI Animated Progressbar](https://github.com/baba-s/ugui-animated-progressbar "") - A progress bar with animation of uGUI.
+
+#### Color Picker <a name="ui-controls-color-picker"></a>
+
+* [Simple Color Picker](https://assetstore.unity.com/packages/tools/gui/simple-color-picker-7353?aid=1100l35sb&utm_source=aff "") - Free color picker from the Asset Store.
+
+#### File Browser <a name="ui-controls-file-browser"></a>
+
+* [UnityStandaloneFileBrowser](https://github.com/gkngkc/UnityStandaloneFileBrowser "") - A native file browser for Unity standalone platforms.
+* [UnitySimpleFileBrowser](https://github.com/yasirkula/UnitySimpleFileBrowser) - A uGUI based runtime file browser for Unity3D (draggable and resizable).
+* [UnityAndroidVRARBrowser](https://github.com/IanPhilips/UnityAndroidVRARBrowser "") - In-Game browser for Unity projects built on Android (Oculus, maybe GearVR). (#VIRTUAL-REALITY)
+
+#### Mask <a name="ui-controls-mask"></a>
+
+* [SoftMaskForUGUI](https://github.com/mob-sakai/SoftMaskForUGUI "") - Soft masking for uGUI elements in Unity.
+* [UnmaskForUGUI](https://github.com/mob-sakai/UnmaskForUGUI "") - Reverse mask for uGUI element in Unity.
+* [UISoftMask](https://github.com/aillieo/UISoftMask) - Soft mask based on UGUI.
+* [GuideMask](https://github.com/asyncrun/GuideMask)
+
+#### Mobile Area Mask <a name="ui-controls-mobile-area-mask"></a>
+
+* [NotchSolution](https://github.com/5argon/NotchSolution "") - A set of tools to fight with notched/cutout phones for Unity uGUI.
+* [iPhoneX Overlay](https://github.com/ianwaldrop/iPhoneX-overlay "Unity Editor utility which masks the game view with the shape of an iPhone X.") - Unity Editor utility which masks the game view with the shape of an iPhone X.
+* [UnityIPhoneXSupport](https://github.com/tkyaji/UnityIPhoneXSupport "") - Support iPhoneX by changing the drawing area of Unity.
+* [iPhoneXSafeAreaDrawer](https://github.com/baba-s/iPhoneXSafeAreaDrawer "")
+* [UnityAndroidNotchSupport](https://github.com/Over17/UnityAndroidNotchSupport "") - Support for Android Notch (Cutout) in Unity 2017.4 and earlier.
+
+#### Gizmo <a name="ui-controls-gizmo"></a>
+
+* [UnityRuntimeSceneGizmo](https://github.com/yasirkula/UnityRuntimeSceneGizmo "") - Interactable runtime scene gizmo for uGUI.
+
+#### Layout <a name="ui-controls-layout"></a>
+
+* [Slayout](https://github.com/inkle/slayout "") - UI layout and animation component for Unity.
+* [Unity Card UI](https://github.com/ryanslikesocool/Unity-Card-UI "") - Card style UI elements for Unity.
+* [Unity VariableTileLayout](https://github.com/kiepng/Unity-VariableTileLayout) - UI Extensions for tile layout like Pinterest.
+
+#### Drag & Drop <a name="ui-controls-drag-drop"></a>
+
+* [DragDropComponents](https://github.com/aillieo/DragDropComponents) - DragDrop components based on UGUI.
+
+### Screen / Menu Management <a name="ui-screen-menu-management"></a>
+
+* [Looader](https://github.com/Michsky/looader) - Loading screen solution for Unity engine.
+* [ScreenManager](https://github.com/Xerios/ScreenManager "") - Flexible way to manage screens with transitions for Unity.
+* [Unity Pause Menu](https://github.com/GreatArcStudios/unitypausemenu) - This is an open source Unity pause menu created for the game New Horizons, and it's completely free because of how a pause menu is a core component of a game, while the unity asset store was lacking in such an asset (until this was released on the asset store).
+* [UnityMenuSystem](https://github.com/YousicianGit/UnityMenuSystem "") - Menu System for Unity.
+* [uGUI Window Menu](https://github.com/JINZO631/uGUI-window-menu "") - Simple uGUI menu.
+* [Unity Template](https://github.com/Shogan/Unity-Template "") - A simple unity UI/Menu template.
+
+### Effects <a name="ui-effects"></a>
+
+* [UIEffect](https://github.com/mob-sakai/UIEffect "") - An effect component for uGUI element in Unity. Let's decorate your UI with effects.
+* [Beautiful Text Outline for Unity UI](https://github.com/n-yoda/unity-vertex-effects) - Beautiful text outline for Unity UI.
+* [Unity3DBookPageCurl](https://github.com/Dandarawy/Unity3DBookPageCurl "") - Page curl effect for Unity3D using native UI tools.
+* [uGUI Effect Tool](https://github.com/WestHillApps/uGUI-Effect-Tool "") - Vertex color UI Effect for Unity UI (uGUI).
+* [MirrorReflectionEffectForUGUI](https://github.com/mob-sakai/MirrorReflectionEffectForUGUI "") - A simple mirror reflection effect for a uGUI without reflection probes or shaders.
+* [BluredUGUI](https://github.com/edom18/BluredUGUI "") - Blured uGUI background sample.
+
+### Frameworks <a name="ui-frameworks"></a>
+
+* [Unity UI](https://bitbucket.org/Unity-Technologies/ui "") - Official repository for UI system used in Unity. ![Official](UnityResource16x16.png)
+* [NGUI](https://www.assetstore.unity3d.com/en/#!/content/2413) - A powerful UI system and event notification framework. :moneybag:
+* [FairyGUI Unity](https://github.com/fairygui/FairyGUI-unity "") - A flexible UI framework for Unity.
+* [OpenUi](https://github.com/omid3098/OpenUi "") - Make your game UI in minutes!
+* [OpenGUI](https://github.com/mrzapp/opengui) - Open source GUI framework for Unity.
+* [UIElementsX](https://github.com/rocktavious/UIEX) - UIElementsX (UIEX) is the missing high level API for unity's new UI system.
+* [Xamarin.Forms.Unity](https://github.com/aosoft/Xamarin.Forms.Unity) - Xamarin.Forms for Unity (Platform implementation for Unity Game Engine).
+* [FlexibleUI Unity](https://github.com/rameshporeddy/FlexibleUI-Unity) - A Unity System to Implement Multiple GUI Themes.
+
+### Tools <a name="ui-tools"></a>
+
+* [Automatic UI Anchoring For Unity3D](https://github.com/Risenberg304/Automatic-UI-Anchoring-For-Unity-3D "")
+* [Unity3d.UI.Windows](https://github.com/chromealex/Unity3d.UI.Windows "") - Unity 3D UI (uGUI) Windows Extensions.
+* [UGUI Editor](https://github.com/liuhaopen/UGUI-Editor "") - Unity UGUI editor tools to improve the efficiency of UI development.
+* [Unity AlignTools](https://github.com/litefeel/Unity-AlignTools "") - Align Tools is just perfect Unity asset plugin to align gui object.
+* [uGUI Tween Tool](https://github.com/tomtc123/ugui-Tween-Tool "") - Unity 4.6.x and Unity5.x uGUI Tween tools.
+* [Baum2](https://github.com/kyubuns/Baum2 "") - Psd to Unity UI (uGUI).
+* [TMP RectVisualizer](https://github.com/baba-s/TMP_RectVisualizer "") - The size of Text and TextMesh Pro can be visualized on game 
+screen.
+* [Unity Sprite Cutter](https://github.com/sabikku/unity-sprite-cutter "") - Simple solution for cutting sprites in runtime.
+* [Pixel Sprite Generator Unity](https://github.com/Shogan/PixelSpriteGenerator-Unity "") - A port of the PixelSpriteGenerator to C# for use with the Unity3D game engine.
+* [uGUI Script Creator](https://github.com/tomori-hikage/ugui-script-creator "") - Create GUIs by scripting.
+* [uGUI Guidelines](https://github.com/Syy9/uGUI-Guidelines "") -uGUI guidelines.
+
+### Themes / Skins <a name="ui-themes-skins"></a>
+
+* [MaterialUI](https://github.com/InvexGames/MaterialUI "") - A UI kit for Unity that follows Google's official material design guidelines.
+* [Unity Themes](https://github.com/zios/unity-themes "") - Provides the Unity Editor with adjustable, hot-swappable GUI themes across all elements.
+* [Ultimate HUD Skins](https://github.com/Michsky/ultimatehudskins) - Stylish HUD layouts for Unity engine.
+* [Modern UI Pack](https://github.com/Michsky/muip "") - Modern UI Pack for Unity engine.
+* [Lomenui](https://github.com/Michsky/lomenui "") - Stylish UI package for Unity engine.
+* [Unity LoMenu](https://github.com/paulgswanson/Unity_LoMenu) - Stylish UI package for Unity engine.
+* [Imgui Unity](https://github.com/ProgC/imgui_unity) - Integration dear imgui to Unity.
+
+### Testing <a name="ui-testing"></a>
+
+* [Unity UITest](https://github.com/taphos/unity-uitest "") - Unity UI Test Automation Framework.
+* [RuntimeUnitTestToolkit](https://github.com/Cysharp/RuntimeUnitTestToolkit "") - CLI/GUI Frontend of Unity Test Runner to test on any platform.
+* [RandomFixtureKit](https://github.com/Cysharp/RandomFixtureKit "") - CLI/GUI Frontend of Unity Test Runner to test on any platform.
+* [Moq Unitypackage](https://github.com/tenpn/moq-unitypackage "") - A unitypackaged mirror of Moq, for use in Unity3D.
+
+## Procedural Generation <a name="procedural-generation"></a>
+
+* [Procedural Toolkit](https://github.com/Syomus/ProceduralToolkit "") - Procedural generation library for Unity.
+* [Houdini Engine For Unity](https://github.com/sideeffects/HoudiniEngineForUnity "") - Houdini Engine for Unity.
+* [Wavefunctioncollapse](https://github.com/marian42/wavefunctioncollapse "") - Walk through an infinite, procedurally generated city
+* [InfiniteIslandsGenerator Unity](https://github.com/TPiotr/InfiniteIslandsGenerator-Unity "") - Infinite islands generation.
+* [Tangram Unity](https://github.com/tangrams/tangram-unity "") - A library of tools for using OpenStreetMap data in the Unity3D game engine.
+* [PVTUT (Procedural Virtual Texture with Unity Terrain)](https://github.com/ACskyline/PVTUT "Procedural Virtual Texture with Unity Terrain")
+* [RoadArchitect](https://github.com/MicroGSD/RoadArchitect "") - Road Architect for Unity.
+* [RoadBuilder](https://github.com/guotata1996/roadbuilder "") - Easy-to-build realistic roads in Unity. Foundation of any simcity game.
+* [DungeonGenerator](https://github.com/jongallant/DungeonGenerator "") - A dungeon generator for Unity.
+* [Procedural Cave Generator](https://github.com/AK-Saigyouji/Procedural-Cave-Generator "") - Unity scripts that procedurally generate ready-to-use cave meshes.
+* [Procedural Cave Generator](https://github.com/SebLague/Procedural-Cave-Generation "") - Source code for Sebastian Lague's Procedural Cavern Generation tutorial series.
+* [Unity3D Dungeon Generator](https://github.com/DMeville/Unity3d-Dungeon-Generator "") - A procedural dungeon generator for Unity3d.
+* [ProceduralTerrain](https://github.com/theSoenke/ProceduralTerrain "") - Procedural voxel terrain generation in Unity.
+* [Unity Procedural Tree](https://github.com/mattatz/unity-procedural-tree "") - Procedural tree builder for Unity.
+* [ProceduralMotionTrack](https://github.com/keijiro/ProceduralMotionTrack "") - Simple procedural motion with Unity Timeline.
+* [Procedural Landmass Generation](https://github.com/SebLague/Procedural-Landmass-Generation "") - Procedural Landmass Generation in Unity.
+* [VoronoiMapGen](https://github.com/SteveJohnstone/VoronoiMapGen "") - A Voronoi Based Map Generator for Unity.
+* [Unity Procedural](https://github.com/nickhall/Unity-Procedural "") - Spline based mesh generation.
+* [QuadSphere](https://github.com/bicarbon8/QuadSphere "") - Unity QuadSphere with Level of Detail subdivision.
+* [UnityCurvedMeshGenerator](https://github.com/nrj/UnityCurvedMeshGenerator "") - Procedural mesh generation tutorial with cubic Bezier curves.
+* [PixelArtGen](https://github.com/abagames/PixelArtGen "") - A pixel art generator on a Unity custom inspector.
+* [Procedural Terrain Generator](https://github.com/CyanCode/ "") - Procedural terrain generator for the Unity 3D engine. (#Terrain)
+* [TownGenerator](https://github.com/zulfajuniadi/TownGenerator "") - Medieval Town Generator for Unity.
+* [Alchemy Circles Generator](https://github.com/CiaccoDavide/Alchemy-Circles-Generator) - A simple procedural generator of alchemy circles.
+* [Unity Procedural Flower](https://github.com/mattatz/unity-procedural-flower) - Procedural flower generator for Unity.
+* [Graphmesh](https://github.com/Siccity/Graphmesh) - A graph-based solution for procedural mesh inside the Unity editor.
+* [Rant](https://github.com/TheBerkin/rant) - Robust text engine for procedural generation and postprocessing. (#POST-PROCESSING)
+* [ProceduralMesh](https://github.com/mortennobel/ProceduralMesh) - Simple procedural mesh generation for the Unity game engine.
+* [Procedural Shapes for Unity](https://bitbucket.org/alexzzzz/procedural-shapes-for-unity) - A set of procedural shapes for Unity.
+* [IcoSphereCreator](https://github.com/kaiware007/IcoSphereCreator) - Create Ico Sphere Mesh Tool for Unity.
+* [Shapes](https://github.com/olange/shapes) - Hand-drawn meshes and vector shapes for Processing and Unity, and a few handpicked colors.
+* [Unity.ProceduralContentGeneration Terrain](https://github.com/ErikMoczi/Unity.ProceduralContentGeneration-Terrain) - (#TERRAIN)
+* [Procedural Level Generator Unity](https://github.com/OndrejNepozitek/ProceduralLevelGenerator-Unity) - Unity plugin from procedural dungeon generation.
+* [LSystemsInUnity](https://github.com/pboechat/LSystemsInUnity) - L-System is a rewriting system used mainly to model the development of plants. L-Systems in Unity enables you to rapidly create plants in your Unity games.
+
+## :sunrise_over_mountains: Terrain <a name="terrain"></a>
+
+* [TerrainToolSamples](https://github.com/Unity-Technologies/TerrainToolSamples) - New Terrain Tools and Brush Assets for the Unity Terrain system. ![Official](UnityResource16x16.png)
+* [Microsplat](https://assetstore.unity.com/packages/tools/terrain/microsplat-96478) - A modular free terrain shading system focused on performance and ease of use. MicroSplat is described as a replacement shader system for Unity Terrains.
+* [Terrain Topology Algorithms](https://github.com/Scrawk/Terrain-Topology-Algorithms "") - Terrain topology algorithms in Unity.
+* [Unity DryadeErosion](https://github.com/paulgswanson/Unity_DryadeErosion "") - A toolbox for procedural generation, dedicated to Unity. (#Procedural)
+* [Interactive Erosion](https://github.com/Scrawk/Interactive-Erosion "") - A toolbox for procedural generation, dedicated to Unity. (#Procedural)
+* [Unity Interactive Erosion](https://github.com/paulgswanson/Unity_InteractiveErosion "") - Interactive erosion in Unity.
+* [Terrain Tool Customized](https://github.com/AncientMagikaTechnologies/TerrainToolCustomized "") - This is our own custom Version of Unity Technologies "Terrain Tool Samples".
+* [PathPaintTool](https://github.com/Roland09/PathPaintTool "") - A free and open source path painter tool for painting paths on terrain in Unity.
+* [Thalatta](https://github.com/JustGamingLTD/Thalatta "") - An open source terrain generation suite.
+* [TerrainGeneration](https://github.com/guotata1996/TerrainGeneration "") - Terrain generation based on nature of river flow.
+* [Lowpoly Terrain Editor](https://github.com/MCrafterzz/lowpolyterraineditor "") - Free Low Poly terrain editor for Unity.
+* [VegetationStudioProExtensions](https://github.com/Roland09/VegetationStudioProExtensions "") -  Custom tools for use with [Vegetation Studio Pro](https://assetstore.unity.com/packages/tools/terrain/vegetation-studio-pro-131835). 
+* [Hydraulic Erosion](https://github.com/SebLague/Hydraulic-Erosion "") - Simulating erosion to try make procedural terrains look a little more natural.
+* [Worldsmith](https://github.com/worldsmithdev/Worldsmith "") - Worldsmith Community Build.
+* [Terrain Stamps](https://github.com/Roland09/Terrain-Stamps "") - Stamps for the Unity Terrain Stamp Tool.
+* [StampToolExtended](https://github.com/Roland09/StampToolExtended "") - Extended version of the Unity Terrain Stamp Tool.
+* [KvantLattice](https://github.com/keijiro/KvantLattice "") - A GPU accelerated fractal terrain renderer for Unity.
+
+## Navigation Mesh (NavMesh) <a name="navmesh"></a>
+
+* [ST2U2DNavMeshImporter](https://github.com/SharlatanY/ST2U2DNavMeshImporter "") - Provides a custom importer to automatically setting up 2D Navmeshes (Using NavMeshSurface2DBaker) when importing "Tiled" tilemaps through SuperTiled2Unity.
+* [NavMeshSurface2DBaker](https://github.com/SharlatanY/NavMeshSurface2DBaker "") - Provides functionality to bake 2D colliders into NavMeshSurface components.
+* [NavMeshPlus](https://github.com/h8man/NavMeshPlus "") - Unity NavMesh 2D Pathfinding.
+* [Unity ECS NavMesh](https://github.com/zulfajuniadi/unity-ecs-navmesh "") - A demo implementation of Unity Entity Component System with NavMesh.
+* [Navigator](https://github.com/liuhaopen/Navigator "") - This project provides unity scripts to export navmesh data into tile cache files that can be used directly by recastnavigation.
+* [NavMeshPainter](https://github.com/AsehesL/NavMeshPainter "")
+
+## :art: Textures <a name="textures"></a>
+
+* [VertexPaint](https://github.com/slipster216/VertexPaint "") - Unity 5.3 Vertex Painter.
+* [NormalPainter](https://github.com/gucheng0712/NormalPainter "") - Vertex normal editor for Unity.
+* [InkPainter](https://github.com/EsProgram/InkPainter "") - Texture-Paint on Unity. 
+* [Texture Array Unity](https://github.com/DmtDenisov/Texture-Array-Unity "") - A small tool for creating texture arrays in Unity. (#UTILITIES)
+* [Unity Texture Packer](https://github.com/andydbc/unity-texture-packer) - Utility to combine color channels from different textures into a single output.
+* [WaveformProvider](https://github.com/EsProgram/WaveformProvider) - Provide a texture to simulate waves with Unity.
+* [PVRTexTool Wrapper](https://github.com/fxgames/pvrtextool_wrapper) - PVRTexTool wrapper for Unity3D.
+* [Animation Texture Baker](https://github.com/zulfajuniadi/Animation-Texture-Baker) - Bake Legacy Animations into Textures. Targeting ECS. (#ANIMATION)
+* [AudioTexture](https://github.com/TyounanMOTI/AudioTexture) - Generate Unity Texture2D from AudioClip. (#AUDIO)
+* [CurveTexture](https://github.com/slipster216/CurveTexture) - Easily encode arbitrary curves into textures and apply them to materials or global shader properties.
+* [UVPreview](https://github.com/AsehesL/UVPreview) - Preview your UV islands in inspector window for your textures.
+* [VertexAnimator](https://github.com/nobnak/VertexAnimator)
+* [8 Free Substances (Free)](https://www.assetstore.unity3d.com/en/#!/content/7940) - 8 configurable procedural textures.
+* [CC0 Textures](https://cc0textures.com/) - Free PBR textures.
+
+## Importers & Exporters <a name="importers-exporters"></a>
+
+* [PIXYZ](https://unity3d.com/es/pixyz "") - Prepare, optimize and import CAD models into your Unity3D application. :moneybag:
+* [AsImpL](https://github.com/gpvigano/AsImpL "") - Asynchronous Importer and run-time Loader for Unity.
+* [FbxExporter](https://github.com/unity3d-jp/FbxExporter "") - Export meshes to .fbx or .obj from Unity.
+* [FBXImporterExporterForUnity_20150901](https://github.com/Hoetan/FBXImporterExporterForUnity_20150901 "") - FBX Importer & Exporter for Unity β Trial Version 2015/09/01.
+* [ColladaExporter](https://github.com/linuxaged/ColladaExporter "") - Collada exporter for Unity3D.
+* [Unity glTF Exporter](https://github.com/tparisi/Unity-glTF-Exporter "") - Unity editor wizard that exports to glTF Format.
+* [Unity OBJ Loader](https://github.com/hammmm/unity-obj-loader "") - Runtime .OBJ file loader for Unity3D.
+* [UnityGLTF](https://github.com/KhronosGroup/UnityGLTF "") - Runtime glTF Loader for Unity3D. (Official from Khronos Group).
+* [UniGLTF](https://github.com/ousttrue/UniGLTF "") - glTF 2.0 importer and exporter for Unity 5.6 or later.
+* [Unity VMF Loader](https://github.com/atrblizzard/unity-vmf-loader "") - Import maps created in Valve Hammer Editor to Unity. 
+* [Unity Source Tools](https://github.com/atrblizzard/Unity-Source-Tools "") - Plugin to import resources from the Source engine in Unity3D.
+* [Unity Source Tools](https://github.com/lewa-j/Unity-Source-Tools "") - Plugin to import resources from the Source engine in Unity3D. (#REVIEW)
+* [Alembic For Unity](https://github.com/unity3d-jp/AlembicForUnity "") - Alembic importer and exporter plugin for Unity.
+* [Unity PSD Importer](https://github.com/ChemiKhazi/UnityPsdImporter) - Advanced PSD importer for Unity3D. (#DEPRECATED)
+* [Unity Excel Importer Maker](https://github.com/tsubaki/Unity-Excel-Importer-Maker "") - Import excel files into Unity.
+* [Stunts Unity](https://github.com/cobbpg/stunts-unity "") - A tiny Unity project to import assets from the original Stunts game.
+* [SuperPrefabReplacement](https://github.com/Seanba/SuperPrefabReplacement "") - An example of replacing Tiled objects with prefabs, automatically, during import into Unity.
+* [ExportSceneToObj](https://github.com/monitor1394/ExportSceneToObj "") - Export Unity3D scene ( objects and terrain ) or fbx to .obj file.
+* [Unity Custom Terrain Tool](https://github.com/drParadox312/Unity-Custom-Terrain-Tool- "") - Height/angle based painting
+
+
+## :floppy_disk: Databases <a name="databases"></a>
+
+* [SQLite4Unity3D](https://github.com/robertohuertasm/SQLite4Unity3d "") - SQLite made easy for Unity3d.
+* [USqlite](https://github.com/springd5211/USqlite "") - Sqlite for Unity.
+* [SQLiteUnityKit](https://github.com/Busta117/SQLiteUnityKit "") - Framework to connect with a SQLite database from Unity for iOS, Android, MAC , Windows.
+* [SqlCipher4Unity3D](https://github.com/netpyoung/SqlCipher4Unity3D "") - SqlCipher made easy for Unity3d.
+* [CastleDB Unity Importer](https://github.com/kkukshtel/castledb-unity-importer")
+
+## VCS (Version Control Systems) <a name="vcs"></a>
+
+* [GitHub for Unity](https://unity.github.com/) - The new GitHub for Unity extension brings the GitHub workflow and more to Unity, providing support for large files with Git LFS and file locking. (#VCS) (#PLUGIN)
+* [Gitgud](https://github.com/joshcamas/gitgud "") - A simple unity-based git client with a focus on extendability.
+* [UpmGitExtension](https://github.com/mob-sakai/UpmGitExtension "") - Git extension for Unity Package Manager (UPM).
+* [NuGetForUnity](https://github.com/GlitchEnzo/NuGetForUnity "") - A NuGet Package Manager for Unity.
+* [GitLab](https://about.gitlab.com/ "") - GitLab
+* [VersionControlPlugins](https://github.com/Unity-Technologies/VersionControlPlugins "") - Perforce plugin for Unity. (Moved to Bitbucket). ![Official](UnityResource16x16.png)
+* [Unity SVN Checker](https://github.com/kalimaul/unity_svn_checker "") - Server-side svn hooks to help version control with Unity3D.
+
+## Continuous Integration <a name="continuous-integration"></a>
+
+* [Docker Unity3D](https://github.com/wtanaka/docker-unity3d "") - This docker image runs in a terminal so you don't have access to the UI. This docker image is intended to run unity commands with the command line. You can use it for running tests and creating builds.
+* [Unity3D CI Example](https://github.com/GabLeRoux/unity3d-ci-example "") - Additional remote of Unity3D CI example project for Travis and CircleCI on Github.
+* [Unity3D Travis CI](https://github.com/kevinta893/unity3d-travis-ci "") - A simple example of how to build and deploy a Unity3D package on Travis CI and GitHub Releases.
+
+## Testing <a name="testing"></a>
+
+* Unity Remote [Android](https://play.google.com/store/apps/details?id=com.unity3d.genericremote "") [iOS and tvOS](https://itunes.apple.com/us/app/unity-remote-4/id871767552) - View playmode on final devices. See [more](https://docs.unity3d.com/Manual/UnityRemote5.html).
+* [Unity Test Tools](https://unity3d.com/es/unity/qa/test-tools "") - Unity Editor Test Tools. See legacy [here](https://bitbucket.org/Unity-Technologies/unitytesttools). ![Official](UnityResource16x16.png)
+* [Test Framework Training](https://github.com/Unity-Technologies/test-framework-training "") - Training project for Unity testing. ![Official](UnityResource16x16.png)
+* [Airtest](https://github.com/AirtestProject/Airtest "") - UI Test Automation Framework for Games and Apps. Uses computer vision.
+* [Lunar Unity Assert](https://github.com/SpaceMadness/lunar-unity-assert "") - An improved wrapper over UnityEngine.Assertions.
+* [GamesTestAutomationExample](https://github.com/UnityTech/GamesTestAutomationExample "") - The collecting ideas on how to do Test Automation in Games.
+
+## :sunglasses: Customization <a name="customization"></a>
+
+* [Unity3D Rainbow Folders](https://github.com/PhannGor/unity3d-rainbow-folders "") - This asset allows you to set custom icons for any folder in unity project browser.
+* [Unity Dark Theme Patch](https://github.com/ejlv/UnityDarkThemePatch "") - Patch that switches Unity theme from light to dark.
+* [UnityDarkSkin](https://github.com/Gluschenko/UnityDarkSkin "") - Switching layout skin in Unity Editor (white => dark, white => dark).
+* [UnityLauncher](https://github.com/unitycoder/UnityLauncher "") - Unity Version Launcher.
+
+## Extensibility <a name="extensibility"></a>
+
+### Node Editor <a name="node-editor"></a>
+
+* [Node Editor Framework](https://github.com/Seneral/Node_Editor_Framework "") - A flexible and modular Node Editor Framework for creating node based displays and editors in Unity.
+* [xNode](https://github.com/Siccity/xNode "") - Basic editor extension functionality to get a node editor up and running.
+* [qAI](https://github.com/jlreymendez/qAI "") - A xNode based tool for designing AI Graphs like Behavior Trees and Finite State Machines in Unity.
+* [UnityNodeEditorBase](https://github.com/luis-l/UnityNodeEditorBase "") - Lets you view and edit node graphs inside Unity.
+* [Node Inspector](https://github.com/nicloay/Node-Inspector) - Unity graph editor extension.
+* [GTLogicGraph](https://github.com/rygo6/GTLogicGraph "") - A generic graph made off the UIElement GraphView built into Unity.
+* [Simple Graph Editor](https://github.com/Aridez/Simple-Graph-Editor "") - An editor extension for Unity that allows making directional graphs quickly.
+<!-- * [Node Canvas](https://assetstore.unity.com/packages/tools/visual-scripting/nodecanvas-14914) - The complete Visual Behaviour Authoring framework for Unity. -->
+
+### Inspector <a name="inspector"></a>
+
+* [ReorderableInspector](https://github.com/SubjectNerd-Unity/ReorderableInspector "") - Automatic reorderable lists for Unity game engine components.
+* [Reorderable Inspector](https://github.com/ChemiKhazi/ReorderableInspector) - Automatic reorderable lists for Unity game engine components.
+* [Reorderable List Editor Field for Unity](https://bitbucket.org/rotorz/reorderable-list-editor-field-for-unity) - Reorderable List Editor Field for Unity.
+* [Reorderable List Example](https://github.com/valyard/ReorderableListExample "") - Example project for UnityEditorInternal.ReorderableList in Unity 4.5.
+* [Unity Runtime Inspector](https://github.com/yasirkula/UnityRuntimeInspector "") - Runtime Inspector and Hierarchy solution for Unity for debugging and runtime editing purposes.
+* [ExtendedTransformEditor](https://github.com/keenanwoodall/ExtendedTransformEditor "") - A clutterless custom Transform editor for Unity.
+* [ExtendedTransformEditor](https://github.com/starikcetin/ExtendedTransformEditor "") - A clutterless custom Transform editor for Unity.
+* [Inspector Foldout Group](https://github.com/dimmpixeye/InspectorFoldoutGroup "") - Group variables in Unity 3d inspector with style!
+* [Unity3D Property Enabled Inspector](https://github.com/XaeroDegreaz/unity3d-property-enabled-inspector "") - This project aims to allow C# properties to be fully supported for in-editor inspection.
+* [Unity Reorderable List](https://github.com/cfoulston/Unity-Reorderable-List "") - Extended version of the Reorderable List in Unity.
+* [Stackable Decorator](https://github.com/Kinwailo/Stackable-Decorator "") - Stackable decorator for property drawer of Unity.
+* [UnityExtensions.ArrayDrawer](https://github.com/garettbass/UnityExtensions.ArrayDrawer "") - ArrayDrawer is a base class like PropertyDrawer, but for arrays and lists.
+* [Property Drawer Collection](https://github.com/anchan828/property-drawer-collection)
+* [Chest Of Property Drawers](https://github.com/tenpn/ChestOfPropertyDrawers) - A collection of small reusable Unity3D property drawers.
+* [Reflected Inspector](https://github.com/ByronMayne/Reflected-Inspector) - Reflected Inspector is a system for Unity that works very much like Serialized Properties but works with non-Unity types and can serialize the values. 
+* [UnityExtensions.InspectInline](https://github.com/garettbass/UnityExtensions.InspectInline) - Enables you to inspect and edit object references, and easily embed such objects as subassets.
+* [EditorButton](https://github.com/miguel12345/EditorButton "") - Turn your Unity methods into buttons just by adding an attribute.
+* [EasyButtons](https://github.com/madsbangh/EasyButtons "") - Add buttons to your inspector in Unity super easily with this simple attribute.
+* [Enum Flags](https://github.com/umm/enum_flags) - Handle enum as bit flag in Inspector.
+* [Unity Define Inspector](https://github.com/haydenjameslee/unity-define-inspector "") - A Unity inspector panel to quickly add and remove a set of custom Scripting Define Symbols.
+* [Unity Readme](https://github.com/JohnAlbin/UnityReadme) - Add a Readme / tutorial to the inspector tab of your Unity project.
+* [Stickies](https://github.com/charblar/stickies) - Simple in-editor notes for Unity3D.
+* [Unity ColourLovers Importer](https://github.com/shelleylowe/unity-colourlovers-importer) - Unity editor tool to load colours and palettes directly from COLOURlovers.com.
+* [Gradient Editor](https://github.com/SebLague/Gradient-Editor)
+* [Render Queue](https://github.com/FreyaHolmer/Render-Queue) - Render Queue Unity Extension.
+* [Pongpector](https://github.com/PhillipMwaniki/pongpector "") - Play a pong on a Unity custom inspector. (#GAMES)
+* [Unity QuickSheet](https://github.com/kimsama/Unity-QuickSheet "") - Enables you to use spreadsheet file data within Unity editor.
+* [UnityMarkdeepViewer](https://github.com/Sirithang/UnityMarkdeepViewer "") - Editor scripts allowing to display Markdown, markdeep and HMTL directly inside the Unity Editor.
+* [UnityDebugger](https://github.com/joexi/UnityDebugger "") - Lite tool helping check runtime status of unity application in Editor.
+* [ReferenceVisualizerUnity3D](https://github.com/Sebastian-Schuchmann/ReferenceVisualizerUnity3D "") - An Editor Window that lets you see and edit all references of your Scene Objects.
+* [ShaderInspector](https://github.com/myacat/ShaderInspector "") - Hide parameters in Unity Shader Inspector Window. (#SHADERS)
+* [EditorGenerator](https://github.com/keenanwoodall/EditorGenerator "") - A tool that generates custom editors in Unity.
+* [ToDoManager](https://github.com/densylkin/ToDoManager "") - Simple tool for managing todo's in your code.
+* [UnityPickers](https://github.com/vasyab/UnityPickers "") - Value selection controls for Unity game engine editor. 
+* [Unitasks](https://github.com/raimis001/Unitasks "") - Very simple task organizer for Unity3D editor.
+* [Unity Docky](https://github.com/jeffcampbellmakesgames/unity-docky "") - Docky is a custom Unity editor tool to help automate documentation creation and updating.
+* [Curve Editor](https://github.com/SebLague/Curve-Editor "")
+
+
+### Timeline <a name="timeline"></a>
+
+* [TimelineParticleControl](https://github.com/keijiro/TimelineParticleControl "") - An example of controlling particle system from timeline.
+* [UnityTimelineEvents](https://github.com/georgejecook/UnityTimelineEvents "") - Adds ability to execute arbitrary code, with int, bool, float, string and enum values, at both runtime and edit time, from Unity timelines.
+* [AudioPreviewTrack](https://github.com/keijiro/AudioPreviewTrack "") - Instant audio playback (scrubbing) in preview mode of Unity Timeline editor.
+* [TimeFlowShiki](https://github.com/sassembla/TimeFlowShiki) - Unity Editor Timeline GUI skeleton.
+* [Animator_Timeline](https://github.com/absameen/Animator_Timeline) - Timeline Editor for Unity. (#ANIMATION)
+* [TimelineEvent](https://github.com/inoook/TimelineEvent) - Modify timeline through events.
+* [UnityTimelordBlender](https://github.com/imxzjv/UnityTimelordBlender) - Timelord is a demo for custom blending of Unity3D Timelines.
+* [Timeline MessageMarker](https://github.com/imxzjv/Timeline-MessageMarker) - Timeline Message markers.
+* [UnityTimelineConditions](https://github.com/imxzjv/UnityTimelineConditions) - Experimental port of Animator conditions interface to Timeline events. 
+
+### Project Folder <a name="project-folder"></a>
+
+* [Tidy Up](https://github.com/Nutshell-Hack/Tidy-Up) - Neat little tool! to help you keep your Unity projects organised by throwing assets in their designated folders.
+* [Script Templates for Unity](https://bitbucket.org/rotorz/script-templates-for-unity) - A little window which automatically generates C# source code stubs for Unity.
+* [T4 Templates Unity3D](https://github.com/deniszykov/t4-templates-unity3d "") - T4 Text Template Processor for Unity3D.
+* [Unity File Extension](https://github.com/pointcache/unity-file-extension) - Shows file extension in 1 column project window.
+* [Unity Symlink Utility](https://github.com/karl-/unity-symlink-utility) - A small extension that adds a menu item to add folders as symlinks in Unity.
+
+### Contextual Menu <a name="contextual-menu"></a>
+
+* [TextMeshPro Button Extension](https://github.com/jackisgames/TextMeshProButtonExtension "") - Add new context menu "UI/TextMeshPro - Button". To create button with TextMeshPro instead of Unity UI Text. (#UI)
+
+### Scene View <a name="scene-view"></a>
+
+* [UnitySceneViewFovControl](https://github.com/t-mat/UnitySceneViewFovControl "") - Unity Editor Extension which enables controlling Scene View's FoV.
+
+#### Spline Editor <a name="scene-view-spline-editor"></a>
+
+* [BezierCanvas](https://github.com/setchi/BezierCanvas) - Adobe Illustrator's pen tool style bezier editor on Unity.
+* [BGCurve](https://github.com/bansheeGz/BGCurve "") - Bezier spline editor for Unity 5.3.
+
+#### Level Editor <a name="scene-view-level-editor"></a>
+
+* [ProBuilder](https://assetstore.unity.com/packages/tools/modeling/probuilder-111418) - 3D Prototyping tool buyed by Unity. See [Procore](http://www.procore3d.com/).
+* [Prototype](https://www.assetstore.unity3d.com/en/#!/content/11919) - Uses the core of ProBuilder, enabling you to build entire game levels (or objects) with speed and simplicity.
+* [SabreCSG](http://sabrecsg.com/) - A set of [Constructive Solid Geometry](https://en.wikipedia.org/wiki/Constructive_solid_geometry) level design tools for building complex levels quickly inside Unity.
+* [Chisel.Prototype](https://github.com/RadicalCSG/Chisel.Prototype) - Work in progress prototype for the Chisel Level Editor, for Unity.
+* [UnityTile3D](https://github.com/NoelFB/UnityTile3D) - Simple 3D Tile Editor.
+* [HexTiles](https://github.com/RoryDungan/HexTiles) - Unity Hex Tile Editor.
+* [Editor2D](https://github.com/stillwwater/editor2d) - Tile based level editor for Unity
+
+### Game View <a name="game-view"></a>
+
+* [Game View Maximizer](https://github.com/tomori-hikage/game-view-maximizer) - Maximizes the game view window with a Shortcut. See [related](https://answers.unity.com/questions/180607/shortcut-key-to-maximize-viewport.html).
+* [In-Game Editor UI](https://github.com/Coac/ingame-editor-ui) - Unity3D in-game UI, which shows at runtime a Hierarchy and an Inspector like the built-in Editor.
+
+#### Level Editor <a name="game-view-level-editor"></a>
+
+* [GILES](https://github.com/Unity-Technologies/giles) - A Runtime Level Editor for Unity3D. ![Official](UnityResource16x16.png)
+* [OpenEd](https://github.com/mrzapp/opened) - Open source runtime editor for Unity.
+
+### Custom Windows <a name="custom-windows"></a>
+
+* [Unity IMGUI TreeView](https://github.com/luke161/Unity-IMGUI-TreeView "") - Simple Tree View implementation for IMGUI (Editor GUI) in Unity.
+* [Unity Visual Behavior Tree](https://github.com/MystikalPooka/Unity-Visual-Behavior-Tree) - Reactive Visual Scripting Behavior Tree Tool for Unity 2018.x+.
+* [Node Level Editor](https://github.com/James-Frowen/node-level-editor "") - Unity3d Editor tools to create rooms quickly.
+* [Unity Editor Texel Density](https://github.com/bandures/Unity-Editor-Texel-Density) - Texel density editor for Unity.
+* [Texture3DPreview for Unity](https://github.com/raphael-ernaelsten/Texture3DPreview-for-Unity) - This package enables interactive previews of Texture3D assets in Unity's Inspector window.
+* [StyleBrowser](https://github.com/ByronMayne/StyleBrowser) - A browser editor window to view all Unity built in styles.
+* [Charon Unity3D](https://github.com/deniszykov/charon-unity3d) - Charon Game Data Editor Plug-in for Unity3D. Charon is a software for managing game's data. It is used for creating data structure, editing data and accessing this data in the code.
+* [Bona Data Editor](https://github.com/bonahona/BonaDataEditor) - Unity plugin editor for easier manipulation of assets of certain types. (#ATTRIBUTES)
+* [WebViewHook](https://github.com/willnode/WebViewHook) - Exposed UnityEditor WebView API.
+* [UnityMeshCounter](https://github.com/raimis001/unityMeshCounter) - Shows counters for mesh data.
+* [Unity Editor Icons](https://github.com/halak/unity-editor-icons) - Unity version: 2018.3.0f2 Icons what can load using EditorGUIUtility.IconContent.
+
+### Search <a name="search"></a>
+
+* [Unity Editor Spotlight](https://github.com/marijnz/unity-editor-spotlight) - MacOS-like Spotlight file search in Unity.
+* [UniOmni](https://github.com/lochrist/UniOmni) - Global search for Unity.
+* [Selection History Navigator](https://github.com/mminer/selection-history-navigator) - Unity editor extension to navigate between object selections.
+* [UnityExtensions.SelectionHistory](https://github.com/garettbass/UnityExtensions.SelectionHistory) - Adds navigation menu items in Unity Editor: "Edit/Selection/Back", "Edit/Selection/Forward".
+* [Shortcuter](https://github.com/intentor/shortcuter) - Shortcut utility for Unity. (#SHORTCUTS)
+* [SearchTools](https://github.com/eral/SearchTools) - Search Tools In Unity.
+
+### Events <a name="events"></a>
+
+* [Unity3D Extended Event](https://github.com/Thundernerd/Unity3D-ExtendedEvent "") - A UnityEvent replacement.
+* [Unity Events](https://github.com/GalvanicGames/unity-events) - A code focused strongly typed event system with global system and per GameObject system.
+* [Unity Editor Coroutines](https://github.com/marijnz/unity-editor-coroutines "") - Coroutines for Editor scripts, just like regular coroutines.
+* [ScriptableObjectEvent](https://github.com/Wokarol/ScriptableObjectEvent "")
+* [BetterEvents](https://github.com/7ark/BetterEvents "") - A replacement for UnityEvents that are: better.
+
+### Packs <a name="packs"></a>
+
+* [Vexe Framework (VFW)](https://github.com/vexe/VFW) - An editor extension that offers much more advance editor extensibility features than what comes out of the box with Unity.
+* [BitStrap](https://bitbucket.org/bitcake-studio/bitstrap) - A set of useful tools that will let you quickly bootstrap a new Unity project.
+* [NGTools](https://github.com/naphier/ngtools) - Unity Editor Extensions and Tools by Napland Games.
+* [Unex](https://github.com/adrenak/Unex "") - Unity3D, extended. Includes hotkeys, C# extensions, utilities and more.
+
+### Utilities <a name="extensibility-utilities"></a>
+
+* [Asset Usage Finder](https://assetstore.unity.com/packages/tools/utilities/asset-usage-finder-59997) - Editor extension for finding references of assets inside project and all scene files. :moneybag:
+* [Unity Asset Usage Detector](https://github.com/yasirkula/UnityAssetUsageDetector) - Find usages of the selected asset(s) and/or Object(s) in your Unity project, i.e. list the objects that refer to them.
+* [Missing References Unity](https://github.com/liortal53/MissingReferencesUnity) - A Unity editor extension for finding missing object references.
+* [DT Compile Time Tracker](https://github.com/DarrenTsung/DTCompileTimeTracker) - Unity editor extension which tracks compile time.
+* [Unity3D Automatron](https://github.com/Thundernerd/Unity3D-Automatron) - An automation tool for Unity3D.
+* [CaptureGroup](https://github.com/ByronMayne/CaptureGroup) - A editor tool used to take screenshots for documentation.
+* [Screen Shooter](https://github.com/PhannGor/Screen-Shooter "") - A simple tool for creating screenshots at any resolution within the Unity Editor.
+* [UniDLL](https://github.com/adrenak/UniDLL "") - Editor window to create DLLs from C# code in Unity. (#Utilities)
+* [UnityAndroidIl2cppPatchDemo](https://github.com/noodle1983/UnityAndroidIl2cppPatchDemo "")
+* [Hobbyistcoder.Editor.Utilities](https://github.com/Shogan/Hobbyistcoder.Editor.Utilities "") - Useful editor extensions and utilities for Unity3D.
+* [Unity In-Editor Screen Shooter](https://github.com/ertanturan/Unity-Screenshot-Tool "") - A basic tool for capturing screenshot in Unity at desired resolution.
+
+### WebGL <a name="webgl"></a>
+
+* [Vue Unity WebGL](https://github.com/votetake/vue-unity-webgl "") - A Vue.js component for Unity3D.
+* [React Unity WebGL](https://github.com/elraccoone/react-unity-webgl "") - React Unity WebGL provides an easy solution for embedding Unity WebGL builds in your React application, with two-way communication between your React and Unity application with advanced API's.
+* [Better WebGL Template](https://github.com/greggman/better-unity-webgl-template "") - A better default template for Unity WebGL.
+* [Unity WebGL Utilities](https://github.com/kongregate/Unity-WebGL-Utilities "") - Some helpful utilities for Unity WebGL games.
+* [UnityStreamingMovieTexture](https://github.com/jtothebell/UnityStreamingMovieTexture "") - A movie texture extension for Unity that adds support for WebGL. 
+* [Unity3D Globe](https://github.com/Dandarawy/Unity3D-Globe "") - Unity3D Implementation for Chrome Experiment WebGL Globe.
+
+### Others <a name="extensibility-others"></a>
+
+* [Giacomelli.Unity.EditorToolbox](https://github.com/giacomelli/Giacomelli.Unity.EditorToolbox "") - Unity3d editor tools to make life easier for game developers.
+* [Unity Editor Junkie](https://github.com/roboryantron/UnityEditorJunkie) - Editor scripts to make working with the Unity Editor better
+* [Unity Editor Snippets](https://github.com/pointcache/UnityEditorSnippets) - Collection of different editor things that help with productivity.
+* [Unity Editor Helper](https://github.com/JefferiesTube/UnityEditorHelper) - An organized bunch of scripts to make editor scripting in Unity easier.
+* [Unity Editor LINQ Extensions](https://github.com/bandures/Unity-Editor-LINQ-Extensions) -  Extensions set for Unity Editor that allows traverse hierarchy of GameObject, Components, Assets and their properties.
+* [UnityExtensions MeshIntersection](https://github.com/garettbass/UnityExtensions.MeshIntersection) - Perform a raycast against one or more meshes.
+
+## :department_store: Asset Management <a name="assets-management"></a>
+
+### Package Management <a name="assets-management-packages"></a>
+
+* [Unity Asset Store](https://assetstore.unity.com/) - Official asset store for unity.
+* [Unity Package Manager 2018.3+](https://blogs.unity3d.com/2018/05/09/unity-packages-life-cycle/)
+* [Unity Packman](https://github.com/appetizermonster/unity-packman "") - A tiny package dependency manager for Unity, powered by Github.
+* [UniGet](https://github.com/SaladLab/UniGet "") - The package manager for Unity3D.
+* [Unity Package Unpacker (UPU)](https://github.com/derFunk/UPU "Unitypackage Unpacker.")
+* [Paket.Unity3D](https://github.com/wooga/Paket.Unity3D "") - An extension for the Paket dependency manager that enables the integration of NuGet dependencies into Unity3D projects.
+* [Package Exporter](https://github.com/sloppycombo/PackageExporter "") - Easily export a folder of scripts and assets as a local Unity 2018 package for use with the new Package Manager. 
+* [UnityPackageTemplate](https://github.com/iBicha/UnityPackageTemplate "") - A template for creating Unity packages.
+* [UnityPacker](https://github.com/FatihBAKIR/UnityPacker "") - Create unitypackages without unity, from command line.
+* [AssetMessenger](https://github.com/wataru-ito/AssetMessenger "") - Unofficial Issuetracker for the Unity Asset Store.
+* [RotateMe](https://github.com/mob-sakai/RotateMe "") - A tutorial for "How to develop a package for UnityPackageManager".
+* [Unitypackage Extractor](https://github.com/Cobertos/unitypackage_extractor "") - Extract a .unitypackage.
+* [Unity Package Tools](https://github.com/jeffcampbellmakesgames/unity-package-tools "") - A set of developer tools to make it easier to create and distribute packages for the native Unity Package Manager.
+* [Tool UnityAssetCleaner](https://github.com/unity-cn/Tool-UnityAssetCleaner "") - UnityAssetCleaner will remove unused assets, script and shader in your game and projects.
+
+
+### Asset Bundles <a name="assets-management-bundles"></a>
+
+* [AssetBundleManager](https://github.com/SadPandaStudios/AssetBundleManager "") - An asset bundle manager for Unity.
+* [KEngine](https://github.com/mr-kelly/KEngine) - A Unity3D asset bundle framework with LGPL license.
+* [AssetBundleManager](https://github.com/pinkpanther79/AssetBundleManager "") - Unity AssetBundle Manager.
+* [Asset Auditing Tools](https://github.com/Unity-Technologies/asset-auditing-tools) - A set of Editor tools to audit project assets and correct errors. ![Official](UnityResource16x16.png)
+* [AssetStudio](https://github.com/RaduMC/AssetStudio "") - AssetStudio is an independent tool for exploring, extracting and exporting assets.
+* [UnityPack](https://github.com/HearthSim/UnityPack "") - Python deserialization library for Unity3D Asset format.
+* [AssetBundlePatch](https://github.com/dpull/AssetBundlePatch "")
+* [UABE](https://github.com/DerPopo/UABE "") - Unity Assets Bundle Extractor.
+* [UnityAssetCleaner](https://github.com/tsubaki/UnityAssetCleaner "")
+* [UtinyRipper](https://github.com/mafaca/UtinyRipper "") - Tool for ripping assets from Engine resource files.
+* [AssetBundleChecker](https://github.com/wotakuro/AssetBundleChecker "")
+* [XAsset](https://github.com/fengjiyuan/xasset "")
+* [Zcode AssetBundlePacker](https://github.com/xtqqksszml/zcode-AssetBundlePacker "") - Create, build and manage Asset Bundles packages. Supports version control and more.
+* [Asset Bundle Analyzer](https://github.com/faelenor/asset-bundle-analyzer "") - This tool extracts useful information from Unity asset bundles and stores the information in an SQLite database.
+* [ABSystem](https://github.com/tangzx/ABSystem "")
+
+### Asset Store <a name="assets-management-store"></a>
+
+* [Publisher-Extension-for-Unity3D](https://github.com/Mintonne/Publisher-Extension-for-Unity3D "") - Access your Unity3D publisher information in a click.
+* [Asset Store Support Window](https://github.com/AlexanderAmeye/asset-store-support-window "") - A support window template for publishers of the Unity Asset Store.
+* [Unity Asset Promotion Guidelines](https://github.com/EmpireWorld/unity-asset-promotion "") - Unity Asset Store Package Promotion Guidelines.
+* [ASInstaller](https://github.com/thinksquirrel/ASInstaller "") - Unity Asset Store Package Installer.
+* [UAS Issue Tracker](https://github.com/uas-publishers/uas-issuetracker "") - Unofficial Issuetracker for the Unity Asset Store.
+
+## Modding <a name="modding"></a>
+
+* [Harmony](https://github.com/pardeike/Harmony "") - A library for patching, replacing and decorating .NET and Mono methods during runtime
+* [dnSpy](https://github.com/0xd4d/dnSpy "") - A library for patching, replacing and decorating .NET and Mono methods during runtime.
+* [MonoMod](https://github.com/0x0ade/MonoMod "") - A general purpose .NET assembly modding "basework", powered by cecil.
+* [PartialityLauncher](https://github.com/PartialityModding/PartialityLauncher "") - The launcher for Partiality.
+
+## Misc. <a name="miscellaneous"></a>
+
+* [Unity Version Manager](https://github.com/wooga/unity-version-manager "") - Tool that just manipulates a link to the current unity version. Unity already provides a similar tool (Unity Hub).
+* [Incremental Compiler](https://github.com/SaladLab/Unity3D.IncrementalCompiler "") - Incremental Compiler Github's Page
+* [Unity3D.IncrementalCompiler](https://github.com/SaladLab/Unity3D.IncrementalCompiler "") - Unity3D Incremental C# Compiler using Roslyn.
+* [Il2CppDumper](https://github.com/Perfare/Il2CppDumper "") - Get types, methods, fields and so on from Unity Il2Cpp binary file.
+* [ILSpy](https://github.com/icsharpcode/ILSpy "") - .NET Decompiler.
+* [dotPeek](https://www.jetbrains.com/decompiler/ "") - Jetbrains decompiler.
+* [Unity Metadata Loader](https://github.com/nevermoe/unity_metadata_loader "") - This project will load strings and method/class names in global-metadata.dat to IDA.
+* [ConditionalCompilationUtility](https://github.com/Unity-Technologies/ConditionalCompilationUtility "") - Automatically add defines upon the detection of predicate classes. ![Official](UnityResource16x16.png)
+* [FontainebleauDemo](https://github.com/Unity-Technologies/FontainebleauDemo "") - Fontainebleau demo (#PHOTOGRAMMETRY) ![Official](UnityResource16x16.png)
+* [UnityPlayground](https://github.com/Unity-Technologies/UnityPlayground "") - A collection of simple scripts to create 2D physics game, intended for giving workshops to a young audience. ![Official](UnityResource16x16.png)
+* [KenneyNL](https://www.kenney.nl/ "") - Tools, free assets and more.
+* [Fellow Oak Dicom](https://github.com/fo-dicom/fo-dicom "") - Fellow Oak DICOM for .NET, .NET Core, Universal Windows, Android, iOS, Mono and Unity.
+* [UnityWorker](https://github.com/OpenMined/UnityWorker "") - (#DEPRECATED)
+* [uDesktopDuplication](https://github.com/hecomi/uDesktopDuplication "") - Desktop Duplication API implementation for Unity (only for Windows 8/10).
+* [UnityAssets](https://github.com/BLINDED-AM-ME/UnityAssets "") - ?
+* [SuperScience](https://github.com/Unity-Technologies/SuperScience "") - Gems of Unity Labs for our user-base. ![Official](UnityResource16x16.png)
+* [Unity WaterBuoyancy](https://github.com/dbrizov/Unity-WaterBuoyancy "") - Water Buoyancy Simulation for Unity.
+* [Performance Benchmark Reporter](https://github.com/Unity-Technologies/PerformanceBenchmarkReporter "") - The Unity Performance Benchmark tool enables partners and developers to establish benchmark samples and measurements using the Performance Testing package, then use these benchmark values to compare subsequent performance test results in an html output utilizing graphical visualizations. ![Official](UnityResource16x16.png)
+* [UnEngine](https://github.com/jbruening/UnEngine "") - A clone of the UnityEngine.dll so you can write and test scripts outside of Unity.
+* [Ardity](https://github.com/dwilches/Ardity "") - Assets for integrating Arduino and Unity (or Unity and any hardware that communicates over a COM port).
+* [Wrmhl](https://github.com/relativty/wrmhl "") - Super fast communication beetwen Unity3D and Arduino. Create Interactive experiences in a minute.
+* [Unity Arduino Examples](https://github.com/tanyuan/unity-arduino-examples "") - Unity and Arduino example projects.
+* [Delft Toolkit v2](https://github.com/pvanallen/delft-toolkit-v2 "") - Tool for Designing Smart Collaborative Things.
+* [UnitySerialPort](https://github.com/prossel/UnitySerialPort "") - Script to work with serial port in Unity. Optimized to work with TSV, CSV or other character delimited values.
+* [URDF Loaders](https://github.com/gkjohnson/urdf-loaders "") - URDF Loaders for Unity and THREE.js with example ATHLETE URDF Files.
+* [3D Y86](https://github.com/chenkaiyu1997/3D-Y86 "") - A 3D Y86 simulator with tangible processors, light trails and halos, powered by Unity-3D.
+* [Braccio IK Unity](https://github.com/tanyuan/braccio-ik-unity "") - Braccio robotic arm simulator with IK (inverse kinematics) and controller via Serial in Unity.
+* [Mesh Streamer](https://github.com/glowbox/mesh-streamer "") - A general purpose system for streaming mesh data into Unity.
+* [Concordia Module](https://github.com/sblack-usu/concordia-module "")
+* [DotLiquid](https://www.nuget.org/packages/DotLiquid/1.8.0 "") - A templating system ported to the .NET framework from Ruby’s Liquid Markup.
+* [Schemy](https://github.com/Microsoft/schemy "") - A lightweight embeddable Scheme-like interpreter for configuration.
+* [Flunity](https://github.com/canab/flunity "") - Main idea is make it possible to use Adobe Flash for creating visual content for Unity games.
+* [Unity Matrix Order](https://github.com/KoltesDigital/unity-matrix-order "") - Minimal project to outline matrix application in Unity.
+* [ThreeDScans](https://github.com/keijiro/ThreeDScans) - Scanned statue models from the Three D Scans project, optimized for real-time rendering use.
+* [Environment](https://github.com/Roland09/Environment "") - Environmental Assets for Unity Prototyping.
+* [Unicorn](https://github.com/Roland09/Unicorn "") - A custom made Unicorn Horn with optional rainbow particle effects.
+* [PeppersGhostStage](https://github.com/cecarlsen/PeppersGhostStage "") - Perppers Ghost stage model.
+* [UnitySamples](https://github.com/hiryma/UnitySamples "")
+* [Hw18 Infinity ECS](https://github.com/UnityTech/hw18-infinity-ecs "") - Unity Hackweek 2018 project.
+* [AnotherThreadECS](https://github.com/Unity-Technologies/AnotherThreadECS "") - A demo made with ECS. ![Official](UnityResource16x16.png)
+* [Laser Eye Surgery](https://github.com/dixonary/laser-eye-surgery "") - A game made with Unity in 48 hours for Global Game Jam, using the Tobii EyeX Eye Tracker.
+* [Unity Visual Effects Graph Practice](https://github.com/ya7gisa0/Unity-Visual-Effects-Graph-Practice "") - Project data of my artwork "Demographics of Israel: Data Sculpture".
+* [Unity Graphics Demo](https://github.com/Heep042/Unity-Graphics-Demo "") - This is a project demonstrating the capabilities of the Unity 3D engine. Everything is taken from all over the place. Links to the original owners are provided.
+* [ChemistryEngine](https://github.com/Dalab-LabX/ChemistryEngine "") - Chemistry Engine for Unity.
+* [Eflatun.ReflectiveECS](https://github.com/starikcetin/Eflatun.ReflectiveECS "") - A proof of concept for a reflection-based ECS system for C#.
+* [Unity3D Experiments](https://github.com/papaboo/Unity3D-experiments "") - A unity project containing several subprojects with experiments. They have been stuffed into one project to easily share resources across experiments.
+* [Unity3D.CharacterCreator](https://github.com/Shogan/Unity3D.CharacterCreator "") - A character creator project utilising DynamoDB for character configuration storage.
+* [Pepper's Cone Unity](https://github.com/gucheng0712/Pepper-s-Cone-Unity "") - Pepper's Cone with Unity.
+* [Sample AfterEffectsToUnity](https://github.com/hiryma/Sample-AfterEffectsToUnity "") - Example of exporting after effects animations to Unity.
+* [Galaxia Runtime](https://github.com/simeonradivoev/Galaxia-Runtime "") - Galaxy generator for Unity 3D, with Custom Particle Distributors, DirectX 11 Particles and Highly customization, curve driven Generation.
+* [Galaxia Editor](https://github.com/simeonradivoev/Galaxia-Editor "") - The editor scripts for Galaxia.
+* [UnityHDROutputPlugin](https://github.com/aosoft/UnityHDROutputPlugin "") - Unity HDR Display Output plugin for Windows 10.
+* [GodofWar AxeThrow](https://github.com/mixandjam/GodofWar-AxeThrow "") - Recreating the Axe Throw mechanic from God of War.
+* [MiraikomachiUnity](https://github.com/Miraikomachi/MiraikomachiUnity "") - Anime character for Unity.
+* [ECS Phyllotaxis](https://github.com/jeffvella/ECS-Phyllotaxis "") - Learning ECS - 100k Cubes in Phyllotaxis pattern.
+* [CustomWorldBootstrap](https://github.com/Sibz/CustomWorldBootstrap "")
+* [UnitySamples](https://github.com/hiryma/UnitySamples "")
+* [Unity 3D Lessons](https://github.com/Winchy/Unity3d-Lessons "")
+* [SimpleIncremental](https://github.com/ErikOverflow/SimpleIncremental "") - A simple Unity project that introduces many of Unity's cooler advanced concepts.
+* [Physarum](https://github.com/DenizBicer/Physarum "") - This project implements the algorithm presented in the paper "Characteristics of Pattern Formation and Evolution in Approximations of Physarum Transport Networks" by Jeff Jones.
+* [Libmmd for Unity](https://github.com/x3bits/libmmd-for-unity "") - A library for loading mikumikudance files at runtime in Unity 3D.
+
+# :mortar_board: Learning Resources <a name="learning-resources"></a>
+
+## :rocket: Tips and Tricks <a name="tips-tricks"></a>
 
 * [Editor Tips](http://imgur.com/a/2w7zd) - Tips in gif form showing a few ways to use the editor more efficiently.
 * [Unity Tips](https://unity3d.com/learn/tutorials/topics/tips) - Short videos showing some handy tips when using Unity.
+* [Devdog UnityTips Compilation](https://devdog.io/blog/?tag=UnityTips) - Tweets gathered by Devdog with tips and tricks posted by developers.
+* [#UnityTips](https://twitter.com/hashtag/unitytips?src=hash) - Hashtag used in Twitter to post Unity related tips.
+* [Unity Official Tips & Tricks Videos](https://unity3d.com/es/learn/tutorials/topics/tips/unity-tips-tricks) - Video sessions recorded by Unity developers with tips and tricks for Unity.
+* [50 Unity Tips](https://github.com/defuncart/50-unity-tips) - A collection of 50 tips for Unity (focusing on Mobile) ranging from editor tools to serialization to UI shortcuts.
+
+## :books: Books <a name="books"></a>
+
+* [Unity 2018 By Example (Second Edition)](https://www.packtpub.com/game-development/unity-2018-example-second-edition)
+* [Unity Game Development in 24 Hours](https://www.amazon.com/Unity-Development-Hours-Teach-Yourself/dp/0134998138/ref=sr_1_fkmrnull_1?keywords=Unity+2018+Game+Development+in+24+Hours%2C+Sams+Teach+Yourself&qid=1548086253&s=Books&sr=1-1-fkmrnull)
+* [Unity in Action: Multiplatform Game Development in C# with Unity 5](https://www.amazon.com/gp/product/161729232X/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=161729232X&linkId=9c6a4f1db8f9e25c9e2d6458173de5e0)
+* [Learning C# by Developing Games with Unity 5.x](https://www.amazon.com/gp/product/1785287591/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1785287591&linkId=4a8a6d17929b1f02e6ad4cbadf32cc9d)
+* [Unity 5.x By Example](https://www.amazon.com/gp/product/1785888382/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1785888382&linkId=abdb54c6f24add55caf7ce2665bc4ac1)
+* [Unity AI Game Programming](https://www.amazon.com/gp/product/178528827X/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=178528827X&linkId=dd52e71985b54d994f76cc3dd6433296)
+* [Mastering Unity 2D Game Development](https://www.amazon.com/gp/product/1786463458/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1786463458&linkId=da46c86948003f30fd307e718917f597)
+* [Unity 5.x Shaders and Effects Cookbook](https://www.amazon.com/gp/product/1785285246/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1785285246&linkId=a26109ceb55490f774420795467c3fdb)
+* [Unity UI Cookbook](https://www.amazon.com/gp/product/1785885820/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1785885820&linkId=2c0abb5a96d14d3d27e37d13114bbfba)
+* [Unity 5.x Cookbook](https://www.amazon.com/gp/product/1784391360/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1784391360&linkId=29ff0faf721f67a07eea3f0de919527b)
 
-## Tutorials
+## :newspaper: Blogs <a name="blogs"></a>
 
+* [Catlike Coding](http://catlikecoding.com/unity/tutorials/) - Tutorials designed for learning the C# scripting side of Unity. 
+* [Jackson Dunstan](https://jacksondunstan.com/)
+* [Keijiro Takahashi](https://www.keijiro.tokyo/) :fire:
+* [Unity3D Official Blog](https://blogs.unity3d.com/es/) - News and deep insights involving Unity development.
+* [Alan Zucconi's Blog](https://www.alanzucconi.com/) - Shaders and maths. Well explained and very interesting.
+* [Unity Gems Wordpress](https://unitygem.wordpress.com/) - Unity3D tutorials.
+
+## :tv:  Videos <a name="videos"></a>
+
+### :vhs: Youtube Channels <a name="youtube-channels"></a>
+
+* [Unity3D](https://www.youtube.com/channel/UCG08EqOAXJk_YXPDsAvReSg)
+* [Unity3D LatAm](https://www.youtube.com/channel/UCfw-8uwWw5U942pccws0duA)
+* [Brackeys](https://www.youtube.com/channel/UCYbK_tjZ2OrIZFBvU6CCMiA)
+* [Infallible Code](https://www.youtube.com/channel/UCTjnCCcuIbrprhOiaDJxxHA)
+* [Sebastian Lague](https://www.youtube.com/user/Cercopithecan/videos)
+* [quill18creates](https://www.youtube.com/channel/UCPXOQq7PWh5OdCwEO60Y8jQ)
+* [N3K EN](https://www.youtube.com/channel/UCtQPCnbIB7SP_gM1Xtv8bDQ)
+* [Jesse Etzler](https://www.youtube.com/user/JesseEtzler0/videos)
+* [Burg Zerg Arcade](https://www.youtube.com/user/BurgZergArcade/videos)
+* [Sharp Accent](https://www.youtube.com/channel/UCq9_1E5HE4c_xmhzD3r7VMw/videos)
+* [inScope Studios](https://www.youtube.com/user/KnnthRA/videos)
+* [Makin' Stuff Look Good](https://www.youtube.com/channel/UCEklP9iLcpExB8vp_fWQseg/videos)
+* [Shaders Laboratory](https://www.youtube.com/channel/UCDk9-aPr8zQzwi4ylnuoJ6w/videos)
+
+### :vhs: Unity Official Sessions <a name="unity-official-sessions"></a>
+
+:construction:
+* [Unite Asia 2019 Deck (Keijiro)](https://github.com/keijiro/unite-asia-2019-deck) - Presentation deck for my talk at Unite 2019 Shanghai.
+
+## :beginner: Tutorials <a name="tutorials"></a>
+
+* [Game Programming Patterns](http://gameprogrammingpatterns.com/contents.html) - Lots of great game development patterns useful when making games with or without Unity.
+* [UnityGraphicsProgramming](https://github.com/IndieVisualLab/UnityGraphicsProgramming) - UnityGraphicsProgramming vol.1.
 * [2D Splatter Effects Using the Stencil Buffer](http://nielson.io/2015/12/splatter-effects-in-unity-using-the-stencil-buffer) - Using the stencil buffer in Unity to draw splatter effects on surfaces. This could be used for paint or blood splatter.
 * [A Gentle Introduction to Shaders in Unity3D](http://www.alanzucconi.com/2015/06/10/a-gentle-introduction-to-shaders-in-unity3d) - This series of posts will  introduce you to shader coding, and is oriented to developers with little to no knowledge about shaders.
+* [Unity Dev Basic Geometry Shaders](https://github.com/theMaxscriptGuy/Unity_Dev-BasicGeometryShaders "") - An introduction to Geometry Shaders.
 * [Amit’s Game Programming Information](http://www-cs-students.stanford.edu/~amitp/gameprog.html) - An great collection of general purpose game programming content.
-* [Catlike Coding](http://catlikecoding.com/unity/tutorials/) - Tutorials designed for learning the C# scripting side of Unity.
 * [Fixing Gaps Between Sprites](http://nielson.io/2015/10/fixing-gaps-between-sprites-better-2d-in-unity-part-2) - A short tutorial about removing the small gaps that sometimes appear between adjacent sprites.
-* [Game Programming Patterns](http://gameprogrammingpatterns.com/contents.html) - Lots of great game development patterns useful when making games with or without Unity.
 * [Modern GUI Development in Unity 4.6](https://www.youtube.com/playlist?list=PLt_Y3Hw1v3QTEbh8fQV1DUOUIh9nF0k6c) - A video tutorial providing an in-depth explanation of Unity's new UI system. 
 * [Official Video Tutorials](http://unity3d.com/learn/tutorials/modules) - The official tutorials for scripting, animation, audio, and almost anything Unity related.
 * [Ray Wenderlich's Tutorials](http://www.raywenderlich.com/category/unity) - Beginner and mid-level tutorials focused on learning Unity features or creating small example games.
 * [Unity in HoloLens](https://developer.microsoft.com/en-us/windows/holographic/unity_development_overview) - Official tutorials from Microsoft for creating Microsoft HoloLens applications.
 * [Unity Virtual Reality](http://docs.unity3d.com/Manual/VROverview.html) - Unity's official documentation on developing virtual reality applications.
+* [Character Customization Tutorial](https://github.com/Glauz/Unity3D-CharacterCustomizationTutorial) - This is the finished project of part 4 of the tutorial series for using blendshapes for character customization in Unity3D.
+* [Roll A-Ball ECS Style](https://github.com/KptEmreU/Roll-A-Ball-ECS-style) - Recreation of Unity Roll-A-Ball tutorial using Entity Component System.
+* [Unity Shader Tutorials](https://github.com/lindenreid/Unity-Shader-Tutorials) - Full project and code for all of my shader tutorials.
+* [Unity3D Shaders Learning](https://github.com/TarasOsiris/unity3d-shaders-learning) - ust learning Unity3D shaders here.
+* [Shader Graph Tutorials](https://github.com/Brackeys/Shader-Graph-Tutorials) - Project files for our tutorials on using Shader Graph in Unity.
+* [UnityVJShaderSlide20181108](https://github.com/kaiware007/UnityVJShaderSlide20181108)
+* [Learning-Unity-ECS](https://github.com/starikcetin/Learning-Unity-ECS)
+* [UnityGraphicsProgramming Vol.2](https://github.com/IndieVisualLab/UnityGraphicsProgramming2) - Unity Graphics Programming vol.2
+* [ShaderGraphExample](https://github.com/rngtm/ShaderGraphExample)
+* [Introduction to Shaders by Alan Zucconi](http://www.alanzucconi.com/2015/06/10/a-gentle-introduction-to-shaders-in-unity3d/) - Alan Zucconi's blog post introducing Unity shaders.
+* [Resources for Writing Shaders in Unity](https://github.com/VoxelBoy/Resources-for-Writing-Shaders-in-Unity) - For the UNITE Boston 2015 talk titled Writing Shaders: YOU can do it!
+* [Unity Character Customization](https://github.com/eriseven/UnityCharacterCustomization) - A character customization demo for Unity.
+* [Complete Unity 2018 Game Development](https://github.com/PacktPublishing/Complete-Unity-2018-Game-Development) - Explore techniques to build 2D/3D applications using real-world examples.
+* [UnityShaderCheatsheet](https://github.com/nothke/UnityShaderCheatsheet) - Collection of Unity shader copypastas and gotchas.
+* [Simple ECS](https://github.com/AkanshDivker/Simple-ECS) - An example using the core features of the Entity Component System (ECS) for Unity, inspired by Roll-a-ball.
+* [Unity Projection Mapping Tutorial](https://github.com/keijiro/unity-pm-tutorial "") - Projection Mapping tutorial.
+* [Unity Android Plugin Example](https://github.com/Real-Serious-Games/Unity-Android-Plugin-Example "") - A simple example of an Android specific plugin for Unity3D.
+* [SurvivalShooterECS](https://github.com/davidpol/SurvivalShooterECS "") - A port of Unity's official Survival Shooter tutorial to the Entity Component System.
+* [ClassicToHybrid](https://github.com/seanmoakes/ClassicToHybrid "") - A look into how to implement Hybrid ECS in a classic Unity Project.
+* [PrefabWorkflows SpiderRobots](https://github.com/UnityTechnologies/PrefabWorkflows_SpiderRobots "") - Demo Project showing the new Prefab Workflows: Prefab Mode, Editing and Nesting!
+* [Marching Cubes](https://github.com/SebLague/Marching-Cubes "")
+
+## :star: Best Practices <a name="best-practices"></a>
+
+### :abcd: Coding Practices <a name="coding-practices"></a>
+
+* [Good Coding Practices in Unity](https://trello.com/b/Z6cDRyis/good-coding-practices-in-unity) - Trello board with good coding practices in Unity.
+* [Reddit's Unity Best Practices](https://www.reddit.com/r/Unity3D/comments/81v4te/what_are_software_development_best_practices_for/) - Reddit's thread with best practices collected by Unity developers.
+* [Unity Good Practices](https://github.com/futurice/unity-good-practices) - Github repository with Unity best practices.
+* [Gamasutra's 50 Tips & Best Practices](http://www.gamasutra.com/blogs/HermanTulleken/20160812/279100/50_Tips_and_Best_Practices_for_Unity_2016_Edition.php) - Gamasutra article with 50 tips and best practices.
+* [Unity3D Official Best Practices](https://unity3d.com/es/learn/tutorials/s/best-practices) - Unity's official page for best practices.
+
+### :capital_abcd: Organizational Practices <a name="organizational-practices"></a>
+
+:construction:
+
+## :triangular_ruler: Style Guide <a name="style-guide"></a>
+
+* [Unity Styl eGuide](https://github.com/stillwwater/UnityStyleGuide) - The Ramen Unity Style Guide: For file structure, naming conventions and other things.
+
+## :key: Shortcuts <a name="shortcuts"></a>
+
+* [Unity Editor Hotkeys](https://docs.unity3d.com/Manual/UnityHotkeys.html) - Unity manual's page with editor hotkeys.
+* [Simple Editor Shortcuts Tools Collection](https://bitbucket.org/sirgru/simple-editor-shortcuts-tools-collection) - This is a small collection of simple tools to help in scene editing workflows.
+* [Raywenderlich.com Unity Cheatsheet](https://koenig-media.raywenderlich.com/uploads/2017/12/UnityCheatSheet.pdf) - Cheatsheet with some common problems when developing with Unity.
+* [Cheatografy Cheatsheet](https://www.cheatography.com/narren/cheat-sheets/unity-3d-engine/) - Hotkeys for Unity editor.
+* [UniteBerlin](https://github.com/VoxelBoy/UniteBerlin) - Repository for my Unite Berlin talk - Become a Speed Demon: Being faster at everything you do in Unity.
+
+## :paperclip: Other references <a name="other-references"></a>
+
+* [Unity3D Github Page](https://github.com/Unity-Technologies "") :octocat: - Unity3D Github Page. ![Official](UnityResource16x16.png)
+* [Unity3D C# Reference](https://github.com/Unity-Technologies/UnityCsReference "") - Unity C# reference source code. ![Official](UnityResource16x16.png)
+* [Unity3D Script Reference](http://docs.unity3d.com/ScriptReference/ "") - Unity scripting reference.
+* [UnityReleaseNotes](https://github.com/UnityCommunity/UnityReleaseNotes "") - Unity Release Notes. To be used with Github search.
+* [Unity Roadmap](http://unity3d.com/roadmap "") - Unity Feature Roadmap.
+* [Microsoft HLSL Reference](https://docs.microsoft.com/en-us/windows/desktop/direct3dhlsl/dx-graphics-hlsl-reference "") - HLSL language reference for shaders.
+* [NVIDIA CG Reference](http://developer.download.nvidia.com/cg/index_stdlib.html "") - NVIDIA's computer graphics reference for shaders.
+* [Unity Graphics Reference](https://docs.unity3d.com/Manual/GraphicsReference.html "") - Unity Feature Roadmap.
+* [Job System Cookbook](https://github.com/stella3d/job-system-cookbook "") - Examples of using the C# Job System in Unity 2018.
+* [Unity Editor Manual](http://anchan828.github.io/editor-manual/ "") - Unity editor unofficial manual written in Japanese.
+* [Awesome Unity](https://github.com/RyanNielson/awesome-unity "") - Awesome list repository for Unity. (Already integrated in the repository) 
+* [Awesome Unity Free](https://github.com/netpyoung/awesome-unity-free "") - A community driven list of useful Unity Game Engine 'FREE' packages, libraries and others. (Note: Resources are already integrated into this repository).
+* [Awesome Unity3D](https://github.com/insthync/awesome-unity3d "") - A categorized collection of awesome opensource unity3d repos.
+* [Unity Script Collection](https://github.com/michidk/Unity-Script-Collection "") - A maintained collection of useful & free unity scripts / library's / plugins and extensions.
+* [Unity3d Open Source](https://unity3d-open-source.zeef.com/taras.leskiv "") - Useful Unity repositories sorted by topics.
+* [Unity Script Collection](https://github.com/michidk/Unity-Script-Collection "") -  A maintained collection of useful & free unity scripts / library's / plugins and extensions. 
+* [Awesome Unity Wiki](https://github.com/agarcialeon/awesome-unity/wiki "") - The wiki of this repository.
+
+# :trophy: Recommended Asset Store Packages <a name="recommended-packages"></a>
+
+* [Text Mesh Pro](https://assetstore.unity.com/packages/essentials/beta-projects/textmesh-pro-84126 "") - Text rendering with Signed distance fields. Better than default text component. (FREE)
+* [Odin Inspector & Serializer](https://assetstore.unity.com/packages/tools/utilities/odin-inspector-and-serializer-89041 "") - Serializes your data so you can see it how you want in your editor window. (PAID)
+* [Gaia](https://assetstore.unity.com/packages/tools/terrain/gaia-42618 "") - Procedural terrain generator. (PAID)
+* [Amplify Shader Editor](https://assetstore.unity.com/packages/tools/visual-scripting/amplify-shader-editor-68570 "") - Shader Graph Editor. Competes against Unity Official Shadergraph. (PAID)
+...
+
+# Projects <a name="projects"></a>
+
+## :video_game: Games <a name="games"></a>
+
+* [AngryBots2](https://github.com/UnityTechnologies/AngryBots2) - An example Unity Project, developed by Unity Technologies, used to demonstrate several features.
+* [BoatAttack](https://github.com/Verasl/BoatAttack) - Demo Project using the Lightweight Render Pipeline from Unity3D.
+* [Hogwarts](https://github.com/OpenHogwarts/hogwarts) - Hogwarts (Harry Potter) open sandbox game made in Unity.
+* [Unitystation](https://github.com/unitystation/unitystation) - Remake of the simulator Space Station 13.
+* [SanAndreasUnity](https://github.com/GTA-ASM/SanAndreasUnity) - We're porting GTA: San Andreas to Unity!
+* [MafiaUnity](https://github.com/OpenMafia/MafiaUnity) - Open-source Mafia game framework.
+* [GuitarHeroUnity](https://github.com/caffeine239/GuitarHeroUnity) -  Guitar Hero fan game made in Unity.
+* [UnityTetris](https://github.com/Mukarillo/UnityTetris) - Tetris clone written in C# and using Unity engine to render.
+* [Nodulus](https://github.com/Hyperparticle/nodulus) - A complete puzzle game with a clever twist. Play it online.
+* [Phaserbeak](https://github.com/DarrenTsung/laserbeak) - Fasecst-paced, local-multiplayer party game. Controls are simple to pick-up, but hard to master and every round features a different mechanic.
+* [Pacman](https://github.com/vilbeyli/Pacman) - A Pacman clone with original AI made using Unity.
+* [Minesweeper](https://github.com/vilbeyli/Minesweeper) - Tile based Minesweeper game with highschores made in Unity.
+* [Colorus](https://github.com/nicloay/colorus) - Coloring book game for Web/iOS made with Unity.
+* [FPS Sample Project](https://github.com/Unity-Technologies/FPSSample "A first person multiplayer shooter example project in Unity") - A first person multiplayer shooter example project in Unity. ![Official](UnityResource16x16.png)
+* [PokemonUnity](https://github.com/PokemonUnity/PokemonUnity "") - A framework to build Pokémon RPG games. Uses Unity 2017.41f1.
+* [TheItch](https://github.com/Dayn9/TheItch "") - The Itch is a 2D platformer developed with Unity C# about using your heartrate to overcome obstacles.
+* [RedRunner](https://github.com/BayatGames/RedRunner "") - Awesome Platformer Game.
+* [SpaceShooterECS](https://github.com/UnityTechnologies/SpaceShooterECS "") - The ECS project originally developed with Intel for GDC 2018.
+* [Fighting-Survival](https://github.com/OmarAlesharie/Fighting-Survival "") - The ECS project originally developed with Intel for GDC 2018.
+* [MachineLearningRoguelike](https://github.com/UnityTechnologies/MachineLearningRoguelike "") - A small Roguelike game that uses Machine Learning to power its entities. (#MACHINE LEARNING)
+* [SLGanim](https://github.com/Phynic/SLGanim "")
+* [FinalAudition](https://github.com/bonzajplc/FinalAudition "") - A complete remake of 2005 demo "Final Audition" by Plastic. After 12 years remade in Unity and now available in VR.
+* [EntitasGard](https://github.com/BahuMan/EntitasGard "") - ECS driven implementation of an RTS.
+* [ProjectRPG](https://github.com/WouterHeslinga/ProjectRPG "") - RPG made in Unity.
+* [Ganga RTS](https://github.com/gangashman/Ganga-RTS "") - Ganga RTS is an open-source multiplayer-player medieval-fantasy 3D RTS (obviously) based on an Unity engine and inspired by classic RTS.
+* [RTS Project](https://github.com/Altadsa/RTS-Project "") - Real Time Strategy Game made in Unity.
+* [UnityBust-a-Move](https://github.com/Mukarillo/UnityBust-a-Move "") - Bust-a-Move clone written in C# and using Unity engine to render.
+* [Dungeon Escape](https://github.com/alekseyzakharo/Dungeon-Escape "")
+* [Survival Shooter Multiplayer Unity3D Files](https://github.com/madvas/survival-shooter-multiplayer-unity3d-files "") - Cute web based multiplayer shooter game made with Unity3D.
+* [Project Skylines](https://github.com/Zaphyk/project-skylines "") - Procedural retro 3d game for the GitHub Gameoff 2017 .
+* [Deer](https://github.com/zrdumped/Deer "") - A low-poly digital game about family and finding himself.
+* [Virus Alpha](https://github.com/dave95b/Virus-Alpha "") - Game made in Unity for the needs of university classes in the group of four.
+* [Fruit Ninja Replica](https://github.com/Brackeys/Fruit-Ninja-Replica "") - Source code for a Fruit Ninja replica created during a Twitch Livestream.
+* [Cut the Rope Replica](https://github.com/Brackeys/Cut-the-Rope-Replica "") - Source code for a Cut the Rope replica created during a Twitch Livestream.
+* [CatBox MultiPlayerAR](https://github.com/gucheng0712/CatBox-MultiPlayerAR "") - A Multiplayer AR Game Based on the Unity, Vuforia and Node.js -- Marker Based Pokemon Go Style Game. (#AUGMENTED-REALITY)
+* [AR BasketballMachine](https://github.com/gucheng0712/AR-BasketballMachine "") - An AR- Vuforia Project about the basketball machine. Shoot method include swap screen, Voice Command. (#AUGMENTED-REALITY)
+* [Sudoku Unity](https://github.com/Umar-Eh/Sudoku-Unity "") - A sudoku game built using the Unity framework and written in C#.
+* [ECS2048](https://github.com/Prastiwar/ECS2048 "") - 2048 like game using Unity's ECS.
+* [2048](https://github.com/dgkanatsios/2048 "") - Building the 2048 game in Unity in C# and Visual Studio.
+* [Sugar Warrior](https://github.com/Brackeys/Sugar-Warrior "") - A game created for the first Brackeys Game Jam!
+* [UnityTD](https://github.com/wildex999/unitytd "") - Tower Defense Game with online Multiplayer.
+* [BrightSouls](https://github.com/leotgo/BrightSouls "") - An indie "Dark Souls" clone in Unity with Adaptive Game Technology.
+* [Combat Cars](https://github.com/keatonmay/Combat_cars "") - A multiplayer racing game made in Unity.
+* [Bright Souls](https://github.com/leotgo/BrightSouls "") - An indie "Dark Souls" clone in Unity with Adaptive Game Technology. 
+* [I Just Want to Play Minigolf](https://github.com/alexismorin/I-Just-Want-to-Play-Minigolf "") - Open Source Procedural VR Minigolf.
+* [Hydrogen Bomb Test Dummy](https://github.com/alexismorin/Hydrogen-Bomb-Test-Dummy "") - Lighthearted Physics-Based Survival.
+* [Morgan Travels Through Time](https://github.com/AArtlone/Morgan-Travels-Through-Time "") - A game series about a child from 2019 who accidentally ends up in 1672 as they followed the neighbor's kid. Morgan needs to find their way back to their own time.
+* [Race Game](https://github.com/BenjaminViranin/Race-Game "") - 3D Race Game on Unity.
+* [FantasyTrip](https://github.com/Guznat/FantasyTrip "") - Mobile 2D platform game created with Unity and C#.
+* [Voice Controlled Unity Game](https://github.com/gesture-based-ui-development/voice-controlled-unity-game "") - Repository containing the source code and development of a gesture based unity game using speech recognition.
+* [HoloMagnet3](https://github.com/feel-physics/HoloMagnet3) - Science (Physics) education app for HoloLens.
+* [RPG](https://github.com/UnityProjectProgramming/RPG) - RPG Game, Developed in Unity3D.
+
+# :busts_in_silhouette: Communities <a name="communities"></a>
+
+## :speech_balloon: Chat Servers <a name="chat-servers"></a>
+
+:construction:
+
+## Forums <a name="forums"></a>
+
+* [/r/Unity3D](https://www.reddit.com/r/Unity3D/ "") - Reddit forum focused in 3D Unity projects.
+* [/r/Unity2D](https://www.reddit.com/r/Unity2D/ "") - Reddit forum focused in 2D Unity projects.
+* [Unity Forum](https://forum.unity.com/ "") - Unity3D Official Forum.
+* [Unitylist](https://unitylist.com/) - Search for everything.
+* [Armedunity](https://armedunity.com/) - Shooter focused forum.
+
+## Groups <a name="groups"></a>
+
+* [Unity Connect](https://connect.unity.com/ "") - Unity official's marketplace for work showcase, job hunting and contact with other developers.
+* [Unity User Groups](https://unity3d.com/es/community/user-groups "") - Unity user groups around the globe. Find yours.
+* [Unity Community](https://github.com/UnityCommunity "") - Home for Unity Community Utilities (Snippets, Scripts, Shaders, Projects, ...). Everyone is free to post.
+
+## :name_badge: People to follow <a name="people-to-follow"></a>
+
+### Unity Developers <a name="follow-unity-developers"></a>
+
+* Keijiro Takahashi [Twitter](https://twitter.com/_kzr) / [Github](https://github.com/keijiro)
+* Andy Touch [Twitter](https://twitter.com/andytouch) - Builds feature demos at @Unity3d Technologies. Tweets about Shaders, Game Technology, Art and more.
+* Mike Geig [Twitter](https://twitter.com/mikegeig) - Global Head of Evangelism Content.
+* Adam Myhill [Twitter](https://twitter.com/Adamjcmyhill) - Creator of Cinemachine.
+* Ciro Continisio [Twitter](https://twitter.com/CiroContns) -  Tech Evangelist. Unity, graphics, design and game jams.
+* Jonathan Chambers [Twitter](https://twitter.com/jon_cham) - Developer at Unity3D. IL2CPP and Mono.
+* Unity3D [Twitter](https://twitter.com/unity3d) - Unity Official Account on Twitter. Blog posts, tips, developers retweets.
+
+### Independent Developers <a name="follow-independent-developers"></a>
+
+* Alan Zucconi [Twitter](https://twitter.com/AlanZucconi) - Tutorials, shaders and math theory well explained.
+* Andy Duboc [Twitter](https://twitter.com/andyduboc) / [Github](https://github.com/andydbc) -  Cool effects and particle systems.
+* Sebastian Lague [Twitter](https://twitter.com/SebastianLague) - Unity and Blender game development tutorials.
+* Minionsart [Twitter](https://twitter.com/minionsart) - Artist/Shaderwitch/Programmer. Weekly tutorials on 3D/Unity.
+* Linden Reid [Twitter](https://twitter.com/so_good_lin) - Tech artists at Blizzard. Shares shader tutorials.
+* Jeppe Zapp [Github](https://github.com/mrzapp) - Unity tools and utilities.
+* Mix & Jam [Github](https://github.com/mixandjam) - Unity video tutorials on Youtube.
+* Takashi Sakai [Github](https://github.com/mob-sakai) - Unity tools and effects.
+
+# :question: Frequently Asked Questions (FAQ) <a name="faq"></a>
+
+:construction:
+
+# :clap: :tada: Contributors to this repository <a name="contributors"></a>
+
+:guardsman: [@agarcialeon](https://github.com/agarcialeon) - Creator
+
+# Contributing <a name="contributing"></a>
+
+Please see [CONTRIBUTING](https://github.com/agarcialeon/awesome-unity/blob/master/CONTRIBUTING.md) for details.
+
+Thanks to all the [contributors](https://github.com/agarcialeon/awesome-unity/graphs/contributors), this wouldn't be possible without you! 
+
+<!--<a href="https://github.com/agarcialeon/awesome-unity/graphs/contributors">
+	 <img src="https://opencollective.com/vuejs/contributors.svg?width=890" /> 
+</a>-->
+
+# Code of Conduct <a name="code-of-conduct"></a>
+
+See [Code of Conduct](https://github.com/agarcialeon/awesome-unity/blob/master/CODE-OF-CONDUCT.md).
+
+# :memo: To be done <a name="to-do"></a>
+
+See the state of the project in the [kanban board](https://github.com/UnityCommunity/AwesomeUnityCommunity/projects/1).
 
-# Contributing
-Please see [CONTRIBUTING](https://github.com/RyanNielson/awesome-unity/blob/master/CONTRIBUTING.md) for details.
+[:top: Back to Top](#awesome-unity)
diff --git a/UnityResource16x16.png b/UnityResource16x16.png
new file mode 100644
index 0000000..235a030
Binary files /dev/null and b/UnityResource16x16.png differ
diff --git a/awesome-unity.png b/awesome-unity.png
new file mode 100644
index 0000000..c1d1a65
Binary files /dev/null and b/awesome-unity.png differ
diff --git a/docs/.nojekyll b/docs/.nojekyll
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/docs/.nojekyll
@@ -0,0 +1 @@
+
diff --git a/docs/2d/2d.md b/docs/2d/2d.md
new file mode 100644
index 0000000..185b73d
--- /dev/null
+++ b/docs/2d/2d.md
@@ -0,0 +1,37 @@
+
+## 2D
+
+* [2D Rope System](https://www.assetstore.unity3d.com/en/#!/content/17722) - Scripts for creating any type of 2D ropes in the editor or during runtime. :fas fa-coins:
+* [2D Toolkit](https://www.assetstore.unity3d.com/en/#!/content/908) - An efficient & flexible 2D sprite, collider set-up, text, tilemap and UI system. :fas fa-coins:
+* [Ferr2D Terrain Tool](https://www.assetstore.unity3d.com/en/#!/content/11653) - Quickly create handcrafted 2D landscapes and levels. :fas fa-coins:
+* [Pixel Camera 2D](https://github.com/RyanNielson/PixelCamera2D) - A simple pixel perfect camera with scaling options for 2D Games.
+* [Spine](http://esotericsoftware.com) - A skeletal animation editor with a Unity library. :fas fa-coins:
+* [Tiled2Unity](https://github.com/Seanba/Tiled2Unity) - Export [Tiled](http://www.mapeditor.org) Map Editor (TMX) files into Unity.
+* [Unity2D TMX](https://github.com/suppayami/unity2d-tmx) - A small library to import and render tilemap in Unity2D, only support TMX file format.
+* [Unity Anima2D](https://www.assetstore.unity3d.com/en/#!/content/79840) - Advanced skeletal animation editor with support for both per-object and skinned mesh animation with an integrated in-editor skinning tool.
+* [UnityTiled](https://github.com/nickgravelyn/UnityTiled) - An importer for [Tiled](http://www.mapeditor.org) maps.
+* [2D Tech Demos](https://github.com/Unity-Technologies/2d-techdemos) - Tech Demos for Unity 2D Features. :fab fa-unity:
+* [SpriteDicing](https://github.com/Elringus/SpriteDicing) - Unity extension for reusing sprite texture areas.
+* [PixelSpriteGenerator-Unity](https://github.com/Shogan/PixelSpriteGenerator-Unity) - A port of the PixelSpriteGenerator to C# for use with the Unity3D game engine.
+* [Unity ECS Instanced Sprite Renderer](https://github.com/paullj/unity-ecs-instanced-sprite-renderer) - An example of a simple performant sprite renderer using Unity's new ECS system.
+* [FogSprites](https://github.com/bricevdm/FogSprites) - Modification of Unity's sprite shaders supporting Fog.
+* [HermodToolkit](https://github.com/Sirithang/HermodToolkit) - A set of 2D tools for Unity.
+* [Unity2D-Components](https://github.com/cmilr/Unity2D-Components) - A constantly evolving array of Unity C# components for 2D games, including classes for pixel art cameras, events & messaging, saving & loading game data, collision handlers, object pools, and more.
+* [2DTileMapLevelEditor](https://github.com/GracesGames/2DTileMapLevelEditor) - 2D Tile Map Level Editor for Unity.
+* [DataRenderer2D](https://github.com/geniikw/DataRenderer2D) - Make mesh like line, polygon, etc in Unity3D.
+* [Cat2DAnimation](https://github.com/cinight/Cat2DAnimation) - 2D Animation Tool.
+* [Live2D with Unity](https://github.com/sera0506/Live-2D-with-Unity) - Import Live2D and read mtn file In Unity3D.
+* [UnityBitmapDrawing](https://github.com/ProtoTurtle/UnityBitmapDrawing) - Bitmap Drawing API extension methods for Unity 3D's Texture2D class.
+* [Futile](https://github.com/MattRix/Futile) - A super simple Unity 2D framework.
+* [BulletPatternEditorUnity](https://github.com/unitycoder/BulletPatternEditorUnity) - Easily create shoot em up bullet patterns.
+* [PolyMesh](https://github.com/UnityPatterns/PolyMesh) - Create 2D shapes in an instant with the PolyMesh editor.
+* [2D Demos](https://bitbucket.org/Unity-Technologies/2ddemos) - 2D Experimental Preview Demo projects. :fab fa-unity:
+* [SpriteMaker](https://github.com/KPDwyer/SpriteMaker) - Tool for making sprites in Unity.
+* [Unity3DPolylineEditor](https://github.com/Dandarawy/Unity3DPolylineEditor) - 2D Polyline Editor for Unity3D.
+* [DoomStyleAnimatedBillboard](https://github.com/richardschembri/DoomStyleAnimatedBillboard) - Animated billboard with multiple view angles.
+* [Unity Sprite Cutter](https://github.com/sabikku/unity-sprite-cutter "") - Simple solution for cutting sprites in runtime.
+* [PixelSpriteGenerator Unity](https://github.com/Shogan/PixelSpriteGenerator-Unity "") - A port of the PixelSpriteGenerator to C# for use with the Unity3D game engine.
+* [ST2U TileProperties](https://github.com/Seanba/ST2U_TileProperties "") - SuperTiled2Unity Example of Retrieving Custom Properties from Tiles.
+* [PixelRenderUnity3D](https://github.com/kode80/PixelRenderUnity3D "") - PixelRender is a complete system for realtime rendering of 3D scenes as 2D pixel art in Unity3D.
+* [OnionRingUnity](https://github.com/kyubuns/OnionRingUnity "") - Auto 9 slice sprite generator.
+* [2D_IsoTilemaps](https://github.com/UnityTechnologies/2D_IsoTilemaps "") - This is an example Unity project focused on 2D Isometric Tilemaps and 2D Pixel Perfect Rendering. :fab fa-unity:
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
new file mode 100644
index 0000000..4beaf2c
--- /dev/null
+++ b/docs/CHANGELOG.md
@@ -0,0 +1,3 @@
+# Changelog
+
+No changes yet.
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..1911937
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,98 @@
+# Welcome
+
+Here you will find a list of resources organized in categories about all your needs during your development with the Unity3D editor.
+
+## Considerations
+
+1. Free assets and resources are prioritized over paid when possible.
+
+2. There is always a posibility that this repository becomes outdated, mostly because new packages from the asset store and repositories appear in the future. This is because of the nature of technlogy and this can be avoided, so in order to keep this project as updated as possible with what other users know, please create a new issue to include or remove what you think is necessary.
+
+3. Another point is the categorization of the resources provided here. Since some of them can be included in different categories at the same time a cross reference will be created in the form of a hastag to notify you (the visitor) that maybe you need to look in a different place of this repository or in other external site to find more info.
+
+4. Finally, you need to know that this is not the only repository on Github that gathers Unity related repositories. This is just another try to get the best of all the existing content out there for Unity developers. So please, be grateful with all the other developers that put effort collection their respective lists of resources by visiting their repositories (they will be listed below).
+
+5. Suggestions and contributions are always welcome. Make sure to read the <a href="https://github.com/agarcialeon/awesome-unity/blob/master/CONTRIBUTING.md"> contribution guidelines </a> for more information before submitting a pull request.
+
+I hope all of you find this helpful. Let's go with the contents.
+
+## Legend
+
+### Icons
+
+Paid resource: :fas fa-coins:
+
+Interesting resource: :fas fa-burn:
+
+Official resource: :fab fa-unity:
+
+<!--
+:new:
+-->
+
+### Tags
+
+(UNMAINTAINED) - The repository hasn't been updated for a long time.
+
+(DEPRECATED) - Another solution or package has been released that does the same and it's more recent.
+
+(ARCHIVED) - The repository is read only for learning purposes.
+
+(#[CATEGORY]) - Where [CATEGORY] represents a category of the document. Means that the resource is related with another category too. Any resource can contain many category tags.
+
+## Contents
+
+* [2D](/2d/2d.md)
+* [Vector Graphics](/vector-graphics/vector-graphics.md)
+* [Artificial Intelligence](/artificial-intelligence/ai.md)
+* [Machine Learning](/machine-learning/machine-learning.md)
+* [Audio](/audio/audio.md)
+* [Animation](/animation/animation.md)
+* [Tweening](/tweening/tweening.md)
+* [Augmented Reality](/augmented-reality/augmented-reality.md)
+* [Virtual Reality](/virtual-reality/intro.md)
+    * [Common](/virtual-reality/common.md)
+    * [HTC Vive](/virtual-reality/htc-vive.md)
+    * [Oculus](/virtual-reality/oculus.md)
+    * [Steam VR](/virtual-reality/steam-vr.md)
+    * [Google VR](/virtual-reality/google-vr.md)
+    * [Samsung Gear](/virtual-reality/samsung-gear.md)
+    * [VR Chat](/virtual-reality/vr-chat.md)
+* [Mixed Reality](/mixed-reality/mixed-reality.md)
+* [Computer Vision & Tracking](/computer-vision-traking/computer-vision-traking.md)
+* [Speech Recognition](/speech-recognition/speech-recognition.md)
+* [Input](/input/input.md)
+* [Camera](/camera/camera.md)
+* [Physics](/physics/physics.md)
+* [Character Controllers](/character-controllers/character-controllers.md)
+* [Services](/services/services.md)
+* [Monetization](/monetization/monetization.md)
+* [Internationalization & Localization](/internationalization-localization/internationalization-localization.md)
+* [User Interface](/ui/ui.md)
+* [Scripting](/scripting/scripting.md)
+* [Patterns](/patterns/patterns.md)
+* [Pooling Systems](/pooling/pooling-systems.md)
+* [Networking](/networking/networking.md)
+* [Utilities](/utilities/utilities.md)
+* [Tools](/tools/tools.md)
+* [Importers / Exporters](/importers-exporters/importers-exporters.md)
+* [Databases](/databases/databases.md)
+* [Version Control Systems](/version-control/vcs.md)
+* [Continuous Integration](/continuous-integration/ci.md)
+* [Plugins](/plugins/plugins.md)
+* [Customization](/customization/customization.md)
+* [Extensibility](/extensibility/extensibility.md)
+* [Modding](/modding/modding.md)
+* [Procedural Generation](/procedural-generation/procedural-generation.md)
+* [Terrain](/terrain/terrain.md)
+* [Navigation Mesh](/navigation-mesh/navigation-mesh.md)
+* [Textures](/textures/textures.md)
+* [Rendering & Post Processing](/rendering-post-processing/rendering-post-processing.md)
+* [Voxel](/voxel/voxel.md)
+* [Asset Management](/asset-management/asset-management.md)
+* [Recommended Assets](/recommended/assets.md)    
+* [Miscellaneous](/misc/misc.md)
+* [Learning Resources](/learning-resources/learning-resources.md)
+* [Communities](/communities/communities.md)  
+* [Projects](/projects/projects.md)
+
diff --git a/docs/_404.md b/docs/_404.md
new file mode 100644
index 0000000..4137df2
--- /dev/null
+++ b/docs/_404.md
@@ -0,0 +1 @@
+# Oops! The page you're searching for doesn't exist.
\ No newline at end of file
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
new file mode 100644
index 0000000..0a45846
--- /dev/null
+++ b/docs/_coverpage.md
@@ -0,0 +1,20 @@
+![logo](awesome-unity.png ':size=350x200')
+
+# Awesome Unity Community
+
+<div align="center">
+	<div>	
+         <a href="https://github.com/sindresorhus/awesome"> 
+	        <img src="https://awesome.re/badge-flat.svg" alt="Awesome">
+        </a>
+		<p>
+			A categorized community-driven collection of high-quality awesome Unity assets, projects, and resources. 
+        </p>
+    </div>
+</div>
+
+[Github](https://github.com/UnityCommunity/AwesomeUnityCommunity)
+[Enter](README.md)
+
+![color](#232931)
+
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
new file mode 100644
index 0000000..d4e776c
--- /dev/null
+++ b/docs/_sidebar.md
@@ -0,0 +1,58 @@
+* [Home](README.md)
+* [2D](/2d/2d.md)
+* [Vector Graphics](/vector-graphics/vector-graphics.md)
+* [Artificial Intelligence](/artificial-intelligence/ai.md)
+* [Machine Learning](/machine-learning/machine-learning.md)
+* [Audio](/audio/audio.md)
+* [Animation](/animation/animation.md)
+* [Tweening](/tweening/tweening.md)
+* [Augmented Reality](/augmented-reality/augmented-reality.md)
+* [Virtual Reality](/virtual-reality/intro.md)
+    * [Common](/virtual-reality/common.md)
+    * [HTC Vive](/virtual-reality/htc-vive.md)
+    * [Oculus](/virtual-reality/oculus.md)
+    * [Steam VR](/virtual-reality/steam-vr.md)
+    * [Google VR](/virtual-reality/google-vr.md)
+    * [Samsung Gear](/virtual-reality/samsung-gear.md)
+    * [VR Chat](/virtual-reality/vr-chat.md)
+* [Mixed Reality](/mixed-reality/mixed-reality.md)
+* [Computer Vision & Tracking](/computer-vision-traking/computer-vision-traking.md)
+* [Speech Recognition](/speech-recognition/speech-recognition.md)
+* [Input](/input/input.md)
+* [Camera](/camera/camera.md)
+* [Physics](/physics/physics.md)
+* [Character Controllers](/character-controllers/character-controllers.md)
+* [Services](/services/services.md)
+* [Monetization](/monetization/monetization.md)
+* [Internationalization & Localization](/internationalization-localization/internationalization-localization.md)
+* [User Interface](/ui/ui.md)
+* [Scripting](/scripting/scripting.md)
+* [Patterns](/patterns/patterns.md)
+* [Pooling Systems](/pooling/pooling-systems.md)
+* [Networking](/networking/networking.md)
+* [Utilities](/utilities/utilities.md)
+* [Tools](/tools/tools.md)
+* [Importers / Exporters](/importers-exporters/importers-exporters.md)
+* [Databases](/databases/databases.md)
+* [Version Control Systems](/version-control/vcs.md)
+* [Continuous Integration](/continuous-integration/ci.md)
+* [Plugins](/plugins/plugins.md)
+* [Customization](/customization/customization.md)
+* [Extensibility](/extensibility/extensibility.md)
+* [Modding](/modding/modding.md)
+* [Procedural Generation](/procedural-generation/procedural-generation.md)
+* [Terrain](/terrain/terrain.md)
+* [Navigation Mesh](/navigation-mesh/navigation-mesh.md)
+* [Textures](/textures/textures.md)
+* [Rendering & Post Processing](/rendering-post-processing/rendering-post-processing.md)
+* [Voxel](/voxel/voxel.md)
+* [Asset Management](/asset-management/asset-management.md)
+* [Recommended Assets](/recommended/assets.md)    
+* [Miscellaneous](/misc/misc.md)
+* [Learning Resources](/learning-resources/learning-resources.md)
+* [Communities](/communities/communities.md)  
+* [Projects](/projects/projects.md)
+* [FAQ](/faq/faq.md)
+* [Contributors](/contributors/contributors.md)
+* [Code of Conduct](/code-of-conduct/code-of-conduct)
+* [Changelog](/CHANGELOG.md)
diff --git a/docs/animation/animation.md b/docs/animation/animation.md
new file mode 100644
index 0000000..4e19698
--- /dev/null
+++ b/docs/animation/animation.md
@@ -0,0 +1,28 @@
+## Animation
+
+* [NIMA](https://www.2dimensions.com/ "") - Raster animation tool (no vector) for Unity and other game engines.
+* [SpriteAnimation](https://github.com/FarrokhGames/SpriteAnimation "") - A Unity-based sprite animator for simple and advanced animation setups.
+* [AI4Animation](https://github.com/sebastianstarke/AI4Animation "") - Character Animation in Unity 3D using Deep Learning and Artificial Intelligence.
+* [Boner2D](https://github.com/playemgames/Boner2D "") - Free Open Source 2D Animation Tools for Unity.
+* [PuppetTest](https://github.com/keijiro/PuppetTest "") - An experiment in procedural dance animation.
+* [EasyMotionRecorder](https://github.com/duo-inc/EasyMotionRecorder "") 
+* [DragonBonesCSharp](https://github.com/DragonBones/DragonBonesCSharp "") - DragonBones C# Runtime.
+* [Unity Runtime Animation Recorder](https://github.com/newyellow/Unity-Runtime-Animation-Recorder "") - Record animations in Unity runtime. Can save to .anim, maya, or FBX ASCII format.
+* [UnityChanSpringBone](https://github.com/unity3d-jp/UnityChanSpringBone "") - UnityChan Sping Bone System for lightweight secondary animations.
+* [LeanTween](https://github.com/dentedpixel/LeanTween "") - An efficient animation engine for Unity. [Asset Store Link](https://www.assetstore.unity3d.com/en/#!/content/3595).
+* [UnitySpritesAndBones](https://github.com/Banbury/UnitySpritesAndBones "") - Unity 3D addon for skeletal sprite animations.
+* [AnimeRx](https://github.com/kyubuns/AnimeRx "") - Rx Tween Animation Library for Unity.
+* [Unity Animator Helpers](https://github.com/ashblue/unity-animator-helpers "") - A micro-framework for changing Unity 3D's Animator parameters with ScriptableObject(s). Designed to make going from custom scripts to Animator parameters easy. Works with 2D or 3D projects.
+* [SpritedowAnimator](https://github.com/Elendow/SpritedowAnimator "") - A plugin to do simple sprite animations avoiding the big and tedious Unity's Mechanim system. (#2D)
+* [UnityGpuInstancedAnimation](https://github.com/piti6/UnityGpuInstancedAnimation "") - Unity animation object with gpu instancing.
+* [UnityGpuInstancing](https://github.com/kitasenjudesign/UnityGpuInstancing "") - GPU Instancing + Boids + Animation Texture Baker.
+* [Unity Animation Instancing](https://github.com/bmjoy/Unity-Animation-Instancing "")
+* [FACSvatar](https://github.com/NumesSanguis/FACSvatar "") - An Open Source Modular Framework From Face to FACS Based Avatar Animation (Unity3D / Blender).
+* [UrMotion](https://github.com/beinteractive/UrMotion "") - Flexible motion engine for non time-based animation in Unity.
+* [AnimationImporter](https://github.com/talecrafter/AnimationImporter "") - Aseprite Animation Importer for Unity. (#2D)
+* [StopMotion Unity](https://github.com/OskarSigvardsson/StopMotion-Unity "") - A simple StopMotion effect for Unity.
+* [AnimatorPreviewSyncParticle](https://github.com/Syy9/AnimatorPreviewSyncParticle "") - Unity animator preview sync particle. (#PARTICLE-SYSTEMS)
+* [CMUMocap](https://github.com/keijiro/CMUMocap "") - Unity humanoid animations converted from the Carnegie Mellon University Motion Capture Database.
+* [UnityQuillFBXAnim](https://github.com/kanzwataru/UnityQuillFBXAnim "") - Making using Quill FBX animations with Unity easier.
+* [MotionMatching](https://github.com/nashnie/MotionMatching "") - Road to next-gen animation. 
+* [AnimVRUnityToolkit](https://github.com/nvrmind/AnimVRUnityToolkit "") - Bring your AnimVR creations into Unity.
diff --git a/docs/artificial-intelligence/ai.md b/docs/artificial-intelligence/ai.md
new file mode 100644
index 0000000..4ff4bba
--- /dev/null
+++ b/docs/artificial-intelligence/ai.md
@@ -0,0 +1,42 @@
+## AI
+
+* [Pathfinding](https://github.com/antonpantev/pathfinding "") - Find paths in Unity Tilemaps with A* Search.
+* [Unity Movement AI](https://github.com/antonpantev/unity-movement-ai "") - A Unity library for common movement AI.
+* [A* Pathfinding Project](http://arongranberg.com/astar/) - Lightning fast pathfinding with heavily optimized algorithms and a large feature set.
+* [A* Sharp](https://github.com/davecusatis/A-Star-Sharp) - A small, easy to understand C# implementation of the A Star pathfinding algorithm for 2D grid based applications.
+* [Astar Pathfinding](https://github.com/wawethewaras/Astar-Pathfinding) - 2D pathfinding for Unity.
+* [UnityAStarNavigation](https://github.com/jeffvella/UnityAStarNavigation) - An A* navigation system for Unity using burst compiled jobs for performance.
+* [Apex Path](https://www.assetstore.unity3d.com/en/#!/content/17943) - Apex Path handles dynamic pathfinding including local avoidance steering and dynamic obstacles. :fas fa-coins:
+* [Crystal AI](https://github.com/igiagkiozis/CrystalAI) - Crystal is a fast, scalable and extensible utility based AI framework for C# and Unity.
+* [Behaviac](https://github.com/Tencent/behaviac) - Is a framework of the game AI development, and it also can be used as a rapid game prototype design tool. behaviac supports the behavior tree, finite state machine and hierarchical task network (BT, FSM, HTN).
+* [TsiU AIToolkit CSharp](https://github.com/FinneyTang/TsiU_AIToolkit_CSharp) - AI Toolkit for Unity.
+* [EpPathFinding.cs](https://github.com/juhgiyo/EpPathFinding.cs) - A jump point search algorithm for grid based games in C#.
+* [EpPathFinding3D.cs](https://github.com/juhgiyo/EpPathFinding3D.cs) - A 3D jump point search algorithm for cube based games in C#.
+* [GOAP](https://github.com/sploreg/goap) - Goal Oriented Action Planning AI in Unity.
+* [Unity Movement AI](https://github.com/antonpantev/unity-movement-ai) - A library of common movement AI scripts known as Steering Behaviors. You can use these scripts to help your NPCs move around your game.
+* [Openpath](https://github.com/mrzapp/openpath) - Open source pathfinding for Unity.
+* [Unity Path Finding](https://github.com/mattatz/unity-path-finding) - Shortest path finding with Dijkstra's algorithm for Unity.
+* [NPBehave](https://github.com/meniku/NPBehave) - Event Driven Behavior Trees for Unity 3D.
+* [Fluid Behavior Tree](https://github.com/ashblue/fluid-behavior-tree) - A pure code behavior tree micro-framework built for Unity3D projects. Granting developers the power to dictate their GUI presentation.
+* [Unity3D Finite State Machine](https://github.com/thefuntastic/Unity3d-Finite-State-Machine)
+* [A Star Pathfinding for Unity](https://github.com/sharpaccent/Astar-for-Unity) - A Star Pathfinder, 3 axis, multithreaded for Unity.
+* [A* Pathfinding Project Pro](https://arongranberg.com/astar/front) - Lightning fast pathfinding for Unity3D. :fas fa-coins:
+* [A* Pathfinding for Platformers](https://github.com/tutsplus/A-Star-Pathfinding-for-Platformers) - How to Adapt A* Pathfinding to a 2D Grid-Based Platformer.
+* [Unity Neural Network](https://github.com/Blueteak/Unity-Neural-Network) - Simple neural network implemented in C# for Unity3D.
+* [GameAI Movement](https://github.com/Kyntaz/gameai-movement) - Movement Algorithms for NPCs developed with the Unity Engine for the Artificial Intelligence for Games class @ IST.
+* [Knowledge Representation](https://github.com/chris-gong/knowledge-representation) - Small Unity project showcasing AI responding to changes in the game world. 
+* [Unity AI](https://github.com/lcremer/Unity_AI) - AI Behavior Tree Framework.
+* [AI Companion](https://github.com/Ell223/AI-Companion) - Created in Unity 5 for the purposes of learning AI techniques. Features behaviour trees and A* pathfinding. 
+* [LanguageProject](https://github.com/HeidiErwin/LanguageProject) - Summer 2018 Project: Semantics and Emergent NPC Behavior.
+* [OSMTrafficSim](https://github.com/maajor/OSMTrafficSim) - TrafficSim using Unity ECS.
+* [OpenPath](https://github.com/mrzapp/openpath) - Open source pathfinding for Unity.
+* [EvolutionSimulation01](https://github.com/JakobStenseke/EvolutionSimulation01) - Evolutionary simulation where agents age, reproduce, and eat each other.
+* [Path](https://github.com/AngryAnt/Path) - Pathfinding library for the Unity engine.
+* [AirSim](https://github.com/Microsoft/AirSim "") - Open source simulator for autonomous vehicles built on Unreal Engine / Unity, from Microsoft AI & Research.
+* [Ngx](https://github.com/keijiro/Ngx "") - Neural network based visual generator and mixer.
+* [Unity Formation Movement](https://github.com/Goodgulf281/Unity-Formation-Movement "") - Formation movement for Unity3D using standard Navmesh or A* Pathfinding. (#NAVMESH)
+* [BT Framework](https://github.com/f15gdsy/BT-Framework "") - A behavior tree framework that can be used to create game AI.
+* [Unity CogBot](https://github.com/THeK3nger/unity-cogbot "") - NPC AI framework for the popular Unity 3D game engine.
+* [Gridworld](https://github.com/THeK3nger/gridworld "") - An 3D enviroment for testing AIs powered by Unity3D.
+* [Unity BehaviourTree](https://github.com/nickkorta/Unity_BehaviourTree "")
+* [Artificial Intelligence](https://github.com/marcelochaves95/artificial-intelligence "") - Artificial intelligence in Unity using graphs and the pathfinding RTA* algorithm.
diff --git a/docs/asset-management/asset-management.md b/docs/asset-management/asset-management.md
new file mode 100644
index 0000000..bb1dafb
--- /dev/null
+++ b/docs/asset-management/asset-management.md
@@ -0,0 +1,45 @@
+## Asset Management
+
+### Package Management
+
+* [Unity Asset Store](https://assetstore.unity.com/) - Official asset store for unity.
+* [Unity Package Manager 2018.3+](https://blogs.unity3d.com/2018/05/09/unity-packages-life-cycle/)
+* [Unity Packman](https://github.com/appetizermonster/unity-packman "") - A tiny package dependency manager for Unity, powered by Github.
+* [UniGet](https://github.com/SaladLab/UniGet "") - The package manager for Unity3D.
+* [Unity Package Unpacker (UPU)](https://github.com/derFunk/UPU "Unitypackage Unpacker.")
+* [Paket.Unity3D](https://github.com/wooga/Paket.Unity3D "") - An extension for the Paket dependency manager that enables the integration of NuGet dependencies into Unity3D projects.
+* [Package Exporter](https://github.com/sloppycombo/PackageExporter "") - Easily export a folder of scripts and assets as a local Unity 2018 package for use with the new Package Manager. 
+* [UnityPackageTemplate](https://github.com/iBicha/UnityPackageTemplate "") - A template for creating Unity packages.
+* [UnityPacker](https://github.com/FatihBAKIR/UnityPacker "") - Create unitypackages without unity, from command line.
+* [AssetMessenger](https://github.com/wataru-ito/AssetMessenger "") - Unofficial Issuetracker for the Unity Asset Store.
+* [RotateMe](https://github.com/mob-sakai/RotateMe "") - A tutorial for "How to develop a package for UnityPackageManager".
+* [Unitypackage Extractor](https://github.com/Cobertos/unitypackage_extractor "") - Extract a .unitypackage.
+* [Unity Package Tools](https://github.com/jeffcampbellmakesgames/unity-package-tools "") - A set of developer tools to make it easier to create and distribute packages for the native Unity Package Manager.
+* [Tool UnityAssetCleaner](https://github.com/unity-cn/Tool-UnityAssetCleaner "") - UnityAssetCleaner will remove unused assets, script and shader in your game and projects.
+
+
+### Asset Bundles
+
+* [AssetBundleManager](https://github.com/SadPandaStudios/AssetBundleManager "") - An asset bundle manager for Unity.
+* [KEngine](https://github.com/mr-kelly/KEngine) - A Unity3D asset bundle framework with LGPL license.
+* [AssetBundleManager](https://github.com/pinkpanther79/AssetBundleManager "") - Unity AssetBundle Manager.
+* [Asset Auditing Tools](https://github.com/Unity-Technologies/asset-auditing-tools) - A set of Editor tools to audit project assets and correct errors. :fab fa-unity:
+* [AssetStudio](https://github.com/RaduMC/AssetStudio "") - AssetStudio is an independent tool for exploring, extracting and exporting assets.
+* [UnityPack](https://github.com/HearthSim/UnityPack "") - Python deserialization library for Unity3D Asset format.
+* [AssetBundlePatch](https://github.com/dpull/AssetBundlePatch "")
+* [UABE](https://github.com/DerPopo/UABE "") - Unity Assets Bundle Extractor.
+* [UnityAssetCleaner](https://github.com/tsubaki/UnityAssetCleaner "")
+* [UtinyRipper](https://github.com/mafaca/UtinyRipper "") - Tool for ripping assets from Engine resource files.
+* [AssetBundleChecker](https://github.com/wotakuro/AssetBundleChecker "")
+* [XAsset](https://github.com/fengjiyuan/xasset "")
+* [Zcode AssetBundlePacker](https://github.com/xtqqksszml/zcode-AssetBundlePacker "") - Create, build and manage Asset Bundles packages. Supports version control and more.
+* [Asset Bundle Analyzer](https://github.com/faelenor/asset-bundle-analyzer "") - This tool extracts useful information from Unity asset bundles and stores the information in an SQLite database.
+* [ABSystem](https://github.com/tangzx/ABSystem "")
+
+### Asset Store
+
+* [Publisher-Extension-for-Unity3D](https://github.com/Mintonne/Publisher-Extension-for-Unity3D "") - Access your Unity3D publisher information in a click.
+* [Asset Store Support Window](https://github.com/AlexanderAmeye/asset-store-support-window "") - A support window template for publishers of the Unity Asset Store.
+* [Unity Asset Promotion Guidelines](https://github.com/EmpireWorld/unity-asset-promotion "") - Unity Asset Store Package Promotion Guidelines.
+* [ASInstaller](https://github.com/thinksquirrel/ASInstaller "") - Unity Asset Store Package Installer.
+* [UAS Issue Tracker](https://github.com/uas-publishers/uas-issuetracker "") - Unofficial Issuetracker for the Unity Asset Store.
diff --git a/docs/assets/css/mermaid.min.css b/docs/assets/css/mermaid.min.css
new file mode 100644
index 0000000..b8ff4bd
--- /dev/null
+++ b/docs/assets/css/mermaid.min.css
@@ -0,0 +1,355 @@
+/**
+ * Failed to minify the file using clean-css v4.1.6. Serving the original version.
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
+ */
+/* Flowchart variables */
+/* Sequence Diagram variables */
+/* Gantt chart variables */
+.mermaid .label {
+  color: #333;
+}
+.node rect,
+.node circle,
+.node ellipse,
+.node polygon {
+  fill: #ECECFF;
+  stroke: #CCCCFF;
+  stroke-width: 1px;
+}
+.arrowheadPath {
+  fill: #333333;
+}
+.edgePath .path {
+  stroke: #333333;
+}
+.edgeLabel {
+  background-color: #e8e8e8;
+}
+.cluster rect {
+  fill: #ffffde !important;
+  rx: 4 !important;
+  stroke: #aaaa33 !important;
+  stroke-width: 1px !important;
+}
+.cluster text {
+  fill: #333;
+}
+.actor {
+  stroke: #CCCCFF;
+  fill: #ECECFF;
+}
+text.actor {
+  fill: black;
+  stroke: none;
+}
+.actor-line {
+  stroke: grey;
+}
+.messageLine0 {
+  stroke-width: 1.5;
+  stroke-dasharray: "2 2";
+  marker-end: "url(#arrowhead)";
+  stroke: #333;
+}
+.messageLine1 {
+  stroke-width: 1.5;
+  stroke-dasharray: "2 2";
+  stroke: #333;
+}
+#arrowhead {
+  fill: #333;
+}
+#crosshead path {
+  fill: #333 !important;
+  stroke: #333 !important;
+}
+.messageText {
+  fill: #333;
+  stroke: none;
+}
+.labelBox {
+  stroke: #CCCCFF;
+  fill: #ECECFF;
+}
+.labelText {
+  fill: black;
+  stroke: none;
+}
+.loopText {
+  fill: black;
+  stroke: none;
+}
+.loopLine {
+  stroke-width: 2;
+  stroke-dasharray: "2 2";
+  marker-end: "url(#arrowhead)";
+  stroke: #CCCCFF;
+}
+.note {
+  stroke: #aaaa33;
+  fill: #fff5ad;
+}
+.noteText {
+  fill: black;
+  stroke: none;
+  font-family: 'trebuchet ms', verdana, arial;
+  font-size: 14px;
+}
+/** Section styling */
+.section {
+  stroke: none;
+  opacity: 0.2;
+}
+.section0 {
+  fill: rgba(102, 102, 255, 0.49);
+}
+.section2 {
+  fill: #fff400;
+}
+.section1,
+.section3 {
+  fill: white;
+  opacity: 0.2;
+}
+.sectionTitle0 {
+  fill: #333;
+}
+.sectionTitle1 {
+  fill: #333;
+}
+.sectionTitle2 {
+  fill: #333;
+}
+.sectionTitle3 {
+  fill: #333;
+}
+.sectionTitle {
+  text-anchor: start;
+  font-size: 11px;
+  text-height: 14px;
+}
+/* Grid and axis */
+.grid .tick {
+  stroke: lightgrey;
+  opacity: 0.3;
+  shape-rendering: crispEdges;
+}
+.grid path {
+  stroke-width: 0;
+}
+/* Today line */
+.today {
+  fill: none;
+  stroke: red;
+  stroke-width: 2px;
+}
+/* Task styling */
+/* Default task */
+.task {
+  stroke-width: 2;
+}
+.taskText {
+  text-anchor: middle;
+  font-size: 11px;
+}
+.taskTextOutsideRight {
+  fill: black;
+  text-anchor: start;
+  font-size: 11px;
+}
+.taskTextOutsideLeft {
+  fill: black;
+  text-anchor: end;
+  font-size: 11px;
+}
+/* Specific task settings for the sections*/
+.taskText0,
+.taskText1,
+.taskText2,
+.taskText3 {
+  fill: white;
+}
+.task0,
+.task1,
+.task2,
+.task3 {
+  fill: #8a90dd;
+  stroke: #534fbc;
+}
+.taskTextOutside0,
+.taskTextOutside2 {
+  fill: black;
+}
+.taskTextOutside1,
+.taskTextOutside3 {
+  fill: black;
+}
+/* Active task */
+.active0,
+.active1,
+.active2,
+.active3 {
+  fill: #bfc7ff;
+  stroke: #534fbc;
+}
+.activeText0,
+.activeText1,
+.activeText2,
+.activeText3 {
+  fill: black !important;
+}
+/* Completed task */
+.done0,
+.done1,
+.done2,
+.done3 {
+  stroke: grey;
+  fill: lightgrey;
+  stroke-width: 2;
+}
+.doneText0,
+.doneText1,
+.doneText2,
+.doneText3 {
+  fill: black !important;
+}
+/* Tasks on the critical line */
+.crit0,
+.crit1,
+.crit2,
+.crit3 {
+  stroke: #ff8888;
+  fill: red;
+  stroke-width: 2;
+}
+.activeCrit0,
+.activeCrit1,
+.activeCrit2,
+.activeCrit3 {
+  stroke: #ff8888;
+  fill: #bfc7ff;
+  stroke-width: 2;
+}
+.doneCrit0,
+.doneCrit1,
+.doneCrit2,
+.doneCrit3 {
+  stroke: #ff8888;
+  fill: lightgrey;
+  stroke-width: 2;
+  cursor: pointer;
+  shape-rendering: crispEdges;
+}
+.doneCritText0,
+.doneCritText1,
+.doneCritText2,
+.doneCritText3 {
+  fill: black !important;
+}
+.activeCritText0,
+.activeCritText1,
+.activeCritText2,
+.activeCritText3 {
+  fill: black !important;
+}
+.titleText {
+  text-anchor: middle;
+  font-size: 18px;
+  fill: black;
+}
+g.classGroup text {
+  fill: #9370DB;
+  stroke: none;
+  font-family: 'trebuchet ms', verdana, arial;
+  font-size: 10px;
+}
+g.classGroup rect {
+  fill: #ECECFF;
+  stroke: #9370DB;
+}
+g.classGroup line {
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+svg .classLabel .box {
+  stroke: none;
+  stroke-width: 0;
+  fill: #ECECFF;
+  opacity: 0.5;
+}
+svg .classLabel .label {
+  fill: #9370DB;
+  font-size: 10px;
+}
+.relation {
+  stroke: #9370DB;
+  stroke-width: 1;
+  fill: none;
+}
+.composition {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+#compositionStart {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+#compositionEnd {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+.aggregation {
+  fill: #ECECFF;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+#aggregationStart {
+  fill: #ECECFF;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+#aggregationEnd {
+  fill: #ECECFF;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+#dependencyStart {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+#dependencyEnd {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+#extensionStart {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+#extensionEnd {
+  fill: #9370DB;
+  stroke: #9370DB;
+  stroke-width: 1;
+}
+.node text {
+  font-family: 'trebuchet ms', verdana, arial;
+  font-size: 14px;
+}
+div.mermaidTooltip {
+  position: absolute;
+  text-align: center;
+  max-width: 200px;
+  padding: 2px;
+  font-family: 'trebuchet ms', verdana, arial;
+  font-size: 12px;
+  background: #ffffde;
+  border: 1px solid #aaaa33;
+  border-radius: 2px;
+  pointer-events: none;
+  z-index: 100;
+}
diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css
new file mode 100644
index 0000000..c5d5968
--- /dev/null
+++ b/docs/assets/css/style.css
@@ -0,0 +1 @@
+#CHANGELOG{line-height:normal;text-decoration:none;transition:background .1s ease-out 0s;border-radius:4px;margin:auto;font-size:unset;padding:5px 5px 5px 10px}#CHANGELOG_NOTIFY{content:"\A";width:10px;height:10px;border-radius:50%;background:#e84444;display:inline-block;margin-right:.2rem}#CHANGELOG:hover{background:#f2f5f7}#CHANGELOG_RENDERER{display:none;position:absolute;top:100%;background:#fff;box-shadow:0 4px 24px rgba(0,0,0,.15);border-radius:5px;margin-top:20px;width:400px;overflow:hidden;border:1px solid rgba(0,0,0,.1);right:0;left:auto}#CHANGELOG_RENDERER.show{display:block}#CHANGELOG_RENDERER .CL_content-body{height:60vh;padding:0;overflow-x:auto}#CHANGELOG_RENDERER .CL_content-body h1{display:block;position:relative;text-align:left;padding:10px 20px;background:rgba(0,0,0,.03);margin:auto}#CHANGELOG_RENDERER .CL_content-body h3,#CHANGELOG_RENDERER .CL_content-body li,#CHANGELOG_RENDERER .CL_content-body p,#CHANGELOG_RENDERER .CL_content-body ul{width:100%;display:block;padding:5px 20px;background:#fff;position:relative;text-align:left}#CHANGELOG_RENDERER .CL_content-body h3{font-size:24px;margin:auto;font-weight:700;border-bottom:1px solid rgba(0,0,0,.1)}#CHANGELOG_RENDERER .CL_content-body h4{width:100%;background:#fff;position:relative;padding:5px 20px;text-align:left;margin:auto;display:block;border-bottom:1px solid rgba(0,0,0,.1)}#CHANGELOG_RENDERER .CL_content-body::-webkit-scrollbar{width:10px}#CHANGELOG_RENDERER .CL_content-body::-webkit-scrollbar-track{background-color:rgba(0,0,0,.03);border-radius:10px}#CHANGELOG_RENDERER .CL_content-body::-webkit-scrollbar-thumb{border-radius:10px;background:#6d6d6d}#CHANGELOG_RENDERER .CL_content-body h2{margin:auto;display:block;padding:10px 20px;background:#fff;position:relative;text-align:left;font-size:2rem;border-bottom:1px solid rgba(0,0,0,.1)}#CHANGELOG_RENDERER .CL_content-body li,#CHANGELOG_RENDERER .CL_content-body ul{overflow:hidden;width:100%;padding:5px!important}#CHANGELOG_RENDERER .CL_content-body ul{list-style:none;background-color:#fff;border:none;border-radius:0;box-sizing:border-box;max-height:calc(100vh - 61px);padding:5px 20px;position:relative;text-align:left;white-space:nowrap}#CHANGELOG_RENDERER .CL_content-body li{padding-left:1.3em}#CHANGELOG_RENDERER .CL_content-body li:before{content:"\f00c";font-family:FontAwesome;display:inline-block;margin-left:-1.3em;width:1.3em}@media screen and (max-width:768px){.app-nav{width:100%!important;margin:auto!important}#CHANGELOG_RENDERER{left:0;width:100%}}
\ No newline at end of file
diff --git a/docs/assets/css/style.min.css b/docs/assets/css/style.min.css
new file mode 100644
index 0000000..ffc385d
--- /dev/null
+++ b/docs/assets/css/style.min.css
@@ -0,0 +1 @@
+@import url("https://fonts.googleapis.com/css?family=PT+Sans&Source+Sans+Pro&Roboto+Mono&display=swap");*{-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none;box-sizing:border-box}body:not(.ready){overflow:hidden}.search{border-bottom:none!important}.search .input-wrap{margin-top:20px!important}.search input{border:1px solid var(--borderColor)!important;background-color:var(--background)!important;margin:0 auto;color:var(--textColor);width:90%!important;border-radius:15px;text-indent:15px}body:not(.ready) .app-nav,body:not(.ready)>nav,body:not(.ready) [data-cloak]{display:none}div#app{font-size:30px;font-weight:lighter;margin:40vh auto;text-align:center}div#app:empty:before{content:"Loading..."}.emoji{height:1.2rem;vertical-align:middle}.progress{background-color:var(--accent);height:2px;left:0;position:fixed;right:0;top:0;transition:width .2s,opacity .4s;width:0;z-index:999999}.search .search-keyword,.search a:hover{color:var(--accent)}.search .search-keyword{font-style:normal;font-weight:700}body,html{height:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--textColor);font-family:var(--siteFont),Helvetica Neue,Arial,sans-serif;font-size:var(--bodyFontSize);letter-spacing:0;margin:0;overflow-x:hidden}.markdown-section h2{color:#fff}img{max-width:100%}a[disabled]{cursor:not-allowed;opacity:.6}kbd{border:1px solid #ccc;border-radius:3px;display:inline-block;font-size:12px!important;line-height:12px;margin-bottom:3px;padding:3px 5px;vertical-align:middle}li input[type=checkbox]{margin:0 .2em .25em 0;vertical-align:middle}.app-nav{margin:25px 60px 0 0;position:absolute;right:0;text-align:right;z-index:10}.app-nav.no-badge{margin-right:25px}.app-nav p{margin:0}.app-nav>a{margin:0 1rem;padding:5px 0}.app-nav li,.app-nav ul{display:inline-block;list-style:none;margin:0}.app-nav a{color:inherit;font-size:16px;text-decoration:none;transition:color .3s}.app-nav a.active,.app-nav a:hover{color:var(--accent)}.app-nav a.active{border-bottom:2px solid var(--accent)}.app-nav li{display:inline-block;margin:0 1rem;padding:5px 0;position:relative;cursor:pointer}.app-nav li ul{background-color:#fff;border:1px solid;border-color:#ddd #ddd #ccc;border-radius:4px;box-sizing:border-box;display:none;max-height:calc(100vh - 61px);overflow-y:auto;padding:10px 0;position:absolute;right:-15px;text-align:left;top:100%;white-space:nowrap}.app-nav li ul li{display:block;font-size:14px;line-height:1rem;margin:8px 14px;white-space:nowrap}.app-nav li ul a{display:block;font-size:inherit;margin:0;padding:0}.app-nav li ul a.active{border-bottom:0}.app-nav li:hover ul{display:block}.github-corner{border-bottom:0;position:fixed;right:0;text-decoration:none;top:0;z-index:1}.github-corner:hover .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}.github-corner svg{color:#fff;fill:var(--accent);height:70px;width:70px}main{display:block;position:relative;width:100vw;height:100%;z-index:0}main.hidden{display:none}.anchor{display:inline-block;text-decoration:none;transition:all .3s}.anchor span{color:var(--textColor)}.anchor:hover{text-decoration:underline}.sidebar{border-right:1px solid var(--borderColor);overflow-y:auto;padding:40px 0 0;position:absolute;top:0;bottom:0;left:0;transition:transform .25s ease-out;width:300px;z-index:20}.sidebar>h1{margin:0 auto 1rem;font-size:1.5rem;font-weight:300;text-align:center}.sidebar>h1 a{color:inherit;text-decoration:none}.sidebar>h1 .app-nav{display:block;position:static}.sidebar .sidebar-nav{line-height:2em;padding-bottom:40px}.sidebar li.collapse .app-sub-sidebar{display:none}.sidebar ul{margin:0 0 0 15px;padding:0}.sidebar li>p{font-weight:700;margin:0}.sidebar ul,.sidebar ul li{list-style:none}.sidebar ul li a{border-bottom:none;display:block}.sidebar ul li ul{padding-left:20px}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}.sidebar:hover::-webkit-scrollbar-thumb{background:hsla(0,0%,53.3%,.4)}.sidebar:hover::-webkit-scrollbar-track{background:hsla(0,0%,53.3%,.1)}.sidebar-toggle{background-color:transparent;border:0;outline:none;padding:10px;position:absolute;bottom:0;left:0;text-align:center;transition:opacity .3s;width:284px;z-index:30;cursor:pointer}.sidebar-toggle:hover .sidebar-toggle-button{opacity:.4}.sidebar-toggle span{background-color:var(--accent);display:block;margin-bottom:4px;width:16px;height:2px}body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}.content{padding-top:60px;position:absolute;top:0;right:0;bottom:0;left:300px;transition:left .25s ease}.markdown-section{margin:0 auto;max-width:90%;padding:30px 15px 40px;position:relative}.markdown-section>*{box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0!important}.markdown-section hr{border:none;border-bottom:1px solid #eee;margin:2em 0}.markdown-section iframe{border:1px solid #eee;width:1px;min-width:100%}.markdown-section table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:1rem;overflow:auto;width:100%}.markdown-section th{font-weight:700}.markdown-section td,.markdown-section th{border:1px solid #ddd;padding:6px 13px}.markdown-section tr{border-top:1px solid #ccc}.markdown-section p.tip,.markdown-section tr:nth-child(2n){background-color:var(--codeBackgroudColor)}.markdown-section p.tip{border-bottom-right-radius:2px;border-left:4px solid #f66;border-top-right-radius:2px;margin:2em 0;padding:12px 24px 12px 30px;position:relative}.markdown-section p.tip:before{background-color:#f66;border-radius:100%;color:#fff;content:"!";font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:700;left:-12px;line-height:20px;position:absolute;height:20px;width:20px;text-align:center;top:14px}.markdown-section p.tip code{background-color:#efefef}.markdown-section p.tip em{color:#34495e}.markdown-section p.warn{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem}.markdown-section ul.task-list>li{list-style-type:none}body.close .sidebar{transform:translateX(-300px)}body.close .sidebar-toggle{width:auto}body.close .content{left:0}@media print{.app-nav,.github-corner,.sidebar,.sidebar-toggle{display:none}}@media screen and (max-width:768px){.github-corner,.sidebar,.sidebar-toggle{position:fixed}.app-nav{margin-top:16px}.app-nav li ul{top:30px}main{height:auto;overflow-x:hidden}.sidebar{left:-300px;transition:transform .25s ease-out}.content{left:0;max-width:100vw;position:static;padding-top:20px;transition:transform .25s ease}.app-nav,.github-corner{transition:transform .25s ease-out}.sidebar-toggle{background-color:transparent;width:auto;padding:30px 30px 10px 10px}body.close .sidebar{transform:translateX(300px)}body.close .sidebar-toggle{transition:background-color 1s;width:284px;padding:10px}body.close .content{transform:translateX(300px)}body.close .app-nav,body.close .github-corner{display:none}.github-corner:hover .octo-arm{-webkit-animation:none;animation:none}.github-corner .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}}@-webkit-keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}section.cover{align-items:center;background-position:50%;background-repeat:no-repeat;background-size:cover;height:100vh;display:none}section.cover.show{display:flex;background:var(--coverBackground)!important}section.cover.has-mask .mask{background-color:#fff;opacity:.8;position:absolute;top:0;height:100%;width:100%}section.cover .cover-main{flex:1;margin:-20px 16px 0;text-align:center;z-index:1}section.cover a{color:inherit}section.cover a,section.cover a:hover{text-decoration:none}section.cover p{line-height:1.5rem;margin:1em 0}section.cover h1{color:inherit;font-size:2.5rem;font-weight:300;margin:.625rem 0 2.5rem;position:relative;text-align:center}section.cover h1 a{display:block}section.cover h1 small{bottom:-.4375rem;font-size:1rem;position:absolute}section.cover blockquote{font-size:1.5rem;text-align:center}section.cover ul{line-height:1.8;list-style-type:none;margin:1em auto;max-width:500px;padding:0}section.cover .cover-main>p:last-child a{border-radius:2rem;border:1px solid var(--accent);box-sizing:border-box;color:var(--accent);display:inline-block;font-size:1.05rem;letter-spacing:.1rem;margin:.5rem 1rem;padding:.75em 2rem;text-decoration:none;transition:all .15s ease}section.cover .cover-main>p:last-child a:last-child{background-color:var(--accent);color:#fff}section.cover .cover-main>p:last-child a:last-child:hover{color:inherit;opacity:.8}section.cover .cover-main>p:last-child a:hover{color:inherit}section.cover blockquote>p>a{border-bottom:2px solid var(--accent);transition:color .3s}section.cover blockquote>p>a:hover{color:var(--accent)}.sidebar,body{background-color:var(--background);transition:background-image .15s ease-in-out .15s}.sidebar{color:var(--textColor)}.sidebar li{margin:6px 0}.sidebar ul li a{color:var(--sidebarSublink);font-size:14px;font-weight:400;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.sidebar ul li a:hover{text-decoration:underline}.sidebar ul li ul{padding:0}.sidebar ul li.active>a{border-right:2px solid;color:var(--accent);font-weight:600}.app-sub-sidebar li:before{content:"-";padding-right:4px;float:left}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section strong{color:var(--textColor);font-weight:600}.markdown-section a{color:var(--accent);font-weight:600;text-decoration:none}.markdown-section h1{font-size:2rem;margin:0 0 1rem}.markdown-section h2{font-size:1.75rem;margin:45px 0 .8rem}.markdown-section h3{font-size:1.5rem;margin:40px 0 .6rem}.markdown-section h4{font-size:1.25rem}.markdown-section h5{font-size:1rem}.markdown-section h6{color:#777;font-size:1rem}.markdown-section figure,.markdown-section p{margin:1.2em 0}.markdown-section ol,.markdown-section p,.markdown-section ul{line-height:1.6rem;word-spacing:.05rem}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section blockquote{border-left:4px solid var(--accent);color:var(--blockQuoteColor);margin:2em 0;padding-left:20px}.markdown-section blockquote p{font-weight:600;margin-left:0}.markdown-section iframe{margin:1em 0}.markdown-section em{color:#7f8c8d}.markdown-section code{border-radius:2px;color:var(--highlightColor);font-size:.9rem;margin:0 2px;padding:3px 5px;white-space:pre-wrap;font-weight:700}.markdown-section code,.markdown-section pre{background-color:var(--codeBackgroudColor);font-family:var(--codeFontFamily)}.markdown-section pre{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;line-height:1.5rem;margin:1.2em 0;overflow:auto;padding:0 1.4rem;position:relative;word-wrap:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e908c}.token.namespace{opacity:.7}.token.boolean,.token.number{color:#c76b29}.token.punctuation{color:#525252}.token.property{color:#c08b30}.token.tag{color:#2973b7}.token.string{color:var(--accent)}.token.selector{color:#6679cc}.token.attr-name{color:#2973b7}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#22a2c9}.token.attr-value,.token.control,.token.directive,.token.unit{color:var(--accent)}.token.function,.token.keyword{color:#e96900}.token.atrule,.token.regex,.token.statement{color:#22a2c9}.token.placeholder,.token.variable{color:#3d8fd1}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #202746;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c94922}.token.entity{cursor:help}.markdown-section pre>code{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;background-color:var(--codeBackgroudColor);border-radius:2px;color:var(--codeTextColor);display:block;font-family:Roboto Mono,Monaco,courier,monospace;font-size:.8rem;line-height:inherit;margin:0 2px;max-width:inherit;overflow:inherit;padding:2.2em 5px;white-space:inherit}.markdown-section code:after,.markdown-section code:before{letter-spacing:.05rem}code .token{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;min-height:1.5rem;position:relative;left:auto}pre:after{color:var(--codeTypeColor);content:attr(data-lang);font-size:.6rem;font-weight:600;height:15px;line-height:15px;padding:5px 10px 0;position:absolute;right:0;text-align:right;top:0}#docsify-darklight-theme{position:absolute;right:10px;top:15px;width:25px;height:25px;background-repeat:no-repeat;background-image:var(--toogleImage);background-size:cover;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:background-image .15s ease-in-out .15s}#docsify-darklight-theme p{visibility:hidden}
\ No newline at end of file
diff --git a/docs/assets/css/vue.css b/docs/assets/css/vue.css
new file mode 100644
index 0000000..9b61156
--- /dev/null
+++ b/docs/assets/css/vue.css
@@ -0,0 +1 @@
+@import url("https://fonts.googleapis.com/css?family=Roboto+Mono|Source+Sans+Pro:300,400,600");*{-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none;box-sizing:border-box}body:not(.ready){overflow:hidden}body:not(.ready) .app-nav,body:not(.ready)>nav,body:not(.ready) [data-cloak]{display:none}div#app{font-size:30px;font-weight:lighter;margin:40vh auto;text-align:center}div#app:empty:before{content:"Loading..."}.emoji{height:1.2rem;vertical-align:middle}.progress{background-color:var(--theme-color,#42b983);height:2px;left:0;position:fixed;right:0;top:0;transition:width .2s,opacity .4s;width:0;z-index:999999}.search .search-keyword,.search a:hover{color:var(--theme-color,#42b983)}.search .search-keyword{font-style:normal;font-weight:700}body,html{height:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#34495e;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:15px;letter-spacing:0;margin:0;overflow-x:hidden}img{max-width:100%}a[disabled]{cursor:not-allowed;opacity:.6}kbd{border:1px solid #ccc;border-radius:3px;display:inline-block;font-size:12px!important;line-height:12px;margin-bottom:3px;padding:3px 5px;vertical-align:middle}li input[type=checkbox]{margin:0 .2em .25em 0;vertical-align:middle}.app-nav{margin:25px 60px 0 0;position:absolute;right:0;text-align:right;z-index:10}.app-nav.no-badge{margin-right:25px}.app-nav p{margin:0}.app-nav>a{margin:0 1rem;padding:5px 0}.app-nav li,.app-nav ul{display:inline-block;list-style:none;margin:0}.app-nav a{color:inherit;font-size:16px;text-decoration:none;transition:color .3s}.app-nav a.active,.app-nav a:hover{color:var(--theme-color,#42b983)}.app-nav a.active{border-bottom:2px solid var(--theme-color,#42b983)}.app-nav li{display:inline-block;margin:0 1rem;padding:5px 0;position:relative;cursor:pointer}.app-nav li ul{background-color:#fff;border:1px solid;border-color:#ddd #ddd #ccc;border-radius:4px;box-sizing:border-box;display:none;max-height:calc(100vh - 61px);overflow-y:auto;padding:10px 0;position:absolute;right:-15px;text-align:left;top:100%;white-space:nowrap}.app-nav li ul li{display:block;font-size:14px;line-height:1rem;margin:8px 14px;white-space:nowrap}.app-nav li ul a{display:block;font-size:inherit;margin:0;padding:0}.app-nav li ul a.active{border-bottom:0}.app-nav li:hover ul{display:block}.github-corner{border-bottom:0;position:fixed;right:0;text-decoration:none;top:0;z-index:1}.github-corner:hover .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}.github-corner svg{color:#fff;fill:var(--theme-color,#42b983);height:80px;width:80px}main{display:block;position:relative;width:100vw;height:100%;z-index:0}main.hidden{display:none}.anchor{display:inline-block;text-decoration:none;transition:all .3s}.anchor span{color:#34495e}.anchor:hover{text-decoration:underline}.sidebar{border-right:1px solid rgba(0,0,0,.07);overflow-y:auto;padding:40px 0 0;position:absolute;top:0;bottom:0;left:0;transition:transform .25s ease-out;width:300px;z-index:20}.sidebar>h1{margin:0 auto 1rem;font-size:1.5rem;font-weight:300;text-align:center}.sidebar>h1 a{color:inherit;text-decoration:none}.sidebar>h1 .app-nav{display:block;position:static}.sidebar .sidebar-nav{line-height:2em;padding-bottom:40px}.sidebar li.collapse .app-sub-sidebar{display:none}.sidebar ul{margin:0 0 0 15px;padding:0}.sidebar li>p{font-weight:700;margin:0}.sidebar ul,.sidebar ul li{list-style:none}.sidebar ul li a{border-bottom:none;display:block}.sidebar ul li ul{padding-left:20px}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}.sidebar:hover::-webkit-scrollbar-thumb{background:hsla(0,0%,53.3%,.4)}.sidebar:hover::-webkit-scrollbar-track{background:hsla(0,0%,53.3%,.1)}.sidebar-toggle{background-color:transparent;background-color:hsla(0,0%,100%,.8);border:0;outline:none;padding:10px;position:absolute;bottom:0;left:0;text-align:center;transition:opacity .3s;width:284px;z-index:30;cursor:pointer}.sidebar-toggle:hover .sidebar-toggle-button{opacity:.4}.sidebar-toggle span{background-color:var(--theme-color,#42b983);display:block;margin-bottom:4px;width:16px;height:2px}body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}.content{padding-top:60px;position:absolute;top:0;right:0;bottom:0;left:300px;transition:left .25s ease}.markdown-section{margin:0 auto;max-width:80%;padding:30px 15px 40px;position:relative}.markdown-section>*{box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0!important}.markdown-section hr{border:none;border-bottom:1px solid #eee;margin:2em 0}.markdown-section iframe{border:1px solid #eee;width:1px;min-width:100%}.markdown-section table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:1rem;overflow:auto;width:100%}.markdown-section th{font-weight:700}.markdown-section td,.markdown-section th{border:1px solid #ddd;padding:6px 13px}.markdown-section tr{border-top:1px solid #ccc}.markdown-section p.tip,.markdown-section tr:nth-child(2n){background-color:#f8f8f8}.markdown-section p.tip{border-bottom-right-radius:2px;border-left:4px solid #f66;border-top-right-radius:2px;margin:2em 0;padding:12px 24px 12px 30px;position:relative}.markdown-section p.tip:before{background-color:#f66;border-radius:100%;color:#fff;content:"!";font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:700;left:-12px;line-height:20px;position:absolute;height:20px;width:20px;text-align:center;top:14px}.markdown-section p.tip code{background-color:#efefef}.markdown-section p.tip em{color:#34495e}.markdown-section p.warn{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem}.markdown-section ul.task-list>li{list-style-type:none}body.close .sidebar{transform:translateX(-300px)}body.close .sidebar-toggle{width:auto}body.close .content{left:0}@media print{.app-nav,.github-corner,.sidebar,.sidebar-toggle{display:none}}@media screen and (max-width:768px){.github-corner,.sidebar,.sidebar-toggle{position:fixed}.app-nav{margin-top:16px}.app-nav li ul{top:30px}main{height:auto;overflow-x:hidden}.sidebar{left:-300px;transition:transform .25s ease-out}.content{left:0;max-width:100vw;position:static;padding-top:20px;transition:transform .25s ease}.app-nav,.github-corner{transition:transform .25s ease-out}.sidebar-toggle{background-color:transparent;width:auto;padding:30px 30px 10px 10px}body.close .sidebar{transform:translateX(300px)}body.close .sidebar-toggle{background-color:hsla(0,0%,100%,.8);transition:background-color 1s;width:284px;padding:10px}body.close .content{transform:translateX(300px)}body.close .app-nav,body.close .github-corner{display:none}.github-corner:hover .octo-arm{-webkit-animation:none;animation:none}.github-corner .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}}@-webkit-keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}section.cover{align-items:center;background-position:50%;background-repeat:no-repeat;background-size:cover;height:100vh;width:100vw;display:none}section.cover.show{display:flex}section.cover.has-mask .mask{background-color:#fff;opacity:.8;position:absolute;top:0;height:100%;width:100%}section.cover .cover-main{flex:1;margin:-20px 16px 0;text-align:center}section.cover a{color:inherit}section.cover a,section.cover a:hover{text-decoration:none}section.cover p{line-height:1.5rem;margin:1em 0}section.cover h1{color:inherit;font-size:2.5rem;font-weight:300;margin:.625rem 0 2.5rem;position:relative;text-align:center}section.cover h1 a{display:block}section.cover h1 small{bottom:-.4375rem;font-size:1rem;position:absolute}section.cover blockquote{font-size:1.5rem;text-align:center}section.cover ul{line-height:1.8;list-style-type:none;margin:1em auto;max-width:500px;padding:0}section.cover .cover-main>p:last-child a{border-radius:2rem;border:1px solid var(--theme-color,#42b983);box-sizing:border-box;color:var(--theme-color,#42b983);display:inline-block;font-size:1.05rem;letter-spacing:.1rem;margin:.5rem 1rem;padding:.75em 2rem;text-decoration:none;transition:all .15s ease}section.cover .cover-main>p:last-child a:last-child{background-color:var(--theme-color,#42b983);color:#fff}section.cover .cover-main>p:last-child a:last-child:hover{color:inherit;opacity:.8}section.cover .cover-main>p:last-child a:hover{color:inherit}section.cover blockquote>p>a{border-bottom:2px solid var(--theme-color,#42b983);transition:color .3s}section.cover blockquote>p>a:hover{color:var(--theme-color,#42b983)}.sidebar,body{background-color:#fff}.sidebar{color:#364149}.sidebar li{margin:6px 0}.sidebar ul li a{color:#505d6b;font-size:14px;font-weight:400;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.sidebar ul li a:hover{text-decoration:underline}.sidebar ul li ul{padding:0}.sidebar ul li.active>a{border-right:2px solid;color:var(--theme-color,#42b983);font-weight:600}.app-sub-sidebar li:before{content:"-";padding-right:4px;float:left}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section strong{color:#2c3e50;font-weight:600}.markdown-section a{color:var(--theme-color,#42b983);font-weight:600}.markdown-section h1{font-size:2rem;margin:0 0 1rem}.markdown-section h2{font-size:1.75rem;margin:45px 0 .8rem}.markdown-section h3{font-size:1.5rem;margin:40px 0 .6rem}.markdown-section h4{font-size:1.25rem}.markdown-section h5{font-size:1rem}.markdown-section h6{color:#777;font-size:1rem}.markdown-section figure,.markdown-section p{margin:1.2em 0}.markdown-section ol,.markdown-section p,.markdown-section ul{line-height:1.6rem;word-spacing:.05rem}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section blockquote{border-left:4px solid var(--theme-color,#42b983);color:#858585;margin:2em 0;padding-left:20px}.markdown-section blockquote p{font-weight:600;margin-left:0}.markdown-section iframe{margin:1em 0}.markdown-section em{color:#7f8c8d}.markdown-section code{border-radius:2px;color:#e96900;font-size:.8rem;margin:0 2px;padding:3px 5px;white-space:pre-wrap}.markdown-section code,.markdown-section pre{background-color:#f8f8f8;font-family:Roboto Mono,Monaco,courier,monospace}.markdown-section pre{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;line-height:1.5rem;margin:1.2em 0;overflow:auto;padding:0 1.4rem;position:relative;word-wrap:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e908c}.token.namespace{opacity:.7}.token.boolean,.token.number{color:#c76b29}.token.punctuation{color:#525252}.token.property{color:#c08b30}.token.tag{color:#2973b7}.token.string{color:var(--theme-color,#42b983)}.token.selector{color:#6679cc}.token.attr-name{color:#2973b7}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#22a2c9}.token.attr-value,.token.control,.token.directive,.token.unit{color:var(--theme-color,#42b983)}.token.function,.token.keyword{color:#e96900}.token.atrule,.token.regex,.token.statement{color:#22a2c9}.token.placeholder,.token.variable{color:#3d8fd1}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #202746;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c94922}.token.entity{cursor:help}.markdown-section pre>code{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;background-color:#f8f8f8;border-radius:2px;color:#525252;display:block;font-family:Roboto Mono,Monaco,courier,monospace;font-size:.8rem;line-height:inherit;margin:0 2px;max-width:inherit;overflow:inherit;padding:2.2em 5px;white-space:inherit}.markdown-section code:after,.markdown-section code:before{letter-spacing:.05rem}code .token{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;min-height:1.5rem;position:relative;left:auto}pre:after{color:#ccc;content:attr(data-lang);font-size:.6rem;font-weight:600;height:15px;line-height:15px;padding:5px 10px 0;position:absolute;right:0;text-align:right;top:0}
\ No newline at end of file
diff --git a/docs/assets/js/dark-theme-index.min.js b/docs/assets/js/dark-theme-index.min.js
new file mode 100644
index 0000000..4ee3aae
--- /dev/null
+++ b/docs/assets/js/dark-theme-index.min.js
@@ -0,0 +1 @@
+window.$docsify.plugins=[].concat((e,o)=>{let t={siteFont:"PT Sans",defaultTheme:"dark",codeFontFamily:"Roboto Mono, Monaco, courier, monospace",bodyFontSize:"17px",dark:{accent:"#42b983",toogleBackground:"#ffffff",background:"#091a28",textColor:"#b4b4b4",codeTextColor:"#ffffff",codeBackgroudColor:"#0e2233",borderColor:"#0d2538",blockQuoteColour:"#858585",highlightColor:"#d22778",sidebarSublink:"#b4b4b4",codeTypeColor:"#ffffff",coverBackground:"linear-gradient(to left bottom, hsl(118, 100%, 85%) 0%,hsl(181, 100%, 85%) 100%)",toogleImage:"url(https://cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/icons/sun.svg)"},light:{accent:"#42b983",toogleBackground:"#091a28",background:"#ffffff",textColor:"#34495e",codeTextColor:"#525252",codeBackgroudColor:"#f8f8f8",borderColor:"rgba(0, 0, 0, 0.07)",blockQuoteColor:"#858585",highlightColor:"#d22778",sidebarSublink:"#505d6b",codeTypeColor:"#091a28",coverBackground:"linear-gradient(to left bottom, hsl(118, 100%, 85%) 0%,hsl(181, 100%, 85%) 100%)",toogleImage:"url(https://cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/icons/moon.svg)"}};if(o.config.hasOwnProperty("darklightTheme")){for(var[r,l]of Object.entries(o.config.darklightTheme))"light"!==r&&"dark"!==r&&"defaultTheme"!==r&&(t[r]=l);for(var[r,l]of Object.entries(t))"light"!==r&&"dark"!==r&&(t[r]=l,document.documentElement.style.setProperty("--"+r,l));if(o.config.darklightTheme.hasOwnProperty("dark"))for(var[r,l]of Object.entries(o.config.darklightTheme.dark))t.dark[r]=l;if(o.config.darklightTheme.hasOwnProperty("light"))for(var[r,l]of Object.entries(o.config.darklightTheme.light))t.light[r]=l}else for(var[r,l]of Object.entries(t))"light"!==r&&"dark"!==r&&(t[r]=l,document.documentElement.style.setProperty("--"+r,l));window.matchMedia("(prefers-color-scheme: dark)").matches?t.defaultTheme="dark":window.matchMedia("(prefers-color-scheme: light)").matches&&(t.defaultTheme="light");var d=e=>{if(localStorage.setItem("DARK_LIGHT_THEME",e),t.defaultTheme=e,"light"==e)for(var[o,r]of Object.entries(t.light))document.documentElement.style.setProperty("--"+o,r);else if("dark"==e)for(var[o,r]of Object.entries(t.dark))document.documentElement.style.setProperty("--"+o,r)};e.afterEach((function(e,o){o(e=`<div id="docsify-darklight-theme"><p>.</p></div>${e}`)})),e.doneEach((function(){let e=localStorage.getItem("DARK_LIGHT_THEME");"light"==e||"dark"==e?(t.defaultTheme=e,d(t.defaultTheme)):d(t.defaultTheme),document.getElementById("docsify-darklight-theme").addEventListener("click",(function(){"light"===t.defaultTheme?d("dark"):d("light")}))}))},window.$docsify.plugins);
diff --git a/docs/assets/js/docsify-changelog-index.js b/docs/assets/js/docsify-changelog-index.js
new file mode 100644
index 0000000..ee8f0ec
--- /dev/null
+++ b/docs/assets/js/docsify-changelog-index.js
@@ -0,0 +1 @@
+"use strict";window.$docsify.plugins=[].concat((n,e)=>{var t,o;localStorage&&(t=!0),window.changelogDisplayHandler=function(){if(document.getElementById("CHANGELOG_RENDERER").classList.toggle("show"),t&&null===localStorage.getItem(o)){document.getElementById("CHANGELOG_NOTIFY").remove(),localStorage.setItem(o,!0)}document.getElementById("CHANGELOG_RENDERER").classList.contains("show")?window.addEventListener("click",a):window.removeEventListener("click",a)};let i=document.querySelector("nav.app-nav");if(null===i&&(i=document.querySelector("nav"),null===i))return void console.error("[Docsify-plugin-changelog] : please Write the nav element statically and set the loadNavbar option to false");const c=i.outerHTML.split("\n");function a(n){1!=document.getElementById("CHANGELOG_RENDERER").contains(n.target)&&1!=document.querySelector("nav").contains(n.target)&&document.getElementById("CHANGELOG_RENDERER").classList.contains("show")&&(document.getElementById("CHANGELOG_RENDERER").classList.remove("show"),window.removeEventListener("click",a))}n.ready((function(){e.config.changelog&&!e.config.loadNavbar&&function(){const n=new XMLHttpRequest;n.onreadystatechange=function(){!function(n){var a;const l=JSON.stringify(n);t&&localStorage.getItem(l)?a='<a href="javascript:void(0)" onClick="window.changelogDisplayHandler(); return false;" id="CHANGELOG">CHANGELOG</a>\n                <div id="CHANGELOG_RENDERER">\n                  <div class="CL_content">\n                    <div class="CL_content-body"></div>\n                  </div>\n                </div>':(a='<a href="javascript:void(0)" onClick="window.changelogDisplayHandler(); return false;" id="CHANGELOG"><i id="CHANGELOG_NOTIFY"></i>  CHANGELOG</a>\n                <div id="CHANGELOG_RENDERER">\n                  <div class="CL_content">\n                    <div class="CL_content-body"></div>\n                  </div>\n                </div>',o=l);i.innerHTML=c.map(n=>n.trim()).slice(1,c.length-1).concat(a.split("\n").map(n=>n.trim())).concat(c.slice(-1,-1)).join("\n");const s=e.compiler._marked.parse(n);document.querySelector("#CHANGELOG_RENDERER .CL_content .CL_content-body").innerHTML=s}(` ${this.responseText} \n # {docsify-ignore-all} `)},n.open("GET",e.config.changelog,!0),n.send()}()}))},window.$docsify.plugins);
diff --git a/docs/assets/js/docsify-copy-code.min.js b/docs/assets/js/docsify-copy-code.min.js
new file mode 100644
index 0000000..dee84c7
--- /dev/null
+++ b/docs/assets/js/docsify-copy-code.min.js
@@ -0,0 +1,9 @@
+/*!
+ * docsify-copy-code
+ * v2.1.0
+ * https://github.com/jperasmus/docsify-copy-code
+ * (c) 2017-2019 JP Erasmus <jperasmus11@gmail.com>
+ * MIT license
+ */
+!function(){"use strict";function r(o){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(o)}!function(o,e){void 0===e&&(e={});var t=e.insertAt;if(o&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=o:c.appendChild(document.createTextNode(o))}}(".docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:0;right:0;overflow:visible;padding:.65em .8em;border:0;border-radius:0;outline:0;font-size:1em;background:grey;background:var(--theme-color,grey);color:#fff;opacity:0}.docsify-copy-code-button span{border-radius:3px;background:inherit;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;left:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error,.docsify-copy-code-button.success .success{opacity:1;-webkit-transform:translate(-115%,-50%);transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(o,e){o.ready(function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")})}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,s){o.doneEach(function(){var o=Array.apply(null,document.querySelectorAll("pre[data-lang]")),c={buttonText:"Copy to clipboard",errorText:"Error",successText:"Copied"};s.config.copyCode&&Object.keys(c).forEach(function(t){var n=s.config.copyCode[t];"string"==typeof n?c[t]=n:"object"===r(n)&&Object.keys(n).some(function(o){var e=-1<location.href.indexOf(o);return c[t]=e?n[o]:c[t],e})});var e=['<button class="docsify-copy-code-button">','<span class="label">'.concat(c.buttonText,"</span>"),'<span class="error">'.concat(c.errorText,"</span>"),'<span class="success">'.concat(c.successText,"</span>"),"</button>"].join("");o.forEach(function(o){o.insertAdjacentHTML("beforeend",e)})}),o.mounted(function(){document.querySelector(".content").addEventListener("click",function(o){if(o.target.classList.contains("docsify-copy-code-button")){var e="BUTTON"===o.target.tagName?o.target:o.target.parentNode,t=document.createRange(),n=e.parentNode.querySelector("code"),c=window.getSelection();t.selectNode(n),c.removeAllRanges(),c.addRange(t);try{document.execCommand("copy")&&(e.classList.add("success"),setTimeout(function(){e.classList.remove("success")},1e3))}catch(o){console.error("docsify-copy-code: ".concat(o)),e.classList.add("error"),setTimeout(function(){e.classList.remove("error")},1e3)}"function"==typeof(c=window.getSelection()).removeRange?c.removeRange(t):"function"==typeof c.removeAllRanges&&c.removeAllRanges()}})})}].concat(window.$docsify.plugins||[])}();
+//# sourceMappingURL=docsify-copy-code.min.js.map
diff --git a/docs/assets/js/docsify-fontawesome.min.js b/docs/assets/js/docsify-fontawesome.min.js
new file mode 100644
index 0000000..80c7791
--- /dev/null
+++ b/docs/assets/js/docsify-fontawesome.min.js
@@ -0,0 +1 @@
+!function(e){var n={};function r(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=n,r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,n){if(1&n&&(e=r(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(r.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)r.d(t,o,function(n){return e[n]}.bind(null,o));return t},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r.p="",r(r.s=0)}([function(e,n,r){"use strict";r.r(n),window.$docsify=window.$docsify||{},window.$docsify.plugins=(window.$docsify.plugins||[]).concat((function(e){const n=/:fa[\w -]+:/gm;e.beforeEach(e=>e.replace(n,(function(e,n){return console.log("m: "+e.replace(/:/gi,"")),`<i class="${e.replace(/:/gi,"")}"></i>`}))),e.afterEach((function(e,r){r(e.replace(n,(function(e,n){return console.log("m: "+e.replace(/:/gi,"")),`<i class="${e.replace(/:/gi,"")}"></i>`})))}))}))}]);
\ No newline at end of file
diff --git a/docs/assets/js/docsify-pagination.min.js b/docs/assets/js/docsify-pagination.min.js
new file mode 100644
index 0000000..fd31e17
--- /dev/null
+++ b/docs/assets/js/docsify-pagination.min.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e():"function"==typeof define&&define.amd?define(e):e()}(0,function(){"use strict";var t,p=(function(t,e){function n(t,e){return e.querySelector(t)}(e=t.exports=function(t,e){return n(t,e=e||document)}).all=function(t,e){return(e=e||document).querySelectorAll(t)},e.engine=function(t){if(!t.one)throw new Error(".one callback required");if(!t.all)throw new Error(".all callback required");return n=t.one,e.all=t.all,e}}(t={exports:{}},t.exports),t.exports);p.all,p.engine;try{var a=p}catch(t){a=p}var e=Element.prototype,r=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector,u=function(t,e){if(!t||1!==t.nodeType)return!1;if(r)return r.call(t,e);for(var n=a.all(e,t.parentNode),i=0;i<n.length;++i)if(n[i]==t)return!0;return!1};try{var i=u}catch(t){i=u}var f=function(t,e,n){n=n||document.documentElement;for(;t&&t!==n;){if(i(t,e))return t;t=t.parentNode}return i(t,e)?t:null};!function(t,e){void 0===e&&(e={});var n=e.insertAt;if(t&&"undefined"!=typeof document){var i=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}(".docsify-pagination-container{display:flex;flex-wrap:wrap;justify-content:space-between;overflow:hidden;margin:5em 0 1em;border-top:1px solid rgba(0,0,0,.07)}.pagination-item{margin-top:2.5em}.pagination-item a,.pagination-item a:hover{text-decoration:none}.pagination-item a{color:currentColor}.pagination-item a:hover .pagination-item-title{text-decoration:underline}.pagination-item:not(:last-child) a .pagination-item-label,.pagination-item:not(:last-child) a .pagination-item-subtitle,.pagination-item:not(:last-child) a .pagination-item-title{opacity:.3;transition:all .2s}.pagination-item:last-child .pagination-item-label,.pagination-item:not(:last-child) a:hover .pagination-item-label{opacity:.6}.pagination-item:not(:last-child) a:hover .pagination-item-title{opacity:1}.pagination-item-label{font-size:.8em}.pagination-item-label>*{line-height:1;vertical-align:middle}.pagination-item-label svg{height:.8em;width:auto;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1px}.pagination-item--next{margin-left:auto;text-align:right}.pagination-item--next svg{margin-left:.5em}.pagination-item--previous svg{margin-right:.5em}.pagination-item-title{font-size:1.6em}.pagination-item-subtitle{text-transform:uppercase;opacity:.3}");var o=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},l=function(){function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}}(),c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},d={HASH:"hash",HISTORY:"history"},s=function(t){return{previousText:"PREVIOUS",nextText:"NEXT",crossChapter:!1,crossChapterText:!1,routerMode:t.routerMode||d.HASH}},h="docsify-pagination-container";function g(t){return Array.prototype.slice.call(t)}function m(t){return t.href?t:p("a",t)}function v(e,t){return 1===arguments.length?function(t){return v(e,t)}:decodeURIComponent(t.getAttribute("href").split("?")[0])===decodeURIComponent(e)}var y=function(){function n(t){var e;(o(this,n),t)&&(this.chapter=(e=f(t,"div > ul > li"),p("p",e)),this.hyperlink=m(t))}return l(n,[{key:"toJSON",value:function(){if(this.hyperlink)return{name:this.hyperlink.innerText,href:this.hyperlink.getAttribute("href"),chapterName:this.chapter&&this.chapter.innerText||""}}}]),n}();var x={container:function(){return'<div class="'+h+'"></div>'},inner:function(t,e){return[t.prev&&'\n        <div class="pagination-item pagination-item--previous">\n          <a href="'+t.prev.href+'">\n            <div class="pagination-item-label">\n              <svg class="icon" width="10" height="16" viewBox="0 0 10 16" xmlns="http://www.w3.org/2000/svg">\n                <polyline fill="none" vector-effect="non-scaling-stroke" points="8,2 2,8 8,14"/>\n              </svg>\n              <span>'+e.previousText+'</span>\n            </div>\n            <div class="pagination-item-title">'+t.prev.name+"</div>\n      ",t.prev&&e.crossChapterText&&'<div class="pagination-item-subtitle">'+t.prev.chapterName+"</div>",t.prev&&"</a>\n        </div>\n      ",t.next&&'\n        <div class="pagination-item pagination-item--next">\n          <a href="'+t.next.href+'">\n            <div class="pagination-item-label">\n              <span>'+e.nextText+'</span>\n              <svg width="10" height="16" viewBox="0 0 10 16" xmlns="http://www.w3.org/2000/svg">\n                <polyline fill="none" vector-effect="non-scaling-stroke" points="2,2 8,8 2,14"/>\n              </svg>\n            </div>\n            <div class="pagination-item-title">'+t.next.name+"</div>\n      ",t.next&&e.crossChapterText&&'<div class="pagination-item-subtitle">'+t.next.chapterName+"</div>",t.next&&"</a>\n        </div>\n      "].filter(Boolean).join("")}};window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(t,e){var n=c({},s(e.config),e.config.pagination||{});function i(){var t=p("."+h);t&&(t.innerHTML=x.inner(function(t,e){var n=e.crossChapter,i=e.routerMode;try{var a=i===d.HISTORY?t.route.path:"#"+t.route.path,r=g(p.all(".sidebar li a")).filter(function(t){return!u(t,".section-link")}),o=r.find(v(a)),l=g((f(o,"ul")||{}).children).filter(function(t){return"LI"===t.tagName.toUpperCase()}),c=n?r.findIndex(v(a)):l.findIndex(function(t){var e=m(t);return e&&v(a,e)}),s=n?r:l;return{prev:new y(s[c-1]).toJSON(),next:new y(s[c+1]).toJSON()}}catch(t){return{}}}(e,n),n))}t.afterEach(function(t){return t+x.container()}),t.doneEach(function(){return i()})}].concat(window.$docsify.plugins||[])});
\ No newline at end of file
diff --git a/docs/assets/js/docsify-pdf-embed.js b/docs/assets/js/docsify-pdf-embed.js
new file mode 100644
index 0000000..2dafc4d
--- /dev/null
+++ b/docs/assets/js/docsify-pdf-embed.js
@@ -0,0 +1,132 @@
+const DEBUG = 0;
+const PDF_VIEWER_WIDTH = '100%';
+const PDF_VIEWER_HEIGHT = '50rem';
+const PDF_MARGIN_TOP = '2rem';
+const PDF_MARGIN_BOTTOM = '5rem';
+
+! function() {
+	var verbose_log = function(log){
+		if (DEBUG) {
+			console.log(log);
+		}
+	}
+
+	var mobile_check = function() {
+  		var check = false;
+  		(function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera);
+  		return check;
+	};
+
+	var url_check = function(url_str) {
+		var expression = /^(http|https):\/\/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
+		return url_str.match(expression);
+	}
+
+	var build_absolute_path = function(path_str) {
+		return window.location.protocol + "//" + window.location.hostname + "/" + path_str;
+	}
+
+	var renderer_func = function(code, lang, base=null) { 
+		var pdf_renderer = function(code, lang, verify) {
+			function unique_id_generator(){
+				function rand_gen(){
+					return Math.floor((Math.random()+1) * 65536).toString(16).substring(1);
+				}
+				return rand_gen() + rand_gen() + '-' + rand_gen() + '-' + rand_gen() + '-' + rand_gen() + '-' + rand_gen() + rand_gen() + rand_gen();
+			}
+			if(lang && !lang.localeCompare('pdf', 'en', {sensitivity: 'base'})){
+				if(verify){
+					return true;
+				}else{
+					var divId = "markdown_code_pdf_container_" + unique_id_generator().toString();
+					var container_list = new Array();
+					if(localStorage.getItem('pdf_container_list')){
+						container_list = JSON.parse(localStorage.getItem('pdf_container_list'));	
+					}
+					container_list.push({"pdf_location": code, "div_id": divId});
+					localStorage.setItem('pdf_container_list', JSON.stringify(container_list));
+					return (
+						'<div style="margin-top:'+ PDF_MARGIN_TOP +'; margin-bottom:'+ PDF_MARGIN_BOTTOM +';" id="'+ divId +'">'
+							+ '<a href="'+ code + '"> Link </a> to ' + code +
+						'</div>'
+					);
+				} 
+			}
+			return false;
+		}
+		if(pdf_renderer(code, lang, true)){
+		   return pdf_renderer(code, lang, false);
+		}
+		/* SECTION START: Put other custom code rendering functions here
+			i.e. If the language of the code block is LaTex, 
+			put the code below to replace original code block with the text: 
+			'Using LaTex is much better than handwriting!' inside a div container.
+
+			if (lang == "latex") {
+				return ('<div class="container">Using LaTex is much better than handwriting!</div>');
+			}
+			
+		SECTION END */
+		return (base ? base : this.origin.code.apply(this, arguments));
+	}
+
+	var pdf_renderer = {code: renderer_func};
+	var doc_md = window.$docsify.markdown = (window.$docsify.markdown || {});
+	var doc_md_rend = doc_md.renderer = (window.$docsify.markdown.renderer || {});
+	doc_md_rend.code = (doc_md_rend.code ? doc_md_rend.code : renderer_func);
+
+	var mobile_view = mobile_check();
+
+	// Allowing Docsify to execute the script to embed PDF
+	window.$docsify.executeScript = true;
+
+	// Linking Docsify to the PDF plugin
+	window.$docsify.plugins = [
+		function(hook, vm) {
+			hook.init(function() {
+				verbose_log('PDF Code Block Loader Plugin Initialized');
+				verbose_log('This is a '.concat(mobile_view ? 'Mobile' : 'Non-mobile').concat(' Viewer.'));
+			});
+			hook.afterEach(function(html, next) {
+				verbose_log('PDF Code Block Loader Plugin After Hook Initialized');
+				container_list = JSON.parse(localStorage.getItem('pdf_container_list'));
+				verbose_log(container_list);
+				if(container_list){
+					// Handling mobile pdf rendering
+					if(mobile_view){
+						html += '<script>';
+						container_list.forEach(function(container){
+							var absolute_pdf_location = url_check(container['pdf_location']) ? container['pdf_location'] : build_absolute_path(container['pdf_location']);
+							var view_location = "https://mozilla.github.io/pdf.js/web/viewer.html?file=" + absolute_pdf_location;
+							var iframe_id = container['div_id'].concat('-iframe');
+							html += '\
+									document.getElementById("'+ container['div_id'] +'").innerHTML = \
+									\'<iframe \
+										style="overflow: auto; width: '+ PDF_VIEWER_WIDTH +'; height: '+ PDF_VIEWER_HEIGHT +';"\
+										id="'+ iframe_id +'"\
+								    	src="'+ view_location +'"\
+								    	style="border: none;" \
+									\/>\'\
+								;';
+						});
+						html += '<\/script>';
+					}else{
+						// Handling desktop pdf rendering
+						html += '<script>';
+						container_list.forEach(function(container){
+							html += '\
+							var options = {\
+								height: "'+ PDF_VIEWER_HEIGHT +'",\
+								width: "'+ PDF_VIEWER_WIDTH +'"\
+							};\
+							PDFObject.embed("'+ container['pdf_location'] +'", "#'+ container['div_id'] +'", options);';
+						});
+						html += '<\/script>';
+					}
+				}
+				localStorage.removeItem('pdf_container_list');
+				next(html);
+			});
+		}
+	].concat(window.$docsify.plugins || [])
+}();
diff --git a/docs/assets/js/docsify-plugin-flexible-alerts.min.js b/docs/assets/js/docsify-plugin-flexible-alerts.min.js
new file mode 100644
index 0000000..6f60867
--- /dev/null
+++ b/docs/assets/js/docsify-plugin-flexible-alerts.min.js
@@ -0,0 +1,9 @@
+/*!
+ * docsify-plugin-flexible-alerts
+ * v1.0.4
+ * https://github.com/zanfab/docsify-plugin-flexible-alerts#readme
+ * (c) 2019 Fabian Zankl
+ * MIT license
+ */
+!function(){"use strict";function g(t){return(g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var e;!function(t,e){void 0===e&&(e={});var o=e.insertAt;if(t&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===o&&r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}('@import url("https://use.fontawesome.com/releases/v5.6.3/css/solid.css");@import url("https://use.fontawesome.com/releases/v5.6.3/css/fontawesome.css");.alert{display:block;position:relative;word-wrap:break-word;word-break:break-word;padding:.75rem 1.25rem!important;margin-bottom:1rem!important}.alert>*{max-width:100%}.alert+.alert{margin-top:-.25rem!important}.alert:before{content:unset!important}.alert p{margin-top:.5rem;margin-bottom:.5rem}.alert i{margin-right:.5rem}.alert .title{font-weight:600;margin:0}.alert>:first-child{margin-top:0}.alert>:last-child{margin-bottom:0}.alert.callout{border:1px solid #eee;border-left-width:.25rem;border-radius:.25rem;background:#fff}.alert.callout.warning{border-left-color:#f0ad4e!important}.alert.callout.warning .title{color:#f0ad4e}.alert.callout.tip{border-left-color:#28a745!important}.alert.callout.tip .title{color:#28a745}.alert.callout.info{border-left-color:#17a2b8!important}.alert.callout.info .title{color:#17a2b8}.alert.callout.danger{border-left-color:#dc3545!important}.alert.callout.danger .title{color:#dc3545}.alert.flat{border-radius:.125rem;color:#383d41;background-color:#e2e3e5;border:1px solid #d6d8db}.alert.flat.info{color:#02587f;background-color:#cdeefd;border-color:#b8e7fc}.alert.flat.info .title{color:#01354d}.alert.flat.tip{color:#285b2a;background-color:#dbefdc;border-color:#cde9ce}.alert.flat.tip .title{color:#18381a}.alert.flat.warning{color:#852d12;background-color:#ffddd3;border-color:#ffd0c1}.alert.flat.warning .title{color:#581e0c}.alert.flat.danger{color:#7f231c;background-color:#fdd9d7;border-color:#fccac7}.alert.flat.danger .title{color:#551713}'),e={style:"callout",note:{label:"Note",icon:"fas fa-info-circle",className:"info"},tip:{label:"Tip",icon:"fas fa-lightbulb",className:"tip"},warning:{label:"Warning",icon:"fas fa-exclamation-triangle",className:"warning"},danger:{label:"Attention",icon:"fas fa-ban",className:"danger"}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[].concat(function(t,b){function m(t,e,o,r){var a=(t||"").match(new RegExp("".concat(e,":(([\\s\\w\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF-]*))")));return a?r?r(a[1]):a[1]:r?r(o):o}var p=function t(e,o,r){var a=2<arguments.length&&void 0!==r?r:0;for(var l in o)try{o[l].constructor===Object&&a<1?e[l]=t(e[l],o[l],a+1):e[l]=o[l]}catch(t){e[l]=o[l]}return e}(e,b.config["flexible-alerts"]||b.config.flexibleAlerts);t.afterEach(function(t,e){e(t.replace(/<\s*blockquote[^>]*>(?:<p>|[\S\n]*)?\[!(\w*)((?:\|[\w*:[\s\w\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF-]*)*?)\]([\s\S]*?)(?:<\/p>)?<\s*\/\s*blockquote>/g,function(t,e,o,r){var a=p[e.toLowerCase()];if(!a)return t;var l=m(o,"style",p.style),n=m(o,"iconVisibility","visible",function(t){return"hidden"!==t}),c=m(o,"labelVisibility","visible",function(t){return"hidden"!==t}),i=m(o,"label",a.label),d=m(o,"icon",a.icon),s=m(o,"className",a.className);if("object"===g(i)){var f=Object.keys(i).filter(function(t){return-1<b.route.path.indexOf(t)});f&&0<f.length?i=i[f[0]]:n=c=!1}var u='<i class="'.concat(d,'"></i>');return'<div class="alert '.concat(l," ").concat(s,'">\n            <p class="title">\n                ').concat(n?u:"","\n                ").concat(c?i:"","\n            </p>\n            <p>").concat(r,"</p>\n          </div>")}))})},window.$docsify.plugins)}();
+//# sourceMappingURL=docsify-plugin-flexible-alerts.min.js.map
diff --git a/docs/assets/js/docsify-tabs@1.js b/docs/assets/js/docsify-tabs@1.js
new file mode 100644
index 0000000..038a3f0
--- /dev/null
+++ b/docs/assets/js/docsify-tabs@1.js
@@ -0,0 +1,9 @@
+/*!
+ * docsify-tabs
+ * v1.4.3
+ * https://jhildenbiddle.github.io/docsify-tabs/
+ * (c) 2018-2020 John Hildenbiddle
+ * MIT license
+ */
+!function(){"use strict";!function(t,o){void 0===o&&(o={});var a=o.insertAt;if(t&&"undefined"!=typeof document){var c=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css","top"===a&&c.firstChild?c.insertBefore(e,c.firstChild):c.appendChild(e),e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}}(':root{--docsifytabs-border-color:#ededed;--docsifytabs-border-px:1px;--docsifytabs-margin:1.5em 0;--docsifytabs-tab-background:#f8f8f8;--docsifytabs-tab-background--active:var(--docsifytabs-content-background);--docsifytabs-tab-color:#999;--docsifytabs-tab-color--active:inherit;--docsifytabs-tab-highlight-px:3px;--docsifytabs-tab-highlight-color:var(--theme-color,currentColor);--docsifytabs-tab-padding:0.6em 1em;--docsifytabs-content-background:inherit;--docsifytabs-content-padding:1.5rem}.docsify-tabs:before,.docsify-tabs__tab{z-index:1}.docsify-tabs__tab--active,.docsify-tabs__tab:focus{z-index:2}.docsify-tabs{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative}.docsify-tabs:before{content:"";-ms-flex-order:0;order:0;-ms-flex:1;flex:1 1}.docsify-tabs__tab{-ms-flex-order:-1;order:-1;position:relative;margin:0;font-size:inherit;appearance:none}.docsify-tabs__content{visibility:hidden;position:absolute;overflow:hidden;height:0;width:100%}.docsify-tabs__content :first-child{margin-top:0}.docsify-tabs__content :first-child~:last-child,.docsify-tabs__content :last-child{margin-bottom:0}.docsify-tabs__tab--active+.docsify-tabs__content{visibility:visible;position:relative;overflow:auto;height:auto}[class*=docsify-tabs--]{margin:1.5em 0;margin:var(--docsifytabs-margin)}[class*=docsify-tabs--] .docsify-tabs__tab{padding:.6em 1em;padding:var(--docsifytabs-tab-padding);background:#f8f8f8;background:var(--docsifytabs-tab-background);color:#999;color:var(--docsifytabs-tab-color)}[class*=docsify-tabs--] .docsify-tabs__tab--active{background:inherit;background:var(--docsifytabs-tab-background--active);color:inherit;color:var(--docsifytabs-tab-color--active)}[class*=docsify-tabs--] .docsify-tabs__content{padding:1.5rem;padding:var(--docsifytabs-content-padding);background:inherit;background:var(--docsifytabs-content-background)}.docsify-tabs--classic .docsify-tabs__content,.docsify-tabs--classic .docsify-tabs__tab,.docsify-tabs--classic:before{border-width:1px;border-color:#ededed;border:var(--docsifytabs-border-px) solid var(--docsifytabs-border-color)}.docsify-tabs--classic:before{margin-right:1px;margin-right:var(--docsifytabs-border-px);border-top-width:0;border-left-width:0;border-right-width:0}.docsify-tabs--classic .docsify-tabs__tab:first-of-type{border-top-left-radius:var(--docsifytabs-border-radius-px)}.docsify-tabs--classic .docsify-tabs__tab:last-of-type{border-top-right-radius:var(--docsifytabs-border-radius-px)}.docsify-tabs--classic .docsify-tabs__tab~.docsify-tabs__tab{margin-left:-1px;margin-left:calc(0px - var(--docsifytabs-border-px))}.docsify-tabs--classic .docsify-tabs__tab--active{border-bottom-width:0;box-shadow:inset 0 3px 0 0 var(--theme-color,currentColor);box-shadow:inset 0 var(--docsifytabs-tab-highlight-px) 0 0 var(--docsifytabs-tab-highlight-color)}.docsify-tabs--classic .docsify-tabs__content{margin-top:-1px;margin-top:calc(0px - var(--docsifytabs-border-px));border-top:0;border-radius:0;border-radius:0 var(--docsifytabs-border-radius-px) var(--docsifytabs-border-radius-px) var(--docsifytabs-border-radius-px)}.docsify-tabs--material .docsify-tabs__tab{margin-bottom:2px;margin-bottom:calc(var(--docsifytabs-tab-highlight-px) - var(--docsifytabs-border-px));background:transparent;border:0}.docsify-tabs--material .docsify-tabs__tab--active{box-shadow:0 3px 0 0 var(--theme-color,currentColor);box-shadow:0 var(--docsifytabs-tab-highlight-px) 0 0 var(--docsifytabs-tab-highlight-color);background:transparent}.docsify-tabs--material .docsify-tabs__content{border-width:1px 0;border-color:#ededed;border-left:0 solid var(--docsifytabs-border-color);border-bottom:var(--docsifytabs-border-px) solid var(--docsifytabs-border-color);border-right:0 solid var(--docsifytabs-border-color);border-top:var(--docsifytabs-border-px) solid var(--docsifytabs-border-color)}',{insertAt:"top"});var u="tabs:replace",y={tabsContainer:"content",tabBlock:"docsify-tabs",tabButton:"docsify-tabs__tab",tabButtonActive:"docsify-tabs__tab--active",tabContent:"docsify-tabs__content"},p={codeMarkup:/(```[\s\S]*?```)/gm,commentReplaceMarkup:new RegExp("\x3c!-- ".concat(u," (.*) --\x3e")),tabBlockMarkup:/[\r\n]*(\s*)(<!-+\s+tabs:\s*?start\s+-+>)[\r\n]+([\s|\S]*?)[\r\n\s]+(<!-+\s+tabs:\s*?end\s+-+>)/m,tabCommentMarkup:/[\r\n]*(\s*)<!-+\s+tab:\s*(.*)\s+-+>[\r\n]+([\s\S]*?)[\r\n]*\s*(?=<!-+\s+tabs?:)/m,tabHeadingMarkup:/[\r\n]*(\s*)#{1,6}\s*[*_]{2}\s*(.*[^\s])\s*[*_]{2}[\r\n]+([\s\S]*?)(?=#{1,6}\s*[*_]{2}|<!-+\s+tabs:\s*?end\s+-+>)/m},m={persist:!0,sync:!0,theme:"classic",tabComments:!0,tabHeadings:!0};function g(t,o){var a=1<arguments.length&&void 0!==o&&o;if(t.classList.contains(y.tabButton)){var c=t,e=c.getAttribute("data-tab"),s=document.querySelector(".".concat(y.tabsContainer)),r=c.parentNode,n=Array.apply(null,r.querySelectorAll(".".concat(y.tabButton))),i=r.offsetTop;if(n.forEach(function(t){return t.classList.remove(y.tabButtonActive)}),c.classList.add(y.tabButtonActive),!a){if(m.persist){var d=(s?Array.apply(null,s.querySelectorAll(".".concat(y.tabBlock))):[]).indexOf(r),b=JSON.parse(sessionStorage.getItem(window.location.href))||{};b[d]=e,sessionStorage.setItem(window.location.href,JSON.stringify(b))}if(m.sync){var f=s?Array.apply(null,s.querySelectorAll(".".concat(y.tabButton,'[data-tab="').concat(e,'"]'))):[],l=JSON.parse(sessionStorage.getItem("*"))||[];f.forEach(function(t){g(t,!0)}),window.scrollBy(0,0-(i-r.offsetTop)),0<l.indexOf(e)&&l.splice(l.indexOf(e),1),0!==l.indexOf(e)&&(l.unshift(e),sessionStorage.setItem("*",JSON.stringify(l)))}}}}function s(){var t=(window.location.hash.match(/(?:id=)([^&]+)/)||[])[1],o=t&&".".concat(y.tabBlock," #").concat(-1<t.indexOf("%")?decodeURIComponent(t):t);if(t&&document.querySelector(o)){var a,c=document.querySelector("#".concat(t));if(c.closest)a=c.closest(".".concat(y.tabContent));else for(a=c.parentNode;a!==document.body&&!a.classList.contains("".concat(y.tabContent));)a=a.parentNode;g(a.previousElementSibling)}}window&&(window.$docsify=window.$docsify||{},window.$docsify.tabs=window.$docsify.tabs||{},Object.keys(window.$docsify.tabs).forEach(function(t){Object.prototype.hasOwnProperty.call(m,t)&&(m[t]=window.$docsify.tabs[t])}),window.$docsify.tabs.version="1.4.3",(m.tabComments||m.tabHeadings)&&(window.$docsify.plugins=[].concat(function(t,o){var a=!1;t.beforeEach(function(t){return(a=p.tabBlockMarkup.test(t))&&(t=function(d){for(var b,f,a=d.match(p.codeMarkup)||[],t=a.map(function(t,o){var a="\x3c!-- ".concat(u," CODEBLOCK").concat(o," --\x3e");return d=d.replace(t,function(){return a}),a}),l=m.theme?"".concat(y.tabBlock,"--").concat(m.theme):"",o=function(){var a=b[0],t="",o="",c=m.tabComments&&p.tabCommentMarkup.test(a),e=m.tabHeadings&&p.tabHeadingMarkup.test(a),s=b[1],r=b[2],n=b[4];if(c||e){t="\x3c!-- ".concat(u,' <div class="').concat([y.tabBlock,l].join(" "),'"> --\x3e'),o="\n".concat(s,"\x3c!-- ").concat(u," </div> --\x3e");for(var i=function(){var t=(f[2]||"[Tab]").trim(),o=(f[3]||"").trim();a=a.replace(f[0],function(){return["\n".concat(s,"\x3c!-- ").concat(u,' <button class="').concat(y.tabButton,'" data-tab="').concat(t.toLowerCase(),'">').concat(t,"</button> --\x3e"),"\n".concat(s,"\x3c!-- ").concat(u,' <div class="').concat(y.tabContent,'" data-tab-content="').concat(t.toLowerCase(),'"> --\x3e'),"\n\n".concat(s).concat(o),"\n\n".concat(s,"\x3c!-- ").concat(u," </div> --\x3e")].join("")})};null!==(f=(m.tabComments?p.tabCommentMarkup.exec(a):null)||(m.tabHeadings?p.tabHeadingMarkup.exec(a):null));)i()}a=(a=a.replace(r,function(){return t})).replace(n,function(){return o}),d=d.replace(b[0],function(){return a})};null!==(b=p.tabBlockMarkup.exec(d));)o();return t.forEach(function(t,o){d=d.replace(t,function(){return a[o]})}),d}(t)),t}),t.afterEach(function(t,o){a&&(t=function(a){for(var c,t=function(){var t=c[0],o=c[1]||"";a=a.replace(t,function(){return o})};null!==(c=p.commentReplaceMarkup.exec(a));)t();return a}(t)),o(t)}),t.doneEach(function(){var t,o,c,e;a&&(t=document.querySelector(".".concat(y.tabsContainer)),o=t?Array.apply(null,t.querySelectorAll(".".concat(y.tabBlock))):[],c=JSON.parse(sessionStorage.getItem(window.location.href))||{},e=JSON.parse(sessionStorage.getItem("*"))||[],s(),o.forEach(function(o,t){var a=o.querySelector(".".concat(y.tabButtonActive));a||(m.sync&&e.length&&(a=e.map(function(t){return o.querySelector(".".concat(y.tabButton,'[data-tab="').concat(t,'"]'))}).filter(function(t){return t})[0]),!a&&m.persist&&(a=o.querySelector(".".concat(y.tabButton,'[data-tab="').concat(c[t],'"]'))),(a=a||o.querySelector(".".concat(y.tabButton)))&&a.classList.add(y.tabButtonActive))}))}),t.mounted(function(){var t=document.querySelector(".".concat(y.tabsContainer));t&&t.addEventListener("click",function(t){g(t.target)}),window.addEventListener("hashchange",s,!1)})},window.$docsify.plugins||[])))}();
+//# sourceMappingURL=docsify-tabs.min.js.map
diff --git a/docs/assets/js/docsify.min.js b/docs/assets/js/docsify.min.js
new file mode 100644
index 0000000..89f04c9
--- /dev/null
+++ b/docs/assets/js/docsify.min.js
@@ -0,0 +1 @@
+!function(){function s(n){var r=Object.create(null);return function(e){var t=c(e)?e:JSON.stringify(e);return r[t]||(r[t]=n(e))}}var a=s(function(e){return e.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()})}),l=Object.prototype.hasOwnProperty,h=Object.assign||function(e){for(var t=arguments,n=1;n<arguments.length;n++){var r=Object(t[n]);for(var i in r)l.call(r,i)&&(e[i]=r[i])}return e};function c(e){return"string"==typeof e||"number"==typeof e}function p(){}function r(e){return"function"==typeof e}var f=document.body.clientWidth<=600,i=window.history&&window.history.pushState&&window.history.replaceState&&!navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]\D|WebApps\/.+CFNetwork)/),n={};function m(e,t){if(void 0===t&&(t=!1),"string"==typeof e){if(void 0!==window.Vue)return y(e);e=t?y(e):n[e]||(n[e]=y(e))}return e}var u=document,v=u.body,d=u.head;function y(e,t){return t?e.querySelector(t):u.querySelector(e)}function b(e,t){return[].slice.call(t?e.querySelectorAll(t):u.querySelectorAll(e))}function g(e,t){return e=u.createElement(e),t&&(e.innerHTML=t),e}function o(e,t){return e.appendChild(t)}function k(e,t){return e.insertBefore(t,e.children[0])}function x(e,t,n){r(t)?window.addEventListener(e,t):e.addEventListener(t,n)}function w(e,t,n){r(t)?window.removeEventListener(e,t):e.removeEventListener(t,n)}function _(e,t,n){e&&e.classList[n?t:"toggle"](n||t)}function e(e,t){void 0===t&&(t=document);var n=t.readyState;if("complete"===n||"interactive"===n)return setTimeout(e,0);t.addEventListener("DOMContentLoaded",e)}var t=Object.freeze({__proto__:null,getNode:m,$:u,body:v,head:d,find:y,findAll:b,create:g,appendTo:o,before:k,on:x,off:w,toggleClass:_,style:function(e){o(d,g("style",e))},documentReady:e}),A=document.currentScript;function S(e){var t=h({el:"#app",repo:"",maxLevel:6,subMaxLevel:0,loadSidebar:null,loadNavbar:null,homepage:"README.md",coverpage:"",basePath:"",auto2top:!1,name:"",themeColor:"",nameLink:window.location.pathname,autoHeader:!1,executeScript:null,noEmoji:!1,ga:"",ext:".md",mergeNavbar:!1,formatUpdated:"",externalLinkTarget:"_blank",cornerExternalLinkTarget:"_blank",externalLinkRel:"noopener",routerMode:"hash",noCompileLinks:[],crossOriginLinks:[],relativePath:!1,topMargin:0},"function"==typeof window.$docsify?window.$docsify(e):window.$docsify),n=A||[].slice.call(document.getElementsByTagName("script")).filter(function(e){return/docsify\./.test(e.src)})[0];if(n)for(var r in t)if(l.call(t,r)){var i=n.getAttribute("data-"+a(r));c(i)&&(t[r]=""===i||i)}return!0===t.loadSidebar&&(t.loadSidebar="_sidebar"+t.ext),!0===t.loadNavbar&&(t.loadNavbar="_navbar"+t.ext),!0===t.coverpage&&(t.coverpage="_coverpage"+t.ext),!0===t.repo&&(t.repo=""),!0===t.name&&(t.name=""),window.$docsify=t}var T=/([^{]*?)\w(?=\})/g,E={YYYY:"getFullYear",YY:"getYear",MM:function(e){return e.getMonth()+1},DD:"getDate",HH:"getHours",mm:"getMinutes",ss:"getSeconds",fff:"getMilliseconds"};var L=Object.hasOwnProperty,C=Object.setPrototypeOf,R=Object.isFrozen,ke=Object.keys,xe=Object.freeze,F=Object.seal,O="undefined"!=typeof Reflect&&Reflect,$=O.apply,M=O.construct;$=$||function(e,t,n){return e.apply(t,n)},xe=xe||function(e){return e},F=F||function(e){return e},M=M||function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(t))))};var we=N(Array.prototype.forEach),_e=N(Array.prototype.indexOf),Ae=N(Array.prototype.join),Se=N(Array.prototype.pop),Te=N(Array.prototype.push),Ee=N(Array.prototype.slice),Le=N(String.prototype.toLowerCase),Ce=N(String.prototype.match),Re=N(String.prototype.replace),Fe=N(String.prototype.indexOf),Oe=N(String.prototype.trim),$e=N(RegExp.prototype.test),Me=z(RegExp),Ne=z(TypeError);function N(a){return function(e){for(var t=arguments,n=arguments.length,r=Array(1<n?n-1:0),i=1;i<n;i++)r[i-1]=t[i];return $(a,e,r)}}function z(i){return function(){for(var e=arguments,t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=e[r];return M(i,n)}}function ze(e,t){C&&C(e,null);for(var n=t.length;n--;){var r=t[n];if("string"==typeof r){var i=Le(r);i!==r&&(R(t)||(t[n]=i),r=i)}e[r]=!0}return e}function Pe(e){var t={},n=void 0;for(n in e)$(L,e,[n])&&(t[n]=e[n]);return t}var je=xe(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),De=xe(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","audio","canvas","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","video","view","vkern"]),He=xe(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),qe=xe(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),Ie=xe(["#text"]),Ue=xe(["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","coords","crossorigin","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","integrity","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","minlength","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns"]),Be=xe(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Ze=xe(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),We=xe(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Ge=F(/\{\{[\s\S]*|[\s\S]*\}\}/gm),Ye=F(/<%[\s\S]*|[\s\S]*%>/gm),Ve=F(/^data-[\-\w.\u00B7-\uFFFF]/),Xe=F(/^aria-[\-\w]+$/),Ke=F(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Qe=F(/^(?:\w+script|data):/i),Je=F(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g),et="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function tt(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var nt=function(){return"undefined"==typeof window?null:window},rt=function(e,t){if("object"!==(void 0===e?"undefined":et(e))||"function"!=typeof e.createPolicy)return null;var n=null,r="data-tt-policy-suffix";t.currentScript&&t.currentScript.hasAttribute(r)&&(n=t.currentScript.getAttribute(r));var i="dompurify"+(n?"#"+n:"");try{return e.createPolicy(i,{createHTML:function(e){return e}})}catch(e){return console.warn("TrustedTypes policy "+i+" could not be created."),null}};var P,j,D=function t(e){function d(e){return t(e)}var c=0<arguments.length&&void 0!==e?e:nt();if(d.version="2.0.8",d.removed=[],!c||!c.document||9!==c.document.nodeType)return d.isSupported=!1,d;var u=c.document,o=!1,s=!1,l=c.document,p=c.DocumentFragment,n=c.HTMLTemplateElement,h=c.Node,r=c.NodeFilter,i=c.NamedNodeMap,a=void 0===i?c.NamedNodeMap||c.MozNamedAttrMap:i,f=c.Text,g=c.Comment,m=c.DOMParser,v=c.trustedTypes;if("function"==typeof n){var y=l.createElement("template");y.content&&y.content.ownerDocument&&(l=y.content.ownerDocument)}var b=rt(v,u),k=b?b.createHTML(""):"",x=l,w=x.implementation,_=x.createNodeIterator,A=x.getElementsByTagName,S=x.createDocumentFragment,T=u.importNode,E={};d.isSupported=w&&void 0!==w.createHTMLDocument&&9!==l.documentMode;function L(e){pe&&pe===e||(e&&"object"===(void 0===e?"undefined":et(e))||(e={}),D="ALLOWED_TAGS"in e?ze({},e.ALLOWED_TAGS):H,q="ALLOWED_ATTR"in e?ze({},e.ALLOWED_ATTR):I,ce="ADD_URI_SAFE_ATTR"in e?ze(Pe(ue),e.ADD_URI_SAFE_ATTR):ue,U="FORBID_TAGS"in e?ze({},e.FORBID_TAGS):{},B="FORBID_ATTR"in e?ze({},e.FORBID_ATTR):{},oe="USE_PROFILES"in e&&e.USE_PROFILES,Z=!1!==e.ALLOW_ARIA_ATTR,W=!1!==e.ALLOW_DATA_ATTR,G=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Y=e.SAFE_FOR_JQUERY||!1,V=e.SAFE_FOR_TEMPLATES||!1,X=e.WHOLE_DOCUMENT||!1,J=e.RETURN_DOM||!1,ee=e.RETURN_DOM_FRAGMENT||!1,te=e.RETURN_DOM_IMPORT||!1,ne=e.RETURN_TRUSTED_TYPE||!1,Q=e.FORCE_BODY||!1,re=!1!==e.SANITIZE_DOM,ie=!1!==e.KEEP_CONTENT,ae=e.IN_PLACE||!1,j=e.ALLOWED_URI_REGEXP||j,V&&(W=!1),ee&&(J=!0),oe&&(D=ze({},[].concat(tt(Ie))),q=[],!0===oe.html&&(ze(D,je),ze(q,Ue)),!0===oe.svg&&(ze(D,De),ze(q,Be),ze(q,We)),!0===oe.svgFilters&&(ze(D,He),ze(q,Be),ze(q,We)),!0===oe.mathMl&&(ze(D,qe),ze(q,Ze),ze(q,We))),e.ADD_TAGS&&(D===H&&(D=Pe(D)),ze(D,e.ADD_TAGS)),e.ADD_ATTR&&(q===I&&(q=Pe(q)),ze(q,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&ze(ce,e.ADD_URI_SAFE_ATTR),ie&&(D["#text"]=!0),X&&ze(D,["html","head","body"]),D.table&&(ze(D,["tbody"]),delete U.tbody),xe&&xe(e),pe=e)}function C(t){Te(d.removed,{element:t});try{t.parentNode.removeChild(t)}catch(e){t.outerHTML=k}}function R(e,t){try{Te(d.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){Te(d.removed,{attribute:null,from:t})}t.removeAttribute(e)}function F(e){var t=void 0,n=void 0;if(Q)e="<remove></remove>"+e;else{var r=Ce(e,/^[\s]+/);n=r&&r[0]}var i=b?b.createHTML(e):e;if(o)try{t=(new m).parseFromString(i,"text/html")}catch(e){}if(s&&ze(U,["title"]),!t||!t.documentElement){var a=(t=w.createHTMLDocument("")).body;a.parentNode.removeChild(a.parentNode.firstElementChild),a.outerHTML=i}return e&&n&&t.body.insertBefore(l.createTextNode(n),t.body.childNodes[0]||null),A.call(t,X?"html":"body")[0]}var O=Ge,$=Ye,M=Ve,N=Xe,z=Qe,P=Je,j=Ke,D=null,H=ze({},[].concat(tt(je),tt(De),tt(He),tt(qe),tt(Ie))),q=null,I=ze({},[].concat(tt(Ue),tt(Be),tt(Ze),tt(We))),U=null,B=null,Z=!0,W=!0,G=!1,Y=!1,V=!1,X=!1,K=!1,Q=!1,J=!1,ee=!1,te=!1,ne=!1,re=!0,ie=!0,ae=!1,oe={},se=ze({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","plaintext","script","style","svg","template","thead","title","video","xmp"]),le=ze({},["audio","video","img","source","image"]),ce=null,ue=ze({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),pe=null,de=l.createElement("form");d.isSupported&&(function(){try{F('<svg><p><textarea><img src="</textarea><img src=x abc=1//">').querySelector("svg img")&&(o=!0)}catch(e){}}(),function(){try{var e=F("<x/><title>&lt;/title&gt;&lt;img&gt;");$e(/<\/title/,e.querySelector("title").innerHTML)&&(s=!0)}catch(e){}}());function he(e){return _.call(e.ownerDocument||e,e,r.SHOW_ELEMENT|r.SHOW_COMMENT|r.SHOW_TEXT,function(){return r.FILTER_ACCEPT},!1)}function fe(e){return"object"===(void 0===h?"undefined":et(h))?e instanceof h:e&&"object"===(void 0===e?"undefined":et(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName}function ge(e,t,n){E[e]&&we(E[e],function(e){e.call(d,t,n,pe)})}function me(e){var t=void 0;if(ge("beforeSanitizeElements",e,null),function(e){return!(e instanceof f||e instanceof g||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof a&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI)}(e))return C(e),!0;var n=Le(e.nodeName);if(ge("uponSanitizeElement",e,{tagName:n,allowedTags:D}),("svg"===n||"math"===n)&&0!==e.querySelectorAll("p, br").length)return C(e),!0;if(D[n]&&!U[n])return"noscript"===n&&$e(/<\/noscript/i,e.innerHTML)?(C(e),!0):"noembed"===n&&$e(/<\/noembed/i,e.innerHTML)?(C(e),!0):(!Y||e.firstElementChild||e.content&&e.content.firstElementChild||!$e(/</g,e.textContent)||(Te(d.removed,{element:e.cloneNode()}),e.innerHTML?e.innerHTML=Re(e.innerHTML,/</g,"&lt;"):e.innerHTML=Re(e.textContent,/</g,"&lt;")),V&&3===e.nodeType&&(t=e.textContent,t=Re(t,O," "),t=Re(t,$," "),e.textContent!==t&&(Te(d.removed,{element:e.cloneNode()}),e.textContent=t)),ge("afterSanitizeElements",e,null),!1);if(ie&&!se[n]&&"function"==typeof e.insertAdjacentHTML)try{var r=e.innerHTML;e.insertAdjacentHTML("AfterEnd",b?b.createHTML(r):r)}catch(e){}return C(e),!0}function ve(e,t,n){if(re&&("id"===t||"name"===t)&&(n in l||n in de))return!1;if(W&&$e(M,t));else if(Z&&$e(N,t));else{if(!q[t]||B[t])return!1;if(ce[t]);else if($e(j,Re(n,P,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==Fe(n,"data:")||!le[e])if(G&&!$e(z,Re(n,P,"")));else if(n)return!1}return!0}function ye(e){var t=void 0,n=void 0,r=void 0,i=void 0,a=void 0;ge("beforeSanitizeAttributes",e,null);var o=e.attributes;if(o){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:q};for(a=o.length;a--;){var l=t=o[a],c=l.name,u=l.namespaceURI;if(n=Oe(t.value),r=Le(c),s.attrName=r,s.attrValue=n,s.keepAttr=!0,s.forceKeepAttr=void 0,ge("uponSanitizeAttribute",e,s),n=s.attrValue,!s.forceKeepAttr){if("name"===r&&"IMG"===e.nodeName&&o.id)i=o.id,o=Ee(o,[]),R("id",e),R(c,e),_e(o,i)>a&&e.setAttribute("id",i.value);else{if("INPUT"===e.nodeName&&"type"===r&&"file"===n&&s.keepAttr&&(q[r]||!B[r]))continue;"id"===c&&e.setAttribute(c,""),R(c,e)}if(s.keepAttr)if(Y&&$e(/\/>/i,n))R(c,e);else if($e(/svg|math/i,e.namespaceURI)&&$e(Me("</("+Ae(ke(se),"|")+")","i"),n))R(c,e);else{V&&(n=Re(n,O," "),n=Re(n,$," "));var p=e.nodeName.toLowerCase();if(ve(p,r,n))try{u?e.setAttributeNS(u,c,n):e.setAttribute(c,n),Se(d.removed)}catch(e){}}}}ge("afterSanitizeAttributes",e,null)}}function be(e){var t=void 0,n=he(e);for(ge("beforeSanitizeShadowDOM",e,null);t=n.nextNode();)ge("uponSanitizeShadowNode",t,null),me(t)||(t.content instanceof p&&be(t.content),ye(t));ge("afterSanitizeShadowDOM",e,null)}return d.sanitize=function(e,t){var n=void 0,r=void 0,i=void 0,a=void 0,o=void 0;if("string"!=typeof(e=e||"\x3c!--\x3e")&&!fe(e)){if("function"!=typeof e.toString)throw Ne("toString is not a function");if("string"!=typeof(e=e.toString()))throw Ne("dirty is not a string, aborting")}if(!d.isSupported){if("object"===et(c.toStaticHTML)||"function"==typeof c.toStaticHTML){if("string"==typeof e)return c.toStaticHTML(e);if(fe(e))return c.toStaticHTML(e.outerHTML)}return e}if(K||L(t),d.removed=[],"string"==typeof e&&(ae=!1),ae);else if(e instanceof h)1===(r=(n=F("\x3c!--\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===r.nodeName?n=r:"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!J&&!V&&!X&&ne&&-1===e.indexOf("<"))return b?b.createHTML(e):e;if(!(n=F(e)))return J?null:k}n&&Q&&C(n.firstChild);for(var s=he(ae?e:n);i=s.nextNode();)3===i.nodeType&&i===a||me(i)||(i.content instanceof p&&be(i.content),ye(i),a=i);if(a=null,ae)return e;if(J){if(ee)for(o=S.call(n.ownerDocument);n.firstChild;)o.appendChild(n.firstChild);else o=n;return te&&(o=T.call(u,o,!0)),o}var l=X?n.outerHTML:n.innerHTML;return V&&(l=Re(l,O," "),l=Re(l,$," ")),b&&ne?b.createHTML(l):l},d.setConfig=function(e){L(e),K=!0},d.clearConfig=function(){pe=null,K=!1},d.isValidAttribute=function(e,t,n){pe||L({});var r=Le(e),i=Le(t);return ve(r,i,n)},d.addHook=function(e,t){"function"==typeof t&&(E[e]=E[e]||[],Te(E[e],t))},d.removeHook=function(e){E[e]&&Se(E[e])},d.removeHooks=function(e){E[e]&&(E[e]=[])},d.removeAllHooks=function(){E={}},d}();function H(e){var t,n=e.loaded,r=e.total,i=e.step;P||function(){var e=g("div");e.classList.add("progress"),o(v,e),P=e}(),t=i?80<(t=parseInt(P.style.width||0,10)+i)?80:t:Math.floor(n/r*100),P.style.opacity=1,P.style.width=95<=t?"100%":t+"%",95<=t&&(clearTimeout(j),j=setTimeout(function(e){P.style.opacity=0,P.style.width="0%"},200))}var q={};function I(a,e,t){void 0===e&&(e=!1),void 0===t&&(t={});function n(){o.addEventListener.apply(o,arguments)}var o=new XMLHttpRequest,r=q[a];if(r)return{then:function(e){return e(r.content,r.opt)},abort:p};for(var i in o.open("GET",a),t)l.call(t,i)&&o.setRequestHeader(i,t[i]);return o.send(),{then:function(r,i){if(void 0===i&&(i=p),e){var t=setInterval(function(e){return H({step:Math.floor(5*Math.random()+1)})},500);n("progress",H),n("loadend",function(e){H(e),clearInterval(t)})}n("error",i),n("load",function(e){var t=e.target;if(400<=t.status)i(t);else{var n=q[a]={content:t.response,opt:{updatedAt:o.getResponseHeader("last-modified")}};r(n.content,n.opt)}})},abort:function(e){return 4!==o.readyState&&o.abort()}}}function U(e,t){e.innerHTML=e.innerHTML.replace(/var\(\s*--theme-color.*?\)/g,t)}function B(e,t,r,i){void 0===i&&(i=p);var a=e._hooks[t],o=function(t){var e=a[t];if(t>=a.length)i(r);else if("function"==typeof e)if(2===e.length)e(r,function(e){r=e,o(t+1)});else{var n=e(r);r=void 0===n?r:n,o(t+1)}else o(t+1)};o(0)}var Z=u.title;function W(){var e=m("section.cover");if(e){var t=e.getBoundingClientRect().height;window.pageYOffset>=t||e.classList.contains("hidden")?_(v,"add","sticky"):_(v,"remove","sticky")}}function G(e,t,r,n){var i=[];null!=(t=m(t))&&(i=b(t,"a"));var a,o=decodeURI(e.toURL(e.getCurrentPath()));return i.sort(function(e,t){return t.href.length-e.href.length}).forEach(function(e){var t=e.getAttribute("href"),n=r?e.parentNode:e;0!==o.indexOf(t)||a?_(n,"remove","active"):(a=e,_(n,"add","active"))}),n&&(u.title=a?a.title||a.innerText+" - "+Z:Z),a}var Y=decodeURIComponent,V=encodeURIComponent;function X(e){var n={};return(e=e.trim().replace(/^(\?|#|&)/,""))&&e.split("&").forEach(function(e){var t=e.replace(/\+/g," ").split("=");n[t[0]]=t[1]&&Y(t[1])}),n}function K(e,t){void 0===t&&(t=[]);var n=[];for(var r in e)-1<t.indexOf(r)||n.push(e[r]?(V(r)+"="+V(e[r])).toLowerCase():V(r));return n.length?"?"+n.join("&"):""}var Q=s(function(e){return/(:|(\/{2}))/g.test(e)}),J=s(function(e){return e.split(/[?#]/)[0]}),ee=s(function(e){if(/\/$/g.test(e))return e;var t=e.match(/(\S*\/)[^/]+$/);return t?t[1]:""}),te=s(function(e){return e.replace(/^\/+/,"/").replace(/([^:])\/{2,}/g,"$1/")}),ne=s(function(e){for(var t=e.replace(/^\//,"").split("/"),n=[],r=0,i=t.length;r<i;r++){var a=t[r];".."===a?n.pop():"."!==a&&n.push(a)}return"/"+n.join("/")});function re(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return te(e.join("/"))}var ie=s(function(e){return e.replace("#","?id=")});function ae(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var oe=(function(e,t,n){return t&&ae(e.prototype,t),n&&ae(e,n),e}(se,[{key:"getIntermediateValue",value:function(e){return this.decimal?e:Math.round(e)}},{key:"getFinalValue",value:function(){return this.end}}]),se);function se(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,se),this.start=e.start,this.end=e.end,this.decimal=e.decimal}function le(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var ce=(function(e,t,n){return t&&le(e.prototype,t),n&&le(e,n),e}(ue,[{key:"begin",value:function(){return this.isRunning||this.next===this.end||(this.frame=window.requestAnimationFrame(this._tick.bind(this))),this}},{key:"stop",value:function(){return window.cancelAnimationFrame(this.frame),this.isRunning=!1,this.frame=null,this.timeStart=null,this.next=null,this}},{key:"on",value:function(e,t){return this.events[e]=this.events[e]||[],this.events[e].push(t),this}},{key:"_emit",value:function(e,t){var n=this,r=this.events[e];r&&r.forEach(function(e){return e.call(n,t)})}},{key:"_tick",value:function(e){this.isRunning=!0;var t=this.next||this.start;this.timeStart||(this.timeStart=e),this.timeElapsed=e-this.timeStart,this.next=this.ease(this.timeElapsed,this.start,this.end-this.start,this.duration),this._shouldTick(t)?(this._emit("tick",this.tweener.getIntermediateValue(this.next)),this.frame=window.requestAnimationFrame(this._tick.bind(this))):(this._emit("tick",this.tweener.getFinalValue()),this._emit("done",null))}},{key:"_shouldTick",value:function(e){return{up:this.next<this.end&&e<=this.next,down:this.next>this.end&&e>=this.next}[this.direction]}},{key:"_defaultEase",value:function(e,t,n,r){return(e/=r/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}}]),ue);function ue(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,ue),this.duration=e.duration||1e3,this.ease=e.easing||this._defaultEase,this.tweener=e.tweener||new oe(e),this.start=this.tweener.start,this.end=this.tweener.end,this.frame=null,this.next=null,this.isRunning=!1,this.events={},this.direction=this.start<this.end?"up":"down"}var pe={},de=!1,he=null,fe=!0,ge=0;function me(e){if(fe){for(var t,n=m(".sidebar"),r=b(".anchor"),i=y(n,".sidebar-nav"),a=y(n,"li.active"),o=document.documentElement,s=(o&&o.scrollTop||document.body.scrollTop)-ge,l=0,c=r.length;l<c;l+=1){var u=r[l];if(u.offsetTop>s){t=t||u;break}t=u}if(t){var p=pe[ve(e,t.getAttribute("data-id"))];if(p&&p!==a&&(a&&a.classList.remove("active"),p.classList.add("active"),a=p,!de&&v.classList.contains("sticky"))){var d=n.clientHeight,h=a.offsetTop+a.clientHeight+40,f=h-0<d,g=a.offsetTop>=i.scrollTop&&h<=i.scrollTop+d?i.scrollTop:f?0:h-d;n.scrollTop=g}}}}function ve(e,t){return decodeURIComponent(e)+"?id="+decodeURIComponent(t)}function ye(e,t){if(t){var n=S().topMargin,r=y("#"+t);r&&function(e,t){void 0===t&&(t=0),he&&he.stop(),fe=!1,he=new ce({start:window.pageYOffset,end:e.getBoundingClientRect().top+window.pageYOffset-t,duration:500}).on("tick",function(e){return window.scrollTo(0,e)}).on("done",function(){fe=!0,he=null}).begin()}(r,n);var i=pe[ve(e,t)],a=y(m(".sidebar"),"li.active");a&&a.classList.remove("active"),i&&i.classList.add("active")}}var be=u.scrollingElement||u.documentElement;var it="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function at(e,t){return e(t={exports:{}},t.exports),t.exports}var ot=at(function(v,e){!function(){var b={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}|~{3,})([^`~\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6}) +([^\n]*?)(?: +#+)? *(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|<![A-Z][\\s\\S]*?>\\n*|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:p,table:p,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/};function l(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||m.defaults,this.rules=b.normal,this.options.pedantic?this.rules=b.pedantic:this.options.gfm&&(this.rules=b.gfm)}b._label=/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,b._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/,b.def=e(b.def).replace("label",b._label).replace("title",b._title).getRegex(),b.bullet=/(?:[*+-]|\d{1,9}\.)/,b.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,b.item=e(b.item,"gm").replace(/bull/g,b.bullet).getRegex(),b.list=e(b.list).replace(/bull/g,b.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+b.def.source+")").getRegex(),b._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",b._comment=/<!--(?!-?>)[\s\S]*?-->/,b.html=e(b.html,"i").replace("comment",b._comment).replace("tag",b._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),b.paragraph=e(b._paragraph).replace("hr",b.hr).replace("heading"," {0,3}#{1,6} +").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}|~{3,})[^`\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",b._tag).getRegex(),b.blockquote=e(b.blockquote).replace("paragraph",b.paragraph).getRegex(),b.normal=h({},b),b.gfm=h({},b.normal,{nptable:/^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,table:/^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/}),b.pedantic=h({},b.normal,{html:e("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",b._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:p,paragraph:e(b.normal._paragraph).replace("hr",b.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",b.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()}),l.rules=b,l.lex=function(e,t){return new l(t).lex(e)},l.prototype.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g,"    ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(e,!0)},l.prototype.token=function(e,t){var n,r,i,a,o,s,l,c,u,p,d,h,f,g,m,v;for(e=e.replace(/^ +$/gm,"");e;)if((i=this.rules.newline.exec(e))&&(e=e.substring(i[0].length),1<i[0].length&&this.tokens.push({type:"space"})),i=this.rules.code.exec(e)){var y=this.tokens[this.tokens.length-1];e=e.substring(i[0].length),y&&"paragraph"===y.type?y.text+="\n"+i[0].trimRight():(i=i[0].replace(/^ {4}/gm,""),this.tokens.push({type:"code",codeBlockStyle:"indented",text:this.options.pedantic?i:w(i,"\n")}))}else if(i=this.rules.fences.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"code",lang:i[2]?i[2].trim():i[2],text:i[3]||""});else if(i=this.rules.heading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:i[1].length,text:i[2]});else if((i=this.rules.nptable.exec(e))&&(s={type:"table",header:x(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]}).header.length===s.align.length){for(e=e.substring(i[0].length),d=0;d<s.align.length;d++)/^ *-+: *$/.test(s.align[d])?s.align[d]="right":/^ *:-+: *$/.test(s.align[d])?s.align[d]="center":/^ *:-+ *$/.test(s.align[d])?s.align[d]="left":s.align[d]=null;for(d=0;d<s.cells.length;d++)s.cells[d]=x(s.cells[d],s.header.length);this.tokens.push(s)}else if(i=this.rules.hr.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"hr"});else if(i=this.rules.blockquote.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"blockquote_start"}),i=i[0].replace(/^ *> ?/gm,""),this.token(i,t),this.tokens.push({type:"blockquote_end"});else if(i=this.rules.list.exec(e)){for(e=e.substring(i[0].length),l={type:"list_start",ordered:g=1<(a=i[2]).length,start:g?+a:"",loose:!1},this.tokens.push(l),n=!(c=[]),f=(i=i[0].match(this.rules.item)).length,d=0;d<f;d++)p=(s=i[d]).length,~(s=s.replace(/^ *([*+-]|\d+\.) */,"")).indexOf("\n ")&&(p-=s.length,s=this.options.pedantic?s.replace(/^ {1,4}/gm,""):s.replace(new RegExp("^ {1,"+p+"}","gm"),"")),d!==f-1&&(o=b.bullet.exec(i[d+1])[0],(1<a.length?1===o.length:1<o.length||this.options.smartLists&&o!==a)&&(e=i.slice(d+1).join("\n")+e,d=f-1)),r=n||/\n\n(?!\s*$)/.test(s),d!==f-1&&(n="\n"===s.charAt(s.length-1),r=r||n),r&&(l.loose=!0),v=void 0,(m=/^\[[ xX]\] /.test(s))&&(v=" "!==s[1],s=s.replace(/^\[[ xX]\] +/,"")),u={type:"list_item_start",task:m,checked:v,loose:r},c.push(u),this.tokens.push(u),this.token(s,!1),this.tokens.push({type:"list_item_end"});if(l.loose)for(f=c.length,d=0;d<f;d++)c[d].loose=!0;this.tokens.push({type:"list_end"})}else if(i=this.rules.html.exec(e))e=e.substring(i[0].length),this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&("pre"===i[1]||"script"===i[1]||"style"===i[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(i[0]):k(i[0]):i[0]});else if(t&&(i=this.rules.def.exec(e)))e=e.substring(i[0].length),i[3]&&(i[3]=i[3].substring(1,i[3].length-1)),h=i[1].toLowerCase().replace(/\s+/g," "),this.tokens.links[h]||(this.tokens.links[h]={href:i[2],title:i[3]});else if((i=this.rules.table.exec(e))&&(s={type:"table",header:x(i[1].replace(/^ *| *\| *$/g,"")),align:i[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:i[3]?i[3].replace(/\n$/,"").split("\n"):[]}).header.length===s.align.length){for(e=e.substring(i[0].length),d=0;d<s.align.length;d++)/^ *-+: *$/.test(s.align[d])?s.align[d]="right":/^ *:-+: *$/.test(s.align[d])?s.align[d]="center":/^ *:-+ *$/.test(s.align[d])?s.align[d]="left":s.align[d]=null;for(d=0;d<s.cells.length;d++)s.cells[d]=x(s.cells[d].replace(/^ *\| *| *\| *$/g,""),s.header.length);this.tokens.push(s)}else if(i=this.rules.lheading.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"heading",depth:"="===i[2].charAt(0)?1:2,text:i[1]});else if(t&&(i=this.rules.paragraph.exec(e)))e=e.substring(i[0].length),this.tokens.push({type:"paragraph",text:"\n"===i[1].charAt(i[1].length-1)?i[1].slice(0,-1):i[1]});else if(i=this.rules.text.exec(e))e=e.substring(i[0].length),this.tokens.push({type:"text",text:i[0]});else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0));return this.tokens};var n={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:p,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,strong:/^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,em:/^_([^\s_])_(?!_)|^\*([^\s*<\[])\*(?!\*)|^_([^\s<][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_<][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s<"][\s\S]*?[^\s\*])\*(?!\*|[^\spunctuation])|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:p,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n))|(?= {2,}\n))/};function u(e,t){if(this.options=t||m.defaults,this.links=e,this.rules=n.normal,this.renderer=this.options.renderer||new r,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.pedantic?this.rules=n.pedantic:this.options.gfm&&(this.options.breaks?this.rules=n.breaks:this.rules=n.gfm)}function r(e){this.options=e||m.defaults}function i(){}function c(e){this.tokens=[],this.token=null,this.options=e||m.defaults,this.options.renderer=this.options.renderer||new r,this.renderer=this.options.renderer,this.renderer.options=this.options,this.slugger=new t}function t(){this.seen={}}function k(e,t){if(t){if(k.escapeTest.test(e))return e.replace(k.escapeReplace,function(e){return k.replacements[e]})}else if(k.escapeTestNoEncode.test(e))return e.replace(k.escapeReplaceNoEncode,function(e){return k.replacements[e]});return e}function d(e){return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}function e(n,e){return n=n.source||n,e=e||"",{replace:function(e,t){return t=(t=t.source||t).replace(/(^|[^\[])\^/g,"$1"),n=n.replace(e,t),this},getRegex:function(){return new RegExp(n,e)}}}function a(e,t,n){if(e){try{var r=decodeURIComponent(d(n)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return null}if(0===r.indexOf("javascript:")||0===r.indexOf("vbscript:")||0===r.indexOf("data:"))return null}t&&!s.test(n)&&(n=function(e,t){o[" "+e]||(/^[^:]+:\/*[^/]*$/.test(e)?o[" "+e]=e+"/":o[" "+e]=w(e,"/",!0));return e=o[" "+e],"//"===t.slice(0,2)?e.replace(/:[\s\S]*/,":")+t:"/"===t.charAt(0)?e.replace(/(:\/*[^/]*)[\s\S]*/,"$1")+t:e+t}(t,n));try{n=encodeURI(n).replace(/%25/g,"%")}catch(e){return null}return n}n._punctuation="!\"#$%&'()*+,\\-./:;<=>?@\\[^_{|}~",n.em=e(n.em).replace(/punctuation/g,n._punctuation).getRegex(),n._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,n._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,n._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,n.autolink=e(n.autolink).replace("scheme",n._scheme).replace("email",n._email).getRegex(),n._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,n.tag=e(n.tag).replace("comment",b._comment).replace("attribute",n._attribute).getRegex(),n._label=/(?:\[[^\[\]]*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,n._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,n._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,n.link=e(n.link).replace("label",n._label).replace("href",n._href).replace("title",n._title).getRegex(),n.reflink=e(n.reflink).replace("label",n._label).getRegex(),n.normal=h({},n),n.pedantic=h({},n.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,link:e(/^!?\[(label)\]\((.*?)\)/).replace("label",n._label).getRegex(),reflink:e(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",n._label).getRegex()}),n.gfm=h({},n.normal,{escape:e(n.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?= {2,}\n|[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),n.gfm.url=e(n.gfm.url,"i").replace("email",n.gfm._extended_email).getRegex(),n.breaks=h({},n.gfm,{br:e(n.br).replace("{2,}","*").getRegex(),text:e(n.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()}),u.rules=n,u.output=function(e,t,n){return new u(t,n).output(e)},u.prototype.output=function(e){for(var t,n,r,i,a,o,s="";e;)if(a=this.rules.escape.exec(e))e=e.substring(a[0].length),s+=k(a[1]);else if(a=this.rules.tag.exec(e))!this.inLink&&/^<a /i.test(a[0])?this.inLink=!0:this.inLink&&/^<\/a>/i.test(a[0])&&(this.inLink=!1),!this.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(a[0])?this.inRawBlock=!0:this.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(a[0])&&(this.inRawBlock=!1),e=e.substring(a[0].length),s+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):k(a[0]):a[0];else if(a=this.rules.link.exec(e)){var l=f(a[2],"()");if(-1<l){var c=4+a[1].length+l;a[2]=a[2].substring(0,l),a[0]=a[0].substring(0,c).trim(),a[3]=""}e=e.substring(a[0].length),this.inLink=!0,r=a[2],i=this.options.pedantic?(t=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r))?(r=t[1],t[3]):"":a[3]?a[3].slice(1,-1):"",r=r.trim().replace(/^<([\s\S]*)>$/,"$1"),s+=this.outputLink(a,{href:u.escapes(r),title:u.escapes(i)}),this.inLink=!1}else if((a=this.rules.reflink.exec(e))||(a=this.rules.nolink.exec(e))){if(e=e.substring(a[0].length),t=(a[2]||a[1]).replace(/\s+/g," "),!(t=this.links[t.toLowerCase()])||!t.href){s+=a[0].charAt(0),e=a[0].substring(1)+e;continue}this.inLink=!0,s+=this.outputLink(a,t),this.inLink=!1}else if(a=this.rules.strong.exec(e))e=e.substring(a[0].length),s+=this.renderer.strong(this.output(a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.em.exec(e))e=e.substring(a[0].length),s+=this.renderer.em(this.output(a[6]||a[5]||a[4]||a[3]||a[2]||a[1]));else if(a=this.rules.code.exec(e))e=e.substring(a[0].length),s+=this.renderer.codespan(k(a[2].trim(),!0));else if(a=this.rules.br.exec(e))e=e.substring(a[0].length),s+=this.renderer.br();else if(a=this.rules.del.exec(e))e=e.substring(a[0].length),s+=this.renderer.del(this.output(a[1]));else if(a=this.rules.autolink.exec(e))e=e.substring(a[0].length),r="@"===a[2]?"mailto:"+(n=k(this.mangle(a[1]))):n=k(a[1]),s+=this.renderer.link(r,null,n);else if(this.inLink||!(a=this.rules.url.exec(e))){if(a=this.rules.text.exec(e))e=e.substring(a[0].length),this.inRawBlock?s+=this.renderer.text(this.options.sanitize?this.options.sanitizer?this.options.sanitizer(a[0]):k(a[0]):a[0]):s+=this.renderer.text(k(this.smartypants(a[0])));else if(e)throw new Error("Infinite loop on byte: "+e.charCodeAt(0))}else{if("@"===a[2])r="mailto:"+(n=k(a[0]));else{for(;o=a[0],a[0]=this.rules._backpedal.exec(a[0])[0],o!==a[0];);n=k(a[0]),r="www."===a[1]?"http://"+n:n}e=e.substring(a[0].length),s+=this.renderer.link(r,null,n)}return s},u.escapes=function(e){return e?e.replace(u.rules._escapes,"$1"):e},u.prototype.outputLink=function(e,t){var n=t.href,r=t.title?k(t.title):null;return"!"!==e[0].charAt(0)?this.renderer.link(n,r,this.output(e[1])):this.renderer.image(n,r,k(e[1]))},u.prototype.smartypants=function(e){return this.options.smartypants?e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):e},u.prototype.mangle=function(e){if(!this.options.mangle)return e;for(var t,n="",r=e.length,i=0;i<r;i++)t=e.charCodeAt(i),.5<Math.random()&&(t="x"+t.toString(16)),n+="&#"+t+";";return n},r.prototype.code=function(e,t,n){var r=(t||"").match(/\S*/)[0];if(this.options.highlight){var i=this.options.highlight(e,r);null!=i&&i!==e&&(n=!0,e=i)}return r?'<pre><code class="'+this.options.langPrefix+k(r,!0)+'">'+(n?e:k(e,!0))+"</code></pre>\n":"<pre><code>"+(n?e:k(e,!0))+"</code></pre>"},r.prototype.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},r.prototype.html=function(e){return e},r.prototype.heading=function(e,t,n,r){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+r.slug(n)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},r.prototype.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},r.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"</"+r+">\n"},r.prototype.listitem=function(e){return"<li>"+e+"</li>\n"},r.prototype.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},r.prototype.paragraph=function(e){return"<p>"+e+"</p>\n"},r.prototype.table=function(e,t){return"<table>\n<thead>\n"+e+"</thead>\n"+(t=t&&"<tbody>"+t+"</tbody>")+"</table>\n"},r.prototype.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},r.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"</"+n+">\n"},r.prototype.strong=function(e){return"<strong>"+e+"</strong>"},r.prototype.em=function(e){return"<em>"+e+"</em>"},r.prototype.codespan=function(e){return"<code>"+e+"</code>"},r.prototype.br=function(){return this.options.xhtml?"<br/>":"<br>"},r.prototype.del=function(e){return"<del>"+e+"</del>"},r.prototype.link=function(e,t,n){if(null===(e=a(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<a href="'+k(e)+'"';return t&&(r+=' title="'+t+'"'),r+=">"+n+"</a>"},r.prototype.image=function(e,t,n){if(null===(e=a(this.options.sanitize,this.options.baseUrl,e)))return n;var r='<img src="'+e+'" alt="'+n+'"';return t&&(r+=' title="'+t+'"'),r+=this.options.xhtml?"/>":">"},r.prototype.text=function(e){return e},i.prototype.strong=i.prototype.em=i.prototype.codespan=i.prototype.del=i.prototype.text=function(e){return e},i.prototype.link=i.prototype.image=function(e,t,n){return""+n},i.prototype.br=function(){return""},c.parse=function(e,t){return new c(t).parse(e)},c.prototype.parse=function(e){this.inline=new u(e.links,this.options),this.inlineText=new u(e.links,h({},this.options,{renderer:new i})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},c.prototype.next=function(){return this.token=this.tokens.pop(),this.token},c.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},c.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},c.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,d(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",a="";for(n="",e=0;e<this.token.header.length;e++)n+=this.renderer.tablecell(this.inline.output(this.token.header[e]),{header:!0,align:this.token.align[e]});for(i+=this.renderer.tablerow(n),e=0;e<this.token.cells.length;e++){for(t=this.token.cells[e],n="",r=0;r<t.length;r++)n+=this.renderer.tablecell(this.inline.output(t[r]),{header:!1,align:this.token.align[r]});a+=this.renderer.tablerow(n)}return this.renderer.table(i,a);case"blockquote_start":for(a="";"blockquote_end"!==this.next().type;)a+=this.tok();return this.renderer.blockquote(a);case"list_start":a="";for(var o=this.token.ordered,s=this.token.start;"list_end"!==this.next().type;)a+=this.tok();return this.renderer.list(a,o,s);case"list_item_start":a="";var l=this.token.loose,c=this.token.checked,u=this.token.task;for(this.token.task&&(a+=this.renderer.checkbox(c));"list_item_end"!==this.next().type;)a+=l||"text"!==this.token.type?this.tok():this.parseText();return this.renderer.listitem(a,u,c);case"html":return this.renderer.html(this.token.text);case"paragraph":return this.renderer.paragraph(this.inline.output(this.token.text));case"text":return this.renderer.paragraph(this.parseText());default:var p='Token with "'+this.token.type+'" type was not found.';if(!this.options.silent)throw new Error(p);console.log(p)}},t.prototype.slug=function(e){var t=e.toLowerCase().trim().replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-");if(this.seen.hasOwnProperty(t))for(var n=t;this.seen[n]++,t=n+"-"+this.seen[n],this.seen.hasOwnProperty(t););return this.seen[t]=0,t},k.escapeTest=/[&<>"']/,k.escapeReplace=/[&<>"']/g,k.replacements={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},k.escapeTestNoEncode=/[<>"']|&(?!#?\w+;)/,k.escapeReplaceNoEncode=/[<>"']|&(?!#?\w+;)/g;var o={},s=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function p(){}function h(e){for(var t,n,r=arguments,i=1;i<arguments.length;i++)for(n in t=r[i])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}function x(e,t){var n=e.replace(/\|/g,function(e,t,n){for(var r=!1,i=t;0<=--i&&"\\"===n[i];)r=!r;return r?"|":" |"}).split(/ \|/),r=0;if(n.length>t)n.splice(t);else for(;n.length<t;)n.push("");for(;r<n.length;r++)n[r]=n[r].trim().replace(/\\\|/g,"|");return n}function w(e,t,n){if(0===e.length)return"";for(var r=0;r<e.length;){var i=e.charAt(e.length-r-1);if(i!==t||n){if(i===t||!n)break;r++}else r++}return e.substr(0,e.length-r)}function f(e,t){if(-1===e.indexOf(t[1]))return-1;for(var n=0,r=0;r<e.length;r++)if("\\"===e[r])r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&--n<0)return r;return-1}function g(e){e&&e.sanitize&&!e.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options")}function m(e,n,r){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if(r||"function"==typeof n){r||(r=n,n=null),g(n=h({},m.defaults,n||{}));var i,a,o=n.highlight,t=0;try{i=l.lex(e,n)}catch(e){return r(e)}a=i.length;function s(t){if(t)return n.highlight=o,r(t);var e;try{e=c.parse(i,n)}catch(e){t=e}return n.highlight=o,t?r(t):r(null,e)}if(!o||o.length<3)return s();if(delete n.highlight,!a)return s();for(;t<i.length;t++)!function(n){"code"!==n.type?--a||s():o(n.text,n.lang,function(e,t){return e?s(e):null==t||t===n.text?--a||s():(n.text=t,n.escaped=!0,void(--a||s()))})}(i[t])}else try{return g(n=n&&h({},m.defaults,n)),c.parse(l.lex(e,n),n)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",(n||m.defaults).silent)return"<p>An error occurred:</p><pre>"+k(e.message+"",!0)+"</pre>";throw e}}p.exec=p,m.options=m.setOptions=function(e){return h(m.defaults,e),m},m.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new r,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,xhtml:!1}},m.defaults=m.getDefaults(),m.Parser=c,m.parser=c.parse,m.Renderer=r,m.TextRenderer=i,m.Lexer=l,m.lexer=l.lex,m.InlineLexer=u,m.inlineLexer=u.output,m.Slugger=t,m.parse=m,v.exports=m}()});function st(e,t){if(void 0===t&&(t='<ul class="app-sub-sidebar">{inner}</ul>'),!e||!e.length)return"";var n="";return e.forEach(function(e){n+='<li><a class="section-link" href="'+e.slug+'">'+e.title+"</a></li>",e.children&&(n+=st(e.children,t))}),t.replace("{inner}",n)}function lt(e,t){return'<p class="'+e+'">'+t.slice(5).trim()+"</p>"}function ct(e,r){var i=[],a={};return e.forEach(function(e){var t=e.level||1,n=t-1;r<t||(a[n]?a[n].children=(a[n].children||[]).concat(e):i.push(e),a[t]=e)}),i}var ut={},pt=/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g;function dt(e){return e.toLowerCase()}function ht(e){if("string"!=typeof e)return"";var t=e.trim().replace(/[A-Z]+/g,dt).replace(/<[^>\d]+>/g,"").replace(pt,"").replace(/\s/g,"-").replace(/-+/g,"-").replace(/^(\d)/,"_$1"),n=ut[t];return n=l.call(ut,t)?n+1:0,(ut[t]=n)&&(t=t+"-"+n),t}function ft(e,t){return'<img class="emoji" src="https://github.githubassets.com/images/icons/emoji/'+t+'.png" alt="'+t+'" />'}function gt(e){void 0===e&&(e="");var r={};return{str:e=e&&e.replace(/^'/,"").replace(/'$/,"").replace(/(?:^|\s):([\w-]+:?)=?([\w-%]+)?/g,function(e,t,n){return-1===t.indexOf(":")?(r[t]=n&&n.replace(/&quot;/g,"")||!0,""):e}).trim(),config:r}}ht.clear=function(){ut={}};var mt,vt=at(function(e){var c=function(c){var u=/\blang(?:uage)?-([\w-]+)\b/i,t=0,F={manual:c.Prism&&c.Prism.manual,disableWorkerMessageHandler:c.Prism&&c.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof O?new O(e.type,F.util.encode(e.content),e.alias):Array.isArray(e)?e.map(F.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function n(e,r){var i,t,a=F.util.type(e);switch(r=r||{},a){case"Object":if(t=F.util.objId(e),r[t])return r[t];for(var o in i={},r[t]=i,e)e.hasOwnProperty(o)&&(i[o]=n(e[o],r));return i;case"Array":return t=F.util.objId(e),r[t]?r[t]:(i=[],r[t]=i,e.forEach(function(e,t){i[t]=n(e,r)}),i);default:return e}},getLanguage:function(e){for(;e&&!u.test(e.className);)e=e.parentElement;return e?(e.className.match(u)||[,"none"])[1].toLowerCase():"none"},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(e){var t=(/at [^(\r\n]*\((.*):.+:.+\)$/i.exec(e.stack)||[])[1];if(t){var n=document.getElementsByTagName("script");for(var r in n)if(n[r].src==t)return n[r]}return null}}},languages:{extend:function(e,t){var n=F.util.clone(F.languages[e]);for(var r in t)n[r]=t[r];return n},insertBefore:function(n,e,t,r){var i=(r=r||F.languages)[n],a={};for(var o in i)if(i.hasOwnProperty(o)){if(o==e)for(var s in t)t.hasOwnProperty(s)&&(a[s]=t[s]);t.hasOwnProperty(o)||(a[o]=i[o])}var l=r[n];return r[n]=a,F.languages.DFS(F.languages,function(e,t){t===l&&e!=n&&(this[e]=a)}),a},DFS:function e(t,n,r,i){i=i||{};var a=F.util.objId;for(var o in t)if(t.hasOwnProperty(o)){n.call(t,o,t[o],r||o);var s=t[o],l=F.util.type(s);"Object"!==l||i[a(s)]?"Array"!==l||i[a(s)]||(i[a(s)]=!0,e(s,n,o,i)):(i[a(s)]=!0,e(s,n,null,i))}}},plugins:{},highlightAll:function(e,t){F.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,n){var r={callback:n,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};F.hooks.run("before-highlightall",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),F.hooks.run("before-all-elements-highlight",r);for(var i,a=0;i=r.elements[a++];)F.highlightElement(i,!0===t,r.callback)},highlightElement:function(e,t,n){var r=F.util.getLanguage(e),i=F.languages[r];e.className=e.className.replace(u,"").replace(/\s+/g," ")+" language-"+r;var a=e.parentNode;a&&"pre"===a.nodeName.toLowerCase()&&(a.className=a.className.replace(u,"").replace(/\s+/g," ")+" language-"+r);var o={element:e,language:r,grammar:i,code:e.textContent};function s(e){o.highlightedCode=e,F.hooks.run("before-insert",o),o.element.innerHTML=o.highlightedCode,F.hooks.run("after-highlight",o),F.hooks.run("complete",o),n&&n.call(o.element)}if(F.hooks.run("before-sanity-check",o),!o.code)return F.hooks.run("complete",o),void(n&&n.call(o.element));if(F.hooks.run("before-highlight",o),o.grammar)if(t&&c.Worker){var l=new Worker(F.filename);l.onmessage=function(e){s(e.data)},l.postMessage(JSON.stringify({language:o.language,code:o.code,immediateClose:!0}))}else s(F.highlight(o.code,o.grammar,o.language));else s(F.util.encode(o.code))},highlight:function(e,t,n){var r={code:e,grammar:t,language:n};return F.hooks.run("before-tokenize",r),r.tokens=F.tokenize(r.code,r.grammar),F.hooks.run("after-tokenize",r),O.stringify(F.util.encode(r.tokens),r.language)},matchGrammar:function(e,t,n,r,i,a,o){for(var s in n)if(n.hasOwnProperty(s)&&n[s]){var l=n[s];l=Array.isArray(l)?l:[l];for(var c=0;c<l.length;++c){if(o&&o==s+","+c)return;var u=l[c],p=u.inside,d=!!u.lookbehind,h=!!u.greedy,f=0,g=u.alias;if(h&&!u.pattern.global){var m=u.pattern.toString().match(/[imsuy]*$/)[0];u.pattern=RegExp(u.pattern.source,m+"g")}u=u.pattern||u;for(var v=r,y=i;v<t.length;y+=t[v].length,++v){var b=t[v];if(t.length>e.length)return;if(!(b instanceof O)){if(h&&v!=t.length-1){if(u.lastIndex=y,!(S=u.exec(e)))break;for(var k=S.index+(d&&S[1]?S[1].length:0),x=S.index+S[0].length,w=v,_=y,A=t.length;w<A&&(_<x||!t[w].type&&!t[w-1].greedy);++w)(_+=t[w].length)<=k&&(++v,y=_);if(t[v]instanceof O)continue;T=w-v,b=e.slice(y,_),S.index-=y}else{u.lastIndex=0;var S=u.exec(b),T=1}if(S){d&&(f=S[1]?S[1].length:0);x=(k=S.index+f)+(S=S[0].slice(f)).length;var E=b.slice(0,k),L=b.slice(x),C=[v,T];E&&(++v,y+=E.length,C.push(E));var R=new O(s,p?F.tokenize(S,p):S,g,S,h);if(C.push(R),L&&C.push(L),Array.prototype.splice.apply(t,C),1!=T&&F.matchGrammar(e,t,n,v,y,!0,s+","+c),a)break}else if(a)break}}}}},tokenize:function(e,t){var n=[e],r=t.rest;if(r){for(var i in r)t[i]=r[i];delete t.rest}return F.matchGrammar(e,n,t,0,0,!1),n},hooks:{all:{},add:function(e,t){var n=F.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=F.hooks.all[e];if(n&&n.length)for(var r,i=0;r=n[i++];)r(t)}},Token:O};function O(e,t,n,r,i){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!i}if(c.Prism=F,O.stringify=function(e,t){if("string"==typeof e)return e;if(Array.isArray(e))return e.map(function(e){return O.stringify(e,t)}).join("");var n={type:e.type,content:O.stringify(e.content,t),tag:"span",classes:["token",e.type],attributes:{},language:t};if(e.alias){var r=Array.isArray(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(n.classes,r)}F.hooks.run("wrap",n);var i=Object.keys(n.attributes).map(function(e){return e+'="'+(n.attributes[e]||"").replace(/"/g,"&quot;")+'"'}).join(" ");return"<"+n.tag+' class="'+n.classes.join(" ")+'"'+(i?" "+i:"")+">"+n.content+"</"+n.tag+">"},!c.document)return c.addEventListener&&(F.disableWorkerMessageHandler||c.addEventListener("message",function(e){var t=JSON.parse(e.data),n=t.language,r=t.code,i=t.immediateClose;c.postMessage(F.highlight(r,F.languages[n],n)),i&&c.close()},!1)),F;var e=F.util.currentScript();if(e&&(F.filename=e.src,e.hasAttribute("data-manual")&&(F.manual=!0)),!F.manual){function n(){F.manual||F.highlightAll()}var r=document.readyState;"loading"===r||"interactive"===r&&e&&e.defer?document.addEventListener("DOMContentLoaded",n):window.requestAnimationFrame?window.requestAnimationFrame(n):window.setTimeout(n,16)}return F}("undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{});e.exports&&(e.exports=c),void 0!==it&&(it.Prism=c),c.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:(?!<!--)[^"'\]]|"[^"]*"|'[^']*'|<!--[\s\S]*?-->)*\]\s*)?>/i,greedy:!0},cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},c.languages.markup.tag.inside["attr-value"].inside.entity=c.languages.markup.entity,c.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),Object.defineProperty(c.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:c.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:c.languages[t]};var i={};i[e]={pattern:RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g,e),"i"),lookbehind:!0,greedy:!0,inside:r},c.languages.insertBefore("markup","cdata",i)}}),c.languages.xml=c.languages.extend("markup",{}),c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:e.languages.css}},alias:"language-css"}},n.tag))}(c),c.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},c.languages.javascript=c.languages.extend("clike",{"class-name":[c.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,function:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,operator:/--|\+\+|\*\*=?|=>|&&|\|\||[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?[.?]?|[~:]/}),c.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,c.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*[\s\S]*?\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/#?[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/,lookbehind:!0,inside:c.languages.javascript},{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i,inside:c.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/,lookbehind:!0,inside:c.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/,lookbehind:!0,inside:c.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),c.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:c.languages.javascript}},string:/[\s\S]+/}}}),c.languages.markup&&c.languages.markup.tag.addInlined("script","javascript"),c.languages.js=c.languages.javascript,"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(e){e=e||document;var l={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.slice.call(e.querySelectorAll("pre[data-src]")).forEach(function(e){if(!e.hasAttribute("data-src-loaded")){for(var t,n=e.getAttribute("data-src"),r=e,i=/\blang(?:uage)?-([\w-]+)\b/i;r&&!i.test(r.className);)r=r.parentNode;if(r&&(t=(e.className.match(i)||[,""])[1]),!t){var a=(n.match(/\.(\w+)$/)||[,""])[1];t=l[a]||a}var o=document.createElement("code");o.className="language-"+t,e.textContent="",o.textContent="Loading…",e.appendChild(o);var s=new XMLHttpRequest;s.open("GET",n,!0),s.onreadystatechange=function(){4==s.readyState&&(s.status<400&&s.responseText?(o.textContent=s.responseText,c.highlightElement(o),e.setAttribute("data-src-loaded","")):400<=s.status?o.textContent="✖ Error "+s.status+" while fetching file: "+s.statusText:o.textContent="✖ Error: File does not exist or is empty")},s.send(null)}})},document.addEventListener("DOMContentLoaded",function(){self.Prism.fileHighlight()}))});function yt(e,t){return"___"+e.toUpperCase()+t+"___"}mt=Prism,Object.defineProperties(mt.languages["markup-templating"]={},{buildPlaceholders:{value:function(r,i,e,a){if(r.language===i){var o=r.tokenStack=[];r.code=r.code.replace(e,function(e){if("function"==typeof a&&!a(e))return e;for(var t,n=o.length;-1!==r.code.indexOf(t=yt(i,n));)++n;return o[n]=e,t}),r.grammar=mt.languages.markup}}},tokenizePlaceholders:{value:function(h,f){if(h.language===f&&h.tokenStack){h.grammar=mt.languages[f];var g=0,m=Object.keys(h.tokenStack);!function e(t){for(var n=0;n<t.length&&!(g>=m.length);n++){var r=t[n];if("string"==typeof r||r.content&&"string"==typeof r.content){var i=m[g],a=h.tokenStack[i],o="string"==typeof r?r:r.content,s=yt(f,i),l=o.indexOf(s);if(-1<l){++g;var c=o.substring(0,l),u=new mt.Token(f,mt.tokenize(a,h.grammar),"language-"+f,a),p=o.substring(l+s.length),d=[];c&&d.push.apply(d,e([c])),d.push(u),p&&d.push.apply(d,e([p])),"string"==typeof r?t.splice.apply(t,[n,1].concat(d)):r.content=d}}else r.content&&e(r.content)}return t}(h.tokens)}}}});var bt={},kt={markdown:function(e){return{url:e}},mermaid:function(e){return{url:e}},iframe:function(e,t){return{html:'<iframe src="'+e+'" '+(t||"width=100% height=400")+"></iframe>"}},video:function(e,t){return{html:'<video src="'+e+'" '+(t||"controls")+">Not Support</video>"}},audio:function(e,t){return{html:'<audio src="'+e+'" '+(t||"controls")+">Not Support</audio>"}},code:function(e,t){var n=e.match(/\.(\w+)$/);return"md"===(n=t||n&&n[1])&&(n="markdown"),{url:e,lang:n}}},xt=function(i,e){var a=this;this.config=i,this.router=e,this.cacheTree={},this.toc=[],this.cacheTOC={},this.linkTarget=i.externalLinkTarget||"_blank",this.linkRel="_blank"===this.linkTarget?i.externalLinkRel||"noopener":"",this.contentBase=e.getBasePath();var o,t=this._initRenderer();this.heading=t.heading;var n=i.markdown||{};o=r(n)?n(ot,t):(ot.setOptions(h(n,{renderer:h(t,n.renderer)})),ot),this._marked=o,this.compile=function(n){var r=!0,e=s(function(e){r=!1;var t="";return n?(t=c(n)?o(n):o.parser(n),t=i.noEmoji?t:function(e){return e.replace(/:\+1:/g,":thumbsup:").replace(/:-1:/g,":thumbsdown:").replace(/<(pre|template|code)[^>]*?>[\s\S]+?<\/(pre|template|code)>/g,function(e){return e.replace(/:/g,"__colon__")}).replace(/:(\w+?):/gi,window.emojify||ft).replace(/__colon__/g,":")}(t),ht.clear(),t):n})(n),t=a.router.parse().file;return r?a.toc=a.cacheTOC[t]:a.cacheTOC[t]=[].concat(a.toc),e}};xt.prototype.compileEmbed=function(e,t){var n,r=gt(t),i=r.str,a=r.config;if(t=i,a.include){var o;if(Q(e)||(e=re(this.contentBase,ee(this.router.getCurrentPath()),e)),a.type&&(o=kt[a.type]))(n=o.call(this,e,t)).type=a.type;else{var s="code";/\.(md|markdown)/.test(e)?s="markdown":/\.mmd/.test(e)?s="mermaid":/\.html?/.test(e)?s="iframe":/\.(mp4|ogg)/.test(e)?s="video":/\.mp3/.test(e)&&(s="audio"),(n=kt[s].call(this,e,t)).type=s}return n.fragment=a.fragment,n}},xt.prototype._matchNotCompileLink=function(e){for(var t=this.config.noCompileLinks||[],n=0;n<t.length;n++){var r=t[n];if((bt[r]||(bt[r]=new RegExp("^"+r+"$"))).test(e))return e}},xt.prototype._initRenderer=function(){var e=new ot.Renderer,t=this.linkTarget,n=this.linkRel,l=this.router,r=this.contentBase,c=this,i={};return i.heading=e.heading=function(e,t){var n=gt(e),r=n.str,i=n.config,a={level:t,title:r};/{docsify-ignore}/g.test(r)&&(r=r.replace("{docsify-ignore}",""),a.title=r,a.ignoreSubHeading=!0),/{docsify-ignore-all}/g.test(r)&&(r=r.replace("{docsify-ignore-all}",""),a.title=r,a.ignoreAllSubs=!0);var o=ht(i.id||r),s=l.toURL(l.getCurrentPath(),{id:o});return a.slug=s,c.toc.push(a),"<h"+t+' id="'+o+'"><a href="'+s+'" data-id="'+o+'" class="anchor"><span>'+r+"</span></a></h"+t+">"},i.code=function(e){return e.renderer.code=function(e,t){void 0===t&&(t="");var n=vt.languages[t]||vt.languages.markup;return'<pre v-pre data-lang="'+t+'"><code class="lang-'+t+'">'+vt.highlight(e.replace(/@DOCSIFY_QM@/g,"`"),n)+"</code></pre>"}}({renderer:e}),i.link=function(e){var t=e.renderer,s=e.router,l=e.linkTarget,c=e.linkRel,u=e.compilerClass;return t.link=function(e,t,n){void 0===t&&(t="");var r=[],i=gt(t),a=i.str,o=i.config;return l=o.target||l,c="_blank"===l?u.config.externalLinkRel||"noopener":"",t=a,Q(e)||u._matchNotCompileLink(e)||o.ignore?(!Q(e)&&e.startsWith("./")&&(e=document.URL.replace(/\/(?!.*\/).*/,"/").replace("#/./","")+e),r.push(0===e.indexOf("mailto:")?"":'target="'+l+'"'),r.push(0===e.indexOf("mailto:")?"":""!==c?' rel="'+c+'"':"")):(e===u.config.homepage&&(e="README"),e=s.toURL(e,null,s.getCurrentPath())),o.crossorgin&&"_self"===l&&"history"===u.config.routerMode&&-1===u.config.crossOriginLinks.indexOf(e)&&u.config.crossOriginLinks.push(e),o.disabled&&(r.push("disabled"),e="javascript:void(0)"),o.class&&r.push('class="'+o.class+'"'),o.id&&r.push('id="'+o.id+'"'),t&&r.push('title="'+t+'"'),'<a href="'+e+'" '+r.join(" ")+">"+n+"</a>"}}({renderer:e,router:l,linkTarget:t,linkRel:n,compilerClass:c}),i.paragraph=function(e){return e.renderer.paragraph=function(e){return/^!&gt;/.test(e)?lt("tip",e):/^\?&gt;/.test(e)?lt("warn",e):"<p>"+e+"</p>"}}({renderer:e}),i.image=function(e){var t=e.renderer,p=e.contentBase,d=e.router;return t.image=function(e,t,n){var r=e,i=[],a=gt(t),o=a.str,s=a.config;if(t=o,s["no-zoom"]&&i.push("data-no-zoom"),t&&i.push('title="'+t+'"'),s.size){var l=s.size.split("x"),c=l[0],u=l[1];u?i.push('width="'+c+'" height="'+u+'"'):i.push('width="'+c+'"')}return s.class&&i.push('class="'+s.class+'"'),s.id&&i.push('id="'+s.id+'"'),Q(e)||(r=re(p,ee(d.getCurrentPath()),e)),0<i.length?'<img src="'+r+'" data-origin="'+e+'" alt="'+n+'" '+i.join(" ")+" />":'<img src="'+r+'" data-origin="'+e+'" alt="'+n+'"'+i+">"}}({renderer:e,contentBase:r,router:l}),i.list=function(e){return e.renderer.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+" "+[/<li class="task-list-item">/.test(e.split('class="task-list"')[0])?'class="task-list"':"",n&&1<n?'start="'+n+'"':""].join(" ").trim()+">"+e+"</"+r+">"}}({renderer:e}),i.listitem=function(e){return e.renderer.listitem=function(e){return/^(<input.*type="checkbox"[^>]*>)/.test(e)?'<li class="task-list-item"><label>'+e+"</label></li>":"<li>"+e+"</li>"}}({renderer:e}),e.origin=i,e},xt.prototype.sidebar=function(e,t){var n=this.toc,r=this.router.getCurrentPath(),i="";if(e)i=this.compile(e);else{for(var a=0;a<n.length;a++)if(n[a].ignoreSubHeading){var o=n[a].level;n.splice(a,1);for(var s=a;o<n[s].level&&s<n.length;s++)n.splice(s,1)&&s--&&a++;a--}var l=this.cacheTree[r]||ct(n,t);i=st(l,"<ul>{inner}</ul>"),this.cacheTree[r]=l}return i},xt.prototype.subSidebar=function(e){if(e){var t=this.router.getCurrentPath(),n=this.cacheTree,r=this.toc;r[0]&&r[0].ignoreAllSubs&&r.splice(0),r[0]&&1===r[0].level&&r.shift();for(var i=0;i<r.length;i++)r[i].ignoreSubHeading&&r.splice(i,1)&&i--;var a=n[t]||ct(r,e);return n[t]=a,this.toc=[],st(a)}this.toc=[]},xt.prototype.header=function(e,t){return this.heading(e,t)},xt.prototype.article=function(e){return this.compile(e)},xt.prototype.cover=function(e){var t=this.toc.slice(),n=this.compile(e);return this.toc=t.slice(),n};var wt=function(e){var t=function(e){var t=e.match(/^[ \t]*(?=\S)/gm);return t?Math.min.apply(Math,t.map(function(e){return e.length})):0}(e);if(0===t)return e;var n=new RegExp("^[ \\t]{"+t+"}","gm");return e.replace(n,"")},_t={};function At(e,i){var o=e.compiler,a=e.raw;void 0===a&&(a="");var t=e.fetch,n=_t[a];if(n){var r=n.slice();return r.links=n.links,i(r)}var s=o._marked,l=s.lexer(a),c=[],u=s.InlineLexer.rules.link,p=l.links;l.forEach(function(e,a){"paragraph"===e.type&&(e.text=e.text.replace(new RegExp(u.source,"g"),function(e,t,n,r){var i=o.compileEmbed(n,r);return i&&c.push({index:a,embed:i}),e}))});var d=[];!function(e,o){var t,n=e.embedTokens,s=e.compile,l=(e.fetch,0),c=1;if(!n.length)return o({});for(;t=n[l++];){var r=function(a){return function(e){var t;if(e)if("markdown"===a.embed.type){var n=a.embed.url.split("/");n.pop(),n=n.join("/"),e=e.replace(/\[([^[\]]+)\]\(([^)]+)\)/g,function(e){var t=e.indexOf("(");return e.substring(t).startsWith("(.")?e.substring(0,t)+"("+window.location.protocol+"//"+window.location.host+n+"/"+e.substring(t+1,e.length-1)+")":e}),!0===(($docsify.frontMatter||{}).installed||!1)&&(e=$docsify.frontMatter.parseMarkdown(e)),t=s.lexer(e)}else if("code"===a.embed.type){if(a.embed.fragment){var r=a.embed.fragment,i=new RegExp("(?:###|\\/\\/\\/)\\s*\\["+r+"\\]([\\s\\S]*)(?:###|\\/\\/\\/)\\s*\\["+r+"\\]");e=wt((e.match(i)||[])[1]||"").trim()}t=s.lexer("```"+a.embed.lang+"\n"+e.replace(/`/g,"@DOCSIFY_QM@")+"\n```\n")}else"mermaid"===a.embed.type?(t=[{type:"html",text:'<div class="mermaid">\n'+e+"\n</div>"}]).links={}:(t=[{type:"html",text:e}]).links={};o({token:a,embedToken:t}),++c>=l&&o({})}}(t);t.embed.url?I(t.embed.url).then(r):r(t.embed.html)}}({compile:s,embedTokens:c,fetch:t},function(e){var t=e.embedToken,n=e.token;if(n){var r=n.index;d.forEach(function(e){r>e.start&&(r+=e.length)}),h(p,t.links),l=l.slice(0,r).concat(t,l.slice(r+1)),d.push({start:r,length:t.length-1})}else _t[a]=l.concat(),l.links=_t[a].links=p,i(l)})}function St(){var e=b(".markdown-section>script").filter(function(e){return!/template/.test(e.type)})[0];if(!e)return!1;var t=e.innerText.trim();if(!t)return!1;setTimeout(function(e){window.__EXECUTE_RESULT__=new Function(t)()},0)}function Tt(e,t,n){return t="function"==typeof n?n(t):"string"==typeof n?function(r,i){var a=[],o=0;return r.replace(T,function(t,e,n){a.push(r.substring(o,n-1)),o=n+=t.length+1,a.push(i&&i[t]||function(e){return("00"+("string"==typeof E[t]?e[E[t]]():E[t](e))).slice(-t.length)})}),o!==r.length&&a.push(r.substring(o)),function(e){for(var t="",n=0,r=e||new Date;n<a.length;n++)t+="string"==typeof a[n]?a[n]:a[n](r);return t}}(n)(new Date(t)):t,e.replace(/{docsify-updated}/g,t)}function Et(e){e=e||"<h1>404 - Not found</h1>",this._renderTo(".markdown-section",e),this.config.loadSidebar||this._renderSidebar(),!1===this.config.executeScript||void 0===window.Vue||St()?this.config.executeScript&&St():setTimeout(function(e){var t=window.__EXECUTE_RESULT__;t&&t.$destroy&&t.$destroy(),window.__EXECUTE_RESULT__=(new window.Vue).$mount("#main")},0)}function Lt(e){var t=e.config;e.compiler=new xt(t,e.router),window.__current_docsify_compiler__=e.compiler;var n=t.el||"#app",r=y("nav")||g("nav"),i=y(n),a="",o=v;if(i){if(t.repo&&(a+=function(e,t){return e?(/\/\//.test(e)||(e="https://github.com/"+e),'<a href="'+(e=e.replace(/^git\+/,""))+'" target="'+(t=t||"_blank")+'" class="github-corner" aria-label="View source on Github"><svg viewBox="0 0 250 250" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>'):""}(t.repo,t.cornerExternalLinkTarge)),t.coverpage&&(a+=function(){var e=", 100%, 85%";return'<section class="cover show" style="background: '+("linear-gradient(to left bottom, hsl("+Math.floor(255*Math.random())+e+") 0%,hsl("+Math.floor(255*Math.random())+e+") 100%)")+'"><div class="cover-main">\x3c!--cover--\x3e</div><div class="mask"></div></section>'}()),t.logo){var s=/^data:image/.test(t.logo),l=/(?:http[s]?:)?\/\//.test(t.logo),c=/^\./.test(t.logo);s||l||c||(t.logo=re(e.router.getBasePath(),t.logo))}a+=function(e){var t=e.name?e.name:"",n='<button class="sidebar-toggle" aria-label="Menu"><div class="sidebar-toggle-button"><span></span><span></span><span></span></div></button><aside class="sidebar">'+(e.name?'<h1 class="app-name"><a class="app-name-link" data-nosearch>'+(e.logo?'<img alt="'+t+'" src='+e.logo+">":t)+"</a></h1>":"")+'<div class="sidebar-nav">\x3c!--sidebar--\x3e</div></aside>';return(f?n+"<main>":"<main>"+n)+'<section class="content"><article class="markdown-section" id="main">\x3c!--main--\x3e</article></section></main>'}(t),e._renderTo(i,a,!0)}else e.rendered=!0;t.mergeNavbar&&f?o=y(".sidebar"):(r.classList.add("app-nav"),t.repo||r.classList.add("no-badge")),t.loadNavbar&&k(o,r),t.themeColor&&(u.head.appendChild(g("div",function(e){return"<style>:root{--theme-color: "+e+";}</style>"}(t.themeColor)).firstElementChild),function(n){if(!(window.CSS&&window.CSS.supports&&window.CSS.supports("(--v:red)"))){var e=b("style:not(.inserted),link");[].forEach.call(e,function(e){if("STYLE"===e.nodeName)U(e,n);else if("LINK"===e.nodeName){var t=e.getAttribute("href");if(!/\.css$/.test(t))return;I(t).then(function(e){var t=g("style",e);d.appendChild(t),U(t,n)})}})}}(t.themeColor)),e._updateRender(),_(v,"ready")}var Ct={};function Rt(e){this.config=e}function Ft(e){var t=location.href.indexOf("#");location.replace(location.href.slice(0,0<=t?t:0)+"#"+e)}Rt.prototype.getBasePath=function(){return this.config.basePath},Rt.prototype.getFile=function(e,t){void 0===e&&(e=this.getCurrentPath());var n=this.config,r=this.getBasePath(),i="string"==typeof n.ext?n.ext:".md";return e=(e=function(e,t){return new RegExp("\\.("+t.replace(/^\./,"")+"|html)$","g").test(e)?e:/\/$/g.test(e)?e+"README"+t:""+e+t}(e=n.alias?function e(t,n,r){var i=Object.keys(n).filter(function(e){return(Ct[e]||(Ct[e]=new RegExp("^"+e+"$"))).test(t)&&t!==r})[0];return i?e(t.replace(Ct[i],n[i]),n,t):t}(e,n.alias):e,i))==="/README"+i&&n.homepage||e,e=Q(e)?e:re(r,e),t&&(e=e.replace(new RegExp("^"+r),"")),e},Rt.prototype.onchange=function(e){void 0===e&&(e=p),e()},Rt.prototype.getCurrentPath=function(){},Rt.prototype.normalize=function(){},Rt.prototype.parse=function(){},Rt.prototype.toURL=function(e,t,n){var r=n&&"#"===e[0],i=this.parse(ie(e));if(i.query=h({},i.query,t),e=(e=i.path+K(i.query)).replace(/\.md(\?)|\.md$/,"$1"),r){var a=n.indexOf("?");e=(0<a?n.substring(0,a):n)+e}if(this.config.relativePath&&0!==e.indexOf("/")){var o=n.substring(0,n.lastIndexOf("/")+1);return te(ne(o+e))}return te("/"+e)};var Ot=function(r){function e(e){r.call(this,e),this.mode="hash"}return r&&(e.__proto__=r),((e.prototype=Object.create(r&&r.prototype)).constructor=e).prototype.getBasePath=function(){var e=window.location.pathname||"",t=this.config.basePath;return/^(\/|https?:)/g.test(t)?t:te(e+"/"+t)},e.prototype.getCurrentPath=function(){var e=location.href,t=e.indexOf("#");return-1===t?"":e.slice(t+1)},e.prototype.onchange=function(n){void 0===n&&(n=p);var r=!1;x("click",function(e){var t="A"===e.target.tagName?e.target:e.target.parentNode;"A"!==t.tagName||/_blank/.test(t.target)||(r=!0)}),x("hashchange",function(e){var t=r?"navigate":"history";r=!1,n({event:e,source:t})})},e.prototype.normalize=function(){var e=this.getCurrentPath();if("/"===(e=ie(e)).charAt(0))return Ft(e);Ft("/"+e)},e.prototype.parse=function(e){void 0===e&&(e=location.href);var t="",n=e.indexOf("#");0<=n&&(e=e.slice(n+1));var r=e.indexOf("?");return 0<=r&&(t=e.slice(r+1),e=e.slice(0,r)),{path:e,file:this.getFile(e,!0),query:X(t)}},e.prototype.toURL=function(e,t,n){return"#"+r.prototype.toURL.call(this,e,t,n)},e}(Rt),$t=function(t){function e(e){t.call(this,e),this.mode="history"}return t&&(e.__proto__=t),((e.prototype=Object.create(t&&t.prototype)).constructor=e).prototype.getCurrentPath=function(){var e=this.getBasePath(),t=window.location.pathname;return e&&0===t.indexOf(e)&&(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash},e.prototype.onchange=function(r){var i=this;void 0===r&&(r=p),x("click",function(e){var t="A"===e.target.tagName?e.target:e.target.parentNode;if("A"===t.tagName&&!/_blank/.test(t.target)){e.preventDefault();var n=t.href;-1!==i.config.crossOriginLinks.indexOf(n)?window.open(n,"_self"):window.history.pushState({key:n},"",n),r({event:e,source:"navigate"})}}),x("popstate",function(e){r({event:e,source:"history"})})},e.prototype.parse=function(e){void 0===e&&(e=location.href);var t="",n=e.indexOf("?");0<=n&&(t=e.slice(n+1),e=e.slice(0,n));var r=re(location.origin),i=e.indexOf(r);return-1<i&&(e=e.slice(i+r.length)),{path:e,file:this.getFile(e),query:X(t)}},e}(Rt);var Mt={};function Nt(e){e.router.normalize(),e.route=e.router.parse(),v.setAttribute("data-page",e.route.file)}function zt(e){!function(e){function t(e){return v.classList.toggle("close")}null!=(e=m(e))&&(x(e,"click",function(e){e.stopPropagation(),t()}),f&&x(v,"click",function(e){return v.classList.contains("close")&&t()}))}("button.sidebar-toggle",e.router),function(e){null!=(e=m(e))&&x(e,"click",function(e){var t=e.target;"A"===t.nodeName&&t.nextSibling&&t.nextSibling.classList&&t.nextSibling.classList.contains("app-sub-sidebar")&&_(t.parentNode,"collapse")})}(".sidebar",e.router),e.config.coverpage?f||x("scroll",W):v.classList.add("sticky")}function Pt(t,n,r,i,a,e){t=e?t:t.replace(/\/$/,""),(t=ee(t))&&I(a.router.getFile(t+r)+n,!1,a.config.requestHeaders).then(i,function(e){return Pt(t,n,r,i,a)})}var jt=Object.freeze({__proto__:null,cached:s,hyphenate:a,hasOwn:l,merge:h,isPrimitive:c,noop:p,isFn:r,inBrowser:!0,isMobile:f,supportsPushState:i,parseQuery:X,stringifyQuery:K,isAbsolutePath:Q,removeParams:J,getParentPath:ee,cleanPath:te,resolvePath:ne,getPath:re,replaceSlug:ie});function Dt(){this._init()}var Ht,qt,It,Ut=Dt.prototype;function Bt(e,t,n){return It&&It.abort&&It.abort(),It=I(e,!0,n)}Ut._init=function(){var e=this;e.config=S(e),function(n){n._hooks={},n._lifecycle={},["init","mounted","beforeEach","afterEach","doneEach","ready"].forEach(function(e){var t=n._hooks[e]=[];n._lifecycle[e]=function(e){return t.push(e)}})}(e),function(t){[].concat(t.config.plugins).forEach(function(e){return r(e)&&e(t._lifecycle,t)})}(e),B(e,"init"),function(t){var e,n=t.config;e="history"===(n.routerMode||"hash")&&i?new $t(n):new Ot(n),t.router=e,Nt(t),Mt=t.route,e.onchange(function(e){Nt(t),t._updateRender(),Mt.path!==t.route.path?(t.$fetch(p,t.$resetEvents.bind(t,e.source)),Mt=t.route):t.$resetEvents(e.source)})}(e),Lt(e),zt(e),function(t){var e=t.config.loadSidebar;if(t.rendered){var n=G(t.router,".sidebar-nav",!0,!0);e&&n&&(n.parentNode.innerHTML+=window.__SUB_SIDEBAR__),t._bindEventOnRendered(n),t.$resetEvents(),B(t,"doneEach"),B(t,"ready")}else t.$fetch(function(e){return B(t,"ready")})}(e),B(e,"mounted")},Ut.route={},(Ht=Ut)._renderTo=function(e,t,n){var r=m(e);r&&(r[n?"outerHTML":"innerHTML"]=t)},Ht._renderSidebar=function(e){var t=this.config,n=t.maxLevel,r=t.subMaxLevel,i=t.loadSidebar;if(t.hideSidebar)return document.querySelector("aside.sidebar").remove(),document.querySelector("button.sidebar-toggle").remove(),document.querySelector("section.content").style.right="unset",document.querySelector("section.content").style.left="unset",document.querySelector("section.content").style.position="relative",document.querySelector("section.content").style.width="100%",null;this._renderTo(".sidebar-nav",this.compiler.sidebar(e,n));var a=G(this.router,".sidebar-nav",!0,!0);i&&a?a.parentNode.innerHTML+=this.compiler.subSidebar(r)||"":this.compiler.subSidebar(),this._bindEventOnRendered(a)},Ht._bindEventOnRendered=function(e){var t=this.config.autoHeader;if(function(e){var t=y(".cover.show");ge=t?t.offsetHeight:0;var n=m(".sidebar"),r=[];null!=n&&(r=b(n,"li"));for(var i=0,a=r.length;i<a;i+=1){var o=r[i],s=o.querySelector("a");if(s){var l=s.getAttribute("href");if("/"!==l){var c=e.parse(l),u=c.query.id,p=c.path;u&&(l=ve(p,u))}l&&(pe[decodeURIComponent(l)]=o)}}if(!f){var d=J(e.getCurrentPath());w("scroll",function(){return me(d)}),x("scroll",function(){return me(d)}),x(n,"mouseover",function(){de=!0}),x(n,"mouseleave",function(){de=!1})}}(this.router),t&&e){var n=m("#main"),r=n.children[0];r&&"H1"!==r.tagName&&k(n,g("div",this.compiler.header(e.innerText,1)).children[0])}},Ht._renderNav=function(e){e&&this._renderTo("nav",this.compiler.compile(e)),this.config.loadNavbar&&G(this.router,"nav")},Ht._renderMain=function(r,i,a){var o=this;if(void 0===i&&(i={}),!r)return Et.call(this,r);B(this,"beforeEach",r,function(e){function t(){i.updatedAt&&(n=Tt(n,i.updatedAt,o.config.formatUpdated)),B(o,"afterEach",n,function(e){return Et.call(o,e)})}var n;o.isHTML?(n=o.result=r,t(),a()):At({compiler:o.compiler,raw:e},function(e){n=o.compiler.compile(e),n=o.isRemoteUrl?D.sanitize(n):n,t(),a()})})},Ht._renderCover=function(e,t){var n=m(".cover");if(_(m("main"),t?"add":"remove","hidden"),e){_(n,"add","show");var r=this.coverIsHTML?e:this.compiler.cover(e),i=r.trim().match('<p><img.*?data-origin="(.*?)"[^a]+alt="(.*?)">([^<]*?)</p>$');if(i){if("color"===i[2])n.style.background=i[1]+(i[3]||"");else{var a=i[1];_(n,"add","has-mask"),Q(i[1])||(a=re(this.router.getBasePath(),i[1])),n.style.backgroundImage="url("+a+")",n.style.backgroundSize="cover",n.style.backgroundPosition="center center"}r=r.replace(i[0],"")}this._renderTo(".cover-main",r),W()}else _(n,"remove","show")},Ht._updateRender=function(){!function(e){var t=m(".app-name-link"),n=e.config.nameLink,r=e.route.path;if(t)if(c(e.config.nameLink))t.setAttribute("href",n);else if("object"==typeof n){var i=Object.keys(n).filter(function(e){return-1<r.indexOf(e)})[0];t.setAttribute("href",n[i])}}(this)},(qt=Ut)._loadSideAndNav=function(e,t,n,r){var i=this;return function(){if(!n)return r();Pt(e,t,n,function(e){i._renderSidebar(e),r()},i,!0)}},qt._fetch=function(n){var r=this;void 0===n&&(n=p);var e=this.route,i=e.path,a=K(e.query,["id"]),t=this.config,o=t.loadNavbar,s=t.requestHeaders,l=t.loadSidebar,c=this.router.getFile(i),u=Bt(c+a,0,s);this.isRemoteUrl=function(e){var t=e.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);return"string"==typeof t[1]&&0<t[1].length&&t[1].toLowerCase()!==location.protocol||"string"==typeof t[2]&&0<t[2].length&&t[2].replace(new RegExp(":("+{"http:":80,"https:":443}[location.protocol]+")?$"),"")!==location.host}(c),this.isHTML=/\.html$/g.test(c),u.then(function(e,t){return r._renderMain(e,t,r._loadSideAndNav(i,a,l,n))},function(e){r._fetchFallbackPage(c,a,n)||r._fetch404(c,a,n)}),o&&Pt(i,a,o,function(e){return r._renderNav(e)},this,!0)},qt._fetchCover=function(){var t=this,e=this.config,n=e.coverpage,r=e.requestHeaders,i=this.route.query,a=ee(this.route.path);if(n){var o=null,s=this.route.path;if("string"==typeof n)"/"===s&&(o=n);else if(Array.isArray(n))o=-1<n.indexOf(s)&&"_coverpage";else{var l=n[s];o=!0===l?"_coverpage":l}var c=Boolean(o)&&this.config.onlyCover;return o?(o=this.router.getFile(a+o),this.coverIsHTML=/\.html$/g.test(o),I(o+K(i,["id"]),!1,r).then(function(e){return t._renderCover(e,c)})):this._renderCover(null,c),c}},qt.$fetch=function(e,t){var n=this;function r(){B(n,"doneEach"),e()}void 0===e&&(e=p),void 0===t&&(t=this.$resetEvents.bind(this)),this._fetchCover()?r():this._fetch(function(){t(),r()})},qt._fetchFallbackPage=function(n,r,i){var a=this;void 0===i&&(i=p);var e=this.config,t=e.requestHeaders,o=e.fallbackLanguages,s=e.loadSidebar;if(!o)return!1;var l=n.split("/")[1];if(-1===o.indexOf(l))return!1;var c=n.replace(new RegExp("^/"+l),"");return Bt(c+r,0,t).then(function(e,t){return a._renderMain(e,t,a._loadSideAndNav(n,r,s,i))},function(){return a._fetch404(n,r,i)}),!0},qt._fetch404=function(e,t,n){var r=this;void 0===n&&(n=p);var i=this.config,a=i.loadSidebar,o=i.requestHeaders,s=i.notFoundPage,l=this._loadSideAndNav(e,t,a,n);if(s){var c=function(t,e){var n,r,i=e.notFoundPage,a="_404"+(e.ext||".md");switch(typeof i){case"boolean":r=a;break;case"string":r=i;break;case"object":r=(n=Object.keys(i).sort(function(e,t){return t.length-e.length}).find(function(e){return t.match(new RegExp("^"+e))}))&&i[n]||a}return r}(e,this.config);return Bt(this.router.getFile(c),0,o).then(function(e,t){return r._renderMain(e,t,l)},function(){return r._renderMain(null,{},l)}),!0}return this._renderMain(null,{},l),!1},Ut.$resetEvents=function(e){var t=this,n=this.config.auto2top;"history"!==e&&(t.route.query.id&&ye(t.route.path,t.route.query.id),"navigate"===e&&n&&function(e){void 0===e&&(e=0),be.scrollTop=!0===e?0:Number(e)}(n)),this.config.loadNavbar&&G(this.router,"nav")},window.Docsify={util:jt,dom:t,get:I,slugify:ht,version:"4.11.4"},window.DocsifyCompiler=xt,window.marked=ot,window.Prism=vt,e(function(e){return new Dt})}();
diff --git a/docs/assets/js/external-script.min.js b/docs/assets/js/external-script.min.js
new file mode 100644
index 0000000..c4f8026
--- /dev/null
+++ b/docs/assets/js/external-script.min.js
@@ -0,0 +1 @@
+!function(){function e(){for(var o=Docsify.dom.getNode("#main"),e=Docsify.dom.findAll(o,"script"),n=e.length;n--;){var i=e[n];if(i&&i.src){var t=document.createElement("script");Array.prototype.slice.call(i.attributes).forEach(function(o){t[o.name]=o.value}),i.parentNode.insertBefore(t,i),i.parentNode.removeChild(i)}}}window.$docsify.plugins=[].concat(function(o){o.doneEach(e)},window.$docsify.plugins)}();
diff --git a/docs/assets/js/index.min.js b/docs/assets/js/index.min.js
new file mode 100644
index 0000000..4ee3aae
--- /dev/null
+++ b/docs/assets/js/index.min.js
@@ -0,0 +1 @@
+window.$docsify.plugins=[].concat((e,o)=>{let t={siteFont:"PT Sans",defaultTheme:"dark",codeFontFamily:"Roboto Mono, Monaco, courier, monospace",bodyFontSize:"17px",dark:{accent:"#42b983",toogleBackground:"#ffffff",background:"#091a28",textColor:"#b4b4b4",codeTextColor:"#ffffff",codeBackgroudColor:"#0e2233",borderColor:"#0d2538",blockQuoteColour:"#858585",highlightColor:"#d22778",sidebarSublink:"#b4b4b4",codeTypeColor:"#ffffff",coverBackground:"linear-gradient(to left bottom, hsl(118, 100%, 85%) 0%,hsl(181, 100%, 85%) 100%)",toogleImage:"url(https://cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/icons/sun.svg)"},light:{accent:"#42b983",toogleBackground:"#091a28",background:"#ffffff",textColor:"#34495e",codeTextColor:"#525252",codeBackgroudColor:"#f8f8f8",borderColor:"rgba(0, 0, 0, 0.07)",blockQuoteColor:"#858585",highlightColor:"#d22778",sidebarSublink:"#505d6b",codeTypeColor:"#091a28",coverBackground:"linear-gradient(to left bottom, hsl(118, 100%, 85%) 0%,hsl(181, 100%, 85%) 100%)",toogleImage:"url(https://cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/icons/moon.svg)"}};if(o.config.hasOwnProperty("darklightTheme")){for(var[r,l]of Object.entries(o.config.darklightTheme))"light"!==r&&"dark"!==r&&"defaultTheme"!==r&&(t[r]=l);for(var[r,l]of Object.entries(t))"light"!==r&&"dark"!==r&&(t[r]=l,document.documentElement.style.setProperty("--"+r,l));if(o.config.darklightTheme.hasOwnProperty("dark"))for(var[r,l]of Object.entries(o.config.darklightTheme.dark))t.dark[r]=l;if(o.config.darklightTheme.hasOwnProperty("light"))for(var[r,l]of Object.entries(o.config.darklightTheme.light))t.light[r]=l}else for(var[r,l]of Object.entries(t))"light"!==r&&"dark"!==r&&(t[r]=l,document.documentElement.style.setProperty("--"+r,l));window.matchMedia("(prefers-color-scheme: dark)").matches?t.defaultTheme="dark":window.matchMedia("(prefers-color-scheme: light)").matches&&(t.defaultTheme="light");var d=e=>{if(localStorage.setItem("DARK_LIGHT_THEME",e),t.defaultTheme=e,"light"==e)for(var[o,r]of Object.entries(t.light))document.documentElement.style.setProperty("--"+o,r);else if("dark"==e)for(var[o,r]of Object.entries(t.dark))document.documentElement.style.setProperty("--"+o,r)};e.afterEach((function(e,o){o(e=`<div id="docsify-darklight-theme"><p>.</p></div>${e}`)})),e.doneEach((function(){let e=localStorage.getItem("DARK_LIGHT_THEME");"light"==e||"dark"==e?(t.defaultTheme=e,d(t.defaultTheme)):d(t.defaultTheme),document.getElementById("docsify-darklight-theme").addEventListener("click",(function(){"light"===t.defaultTheme?d("dark"):d("light")}))}))},window.$docsify.plugins);
diff --git a/docs/assets/js/mermaid.min.js b/docs/assets/js/mermaid.min.js
new file mode 100644
index 0000000..12659e4
--- /dev/null
+++ b/docs/assets/js/mermaid.min.js
@@ -0,0 +1,26 @@
+!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.mermaid=e():t.mermaid=e()}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=213)}([function(t,e,n){"use strict";n.r(e);var r=function(t,e){return t<e?-1:t>e?1:t>=e?0:NaN},i=function(t){var e;return 1===t.length&&(e=t,t=function(t,n){return r(e(t),n)}),{left:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var a=r+i>>>1;t(e[a],n)<0?r=a+1:i=a}return r},right:function(e,n,r,i){for(null==r&&(r=0),null==i&&(i=e.length);r<i;){var a=r+i>>>1;t(e[a],n)>0?i=a:r=a+1}return r}}};var a=i(r),o=a.right,s=a.left,u=o,c=function(t,e){null==e&&(e=f);for(var n=0,r=t.length-1,i=t[0],a=new Array(r<0?0:r);n<r;)a[n]=e(i,i=t[++n]);return a};function f(t,e){return[t,e]}var l=function(t,e,n){var r,i,a,o,s=t.length,u=e.length,c=new Array(s*u);for(null==n&&(n=f),r=a=0;r<s;++r)for(o=t[r],i=0;i<u;++i,++a)c[a]=n(o,e[i]);return c},h=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},d=function(t){return null===t?NaN:+t},p=function(t,e){var n,r,i=t.length,a=0,o=-1,s=0,u=0;if(null==e)for(;++o<i;)isNaN(n=d(t[o]))||(u+=(r=n-s)*(n-(s+=r/++a)));else for(;++o<i;)isNaN(n=d(e(t[o],o,t)))||(u+=(r=n-s)*(n-(s+=r/++a)));if(a>1)return u/(a-1)},g=function(t,e){var n=p(t,e);return n?Math.sqrt(n):n},y=function(t,e){var n,r,i,a=t.length,o=-1;if(null==e){for(;++o<a;)if(null!=(n=t[o])&&n>=n)for(r=i=n;++o<a;)null!=(n=t[o])&&(r>n&&(r=n),i<n&&(i=n))}else for(;++o<a;)if(null!=(n=e(t[o],o,t))&&n>=n)for(r=i=n;++o<a;)null!=(n=e(t[o],o,t))&&(r>n&&(r=n),i<n&&(i=n));return[r,i]},b=Array.prototype,m=b.slice,v=b.map,_=function(t){return function(){return t}},w=function(t){return t},x=function(t,e,n){t=+t,e=+e,n=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((e-t)/n)),a=new Array(i);++r<i;)a[r]=t+r*n;return a},k=Math.sqrt(50),E=Math.sqrt(10),A=Math.sqrt(2),S=function(t,e,n){var r,i,a,o,s=-1;if(n=+n,(t=+t)===(e=+e)&&n>0)return[t];if((r=e<t)&&(i=t,t=e,e=i),0===(o=M(t,e,n))||!isFinite(o))return[];if(o>0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s<i;)a[s]=(t+s)*o;else for(t=Math.floor(t*o),e=Math.ceil(e*o),a=new Array(i=Math.ceil(t-e+1));++s<i;)a[s]=(t-s)/o;return r&&a.reverse(),a};function M(t,e,n){var r=(e-t)/Math.max(0,n),i=Math.floor(Math.log(r)/Math.LN10),a=r/Math.pow(10,i);return i>=0?(a>=k?10:a>=E?5:a>=A?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=k?10:a>=E?5:a>=A?2:1)}function T(t,e,n){var r=Math.abs(e-t)/Math.max(0,n),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),a=r/i;return a>=k?i*=10:a>=E?i*=5:a>=A&&(i*=2),e<t?-i:i}var D=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1},C=function(){var t=w,e=y,n=D;function r(r){var i,a,o=r.length,s=new Array(o);for(i=0;i<o;++i)s[i]=t(r[i],i,r);var c=e(s),f=c[0],l=c[1],h=n(s,f,l);Array.isArray(h)||(h=T(f,l,h),h=x(Math.ceil(f/h)*h,l,h));for(var d=h.length;h[0]<=f;)h.shift(),--d;for(;h[d-1]>l;)h.pop(),--d;var p,g=new Array(d+1);for(i=0;i<=d;++i)(p=g[i]=[]).x0=i>0?h[i-1]:f,p.x1=i<d?h[i]:l;for(i=0;i<o;++i)f<=(a=s[i])&&a<=l&&g[u(h,a,0,d)].push(r[i]);return g}return r.value=function(e){return arguments.length?(t="function"==typeof e?e:_(e),r):t},r.domain=function(t){return arguments.length?(e="function"==typeof t?t:_([t[0],t[1]]),r):e},r.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?_(m.call(t)):_(t),r):n},r},O=function(t,e,n){if(null==n&&(n=d),r=t.length){if((e=+e)<=0||r<2)return+n(t[0],0,t);if(e>=1)return+n(t[r-1],r-1,t);var r,i=(r-1)*e,a=Math.floor(i),o=+n(t[a],a,t);return o+(+n(t[a+1],a+1,t)-o)*(i-a)}},R=function(t,e,n){return t=v.call(t,d).sort(r),Math.ceil((n-e)/(2*(O(t,.75)-O(t,.25))*Math.pow(t.length,-1/3)))},N=function(t,e,n){return Math.ceil((n-e)/(3.5*g(t)*Math.pow(t.length,-1/3)))},I=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a<i;)if(null!=(n=t[a])&&n>=n)for(r=n;++a<i;)null!=(n=t[a])&&n>r&&(r=n)}else for(;++a<i;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=n;++a<i;)null!=(n=e(t[a],a,t))&&n>r&&(r=n);return r},B=function(t,e){var n,r=t.length,i=r,a=-1,o=0;if(null==e)for(;++a<r;)isNaN(n=d(t[a]))?--i:o+=n;else for(;++a<r;)isNaN(n=d(e(t[a],a,t)))?--i:o+=n;if(i)return o/i},L=function(t,e){var n,i=t.length,a=-1,o=[];if(null==e)for(;++a<i;)isNaN(n=d(t[a]))||o.push(n);else for(;++a<i;)isNaN(n=d(e(t[a],a,t)))||o.push(n);return O(o.sort(r),.5)},P=function(t){for(var e,n,r,i=t.length,a=-1,o=0;++a<i;)o+=t[a].length;for(n=new Array(o);--i>=0;)for(e=(r=t[i]).length;--e>=0;)n[--o]=r[e];return n},F=function(t,e){var n,r,i=t.length,a=-1;if(null==e){for(;++a<i;)if(null!=(n=t[a])&&n>=n)for(r=n;++a<i;)null!=(n=t[a])&&r>n&&(r=n)}else for(;++a<i;)if(null!=(n=e(t[a],a,t))&&n>=n)for(r=n;++a<i;)null!=(n=e(t[a],a,t))&&r>n&&(r=n);return r},q=function(t,e){for(var n=e.length,r=new Array(n);n--;)r[n]=t[e[n]];return r},j=function(t,e){if(n=t.length){var n,i,a=0,o=0,s=t[o];for(null==e&&(e=r);++a<n;)(e(i=t[a],s)<0||0!==e(s,s))&&(s=i,o=a);return 0===e(s,s)?o:void 0}},U=function(t,e,n){for(var r,i,a=(null==n?t.length:n)-(e=null==e?0:+e);a;)i=Math.random()*a--|0,r=t[a+e],t[a+e]=t[i+e],t[i+e]=r;return t},z=function(t,e){var n,r=t.length,i=-1,a=0;if(null==e)for(;++i<r;)(n=+t[i])&&(a+=n);else for(;++i<r;)(n=+e(t[i],i,t))&&(a+=n);return a},Y=function(t){if(!(i=t.length))return[];for(var e=-1,n=F(t,H),r=new Array(n);++e<n;)for(var i,a=-1,o=r[e]=new Array(i);++a<i;)o[a]=t[a][e];return r};function H(t){return t.length}var V=function(){return Y(arguments)},$=Array.prototype.slice,G=function(t){return t},W=1,K=2,X=3,Z=4,J=1e-6;function Q(t){return"translate("+(t+.5)+",0)"}function tt(t){return"translate(0,"+(t+.5)+")"}function et(t){return function(e){return+t(e)}}function nt(t){var e=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(e=Math.round(e)),function(n){return+t(n)+e}}function rt(){return!this.__axis}function it(t,e){var n=[],r=null,i=null,a=6,o=6,s=3,u=t===W||t===Z?-1:1,c=t===Z||t===K?"x":"y",f=t===W||t===X?Q:tt;function l(l){var h=null==r?e.ticks?e.ticks.apply(e,n):e.domain():r,d=null==i?e.tickFormat?e.tickFormat.apply(e,n):G:i,p=Math.max(a,0)+s,g=e.range(),y=+g[0]+.5,b=+g[g.length-1]+.5,m=(e.bandwidth?nt:et)(e.copy()),v=l.selection?l.selection():l,_=v.selectAll(".domain").data([null]),w=v.selectAll(".tick").data(h,e).order(),x=w.exit(),k=w.enter().append("g").attr("class","tick"),E=w.select("line"),A=w.select("text");_=_.merge(_.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(k),E=E.merge(k.append("line").attr("stroke","currentColor").attr(c+"2",u*a)),A=A.merge(k.append("text").attr("fill","currentColor").attr(c,u*p).attr("dy",t===W?"0em":t===X?"0.71em":"0.32em")),l!==v&&(_=_.transition(l),w=w.transition(l),E=E.transition(l),A=A.transition(l),x=x.transition(l).attr("opacity",J).attr("transform",(function(t){return isFinite(t=m(t))?f(t):this.getAttribute("transform")})),k.attr("opacity",J).attr("transform",(function(t){var e=this.parentNode.__axis;return f(e&&isFinite(e=e(t))?e:m(t))}))),x.remove(),_.attr("d",t===Z||t==K?o?"M"+u*o+","+y+"H0.5V"+b+"H"+u*o:"M0.5,"+y+"V"+b:o?"M"+y+","+u*o+"V0.5H"+b+"V"+u*o:"M"+y+",0.5H"+b),w.attr("opacity",1).attr("transform",(function(t){return f(m(t))})),E.attr(c+"2",u*a),A.attr(c,u*p).text(d),v.filter(rt).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===K?"start":t===Z?"end":"middle"),v.each((function(){this.__axis=m}))}return l.scale=function(t){return arguments.length?(e=t,l):e},l.ticks=function(){return n=$.call(arguments),l},l.tickArguments=function(t){return arguments.length?(n=null==t?[]:$.call(t),l):n.slice()},l.tickValues=function(t){return arguments.length?(r=null==t?null:$.call(t),l):r&&r.slice()},l.tickFormat=function(t){return arguments.length?(i=t,l):i},l.tickSize=function(t){return arguments.length?(a=o=+t,l):a},l.tickSizeInner=function(t){return arguments.length?(a=+t,l):a},l.tickSizeOuter=function(t){return arguments.length?(o=+t,l):o},l.tickPadding=function(t){return arguments.length?(s=+t,l):s},l}function at(t){return it(W,t)}function ot(t){return it(K,t)}function st(t){return it(X,t)}function ut(t){return it(Z,t)}var ct={value:function(){}};function ft(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r)throw new Error("illegal type: "+t);r[t]=[]}return new lt(r)}function lt(t){this._=t}function ht(t,e){return t.trim().split(/^|\s+/).map((function(t){var n="",r=t.indexOf(".");if(r>=0&&(n=t.slice(r+1),t=t.slice(0,r)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))}function dt(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function pt(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=ct,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}lt.prototype=ft.prototype={constructor:lt,on:function(t,e){var n,r=this._,i=ht(t+"",r),a=-1,o=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<o;)if(n=(t=i[a]).type)r[n]=pt(r[n],t.name,e);else if(null==e)for(n in r)r[n]=pt(r[n],t.name,null);return this}for(;++a<o;)if((n=(t=i[a]).type)&&(n=dt(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new lt(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),a=0;a<n;++a)i[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(r=this._[t]).length;a<n;++a)r[a].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,a=r.length;i<a;++i)r[i].value.apply(e,n)}};var gt=ft,yt="http://www.w3.org/1999/xhtml",bt={svg:"http://www.w3.org/2000/svg",xhtml:yt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},mt=function(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),bt.hasOwnProperty(e)?{space:bt[e],local:t}:t};function vt(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===yt&&e.documentElement.namespaceURI===yt?e.createElement(t):e.createElementNS(n,t)}}function _t(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}var wt=function(t){var e=mt(t);return(e.local?_t:vt)(e)};function xt(){}var kt=function(t){return null==t?xt:function(){return this.querySelector(t)}};function Et(){return[]}var At=function(t){return null==t?Et:function(){return this.querySelectorAll(t)}},St=function(t){return function(){return this.matches(t)}},Mt=function(t){return new Array(t.length)};function Tt(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}Tt.prototype={constructor:Tt,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var Dt="$";function Ct(t,e,n,r,i,a){for(var o,s=0,u=e.length,c=a.length;s<c;++s)(o=e[s])?(o.__data__=a[s],r[s]=o):n[s]=new Tt(t,a[s]);for(;s<u;++s)(o=e[s])&&(i[s]=o)}function Ot(t,e,n,r,i,a,o){var s,u,c,f={},l=e.length,h=a.length,d=new Array(l);for(s=0;s<l;++s)(u=e[s])&&(d[s]=c=Dt+o.call(u,u.__data__,s,e),c in f?i[s]=u:f[c]=u);for(s=0;s<h;++s)(u=f[c=Dt+o.call(t,a[s],s,a)])?(r[s]=u,u.__data__=a[s],f[c]=null):n[s]=new Tt(t,a[s]);for(s=0;s<l;++s)(u=e[s])&&f[d[s]]===u&&(i[s]=u)}function Rt(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}function Nt(t){return function(){this.removeAttribute(t)}}function It(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Bt(t,e){return function(){this.setAttribute(t,e)}}function Lt(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Pt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Ft(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var qt=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView};function jt(t){return function(){this.style.removeProperty(t)}}function Ut(t,e,n){return function(){this.style.setProperty(t,e,n)}}function zt(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function Yt(t,e){return t.style.getPropertyValue(e)||qt(t).getComputedStyle(t,null).getPropertyValue(e)}function Ht(t){return function(){delete this[t]}}function Vt(t,e){return function(){this[t]=e}}function $t(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Gt(t){return t.trim().split(/^|\s+/)}function Wt(t){return t.classList||new Kt(t)}function Kt(t){this._node=t,this._names=Gt(t.getAttribute("class")||"")}function Xt(t,e){for(var n=Wt(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function Zt(t,e){for(var n=Wt(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function Jt(t){return function(){Xt(this,t)}}function Qt(t){return function(){Zt(this,t)}}function te(t,e){return function(){(e.apply(this,arguments)?Xt:Zt)(this,t)}}Kt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function ee(){this.textContent=""}function ne(t){return function(){this.textContent=t}}function re(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function ie(){this.innerHTML=""}function ae(t){return function(){this.innerHTML=t}}function oe(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function se(){this.nextSibling&&this.parentNode.appendChild(this)}function ue(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function ce(){return null}function fe(){var t=this.parentNode;t&&t.removeChild(this)}function le(){return this.parentNode.insertBefore(this.cloneNode(!1),this.nextSibling)}function he(){return this.parentNode.insertBefore(this.cloneNode(!0),this.nextSibling)}var de={},pe=null;"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(de={mouseenter:"mouseover",mouseleave:"mouseout"}));function ge(t,e,n){return t=ye(t,e,n),function(e){var n=e.relatedTarget;n&&(n===this||8&n.compareDocumentPosition(this))||t.call(this,e)}}function ye(t,e,n){return function(r){var i=pe;pe=r;try{t.call(this,this.__data__,e,n)}finally{pe=i}}}function be(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}function me(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,a=e.length;r<a;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.capture);++i?e.length=i:delete this.__on}}}function ve(t,e,n){var r=de.hasOwnProperty(t.type)?ge:ye;return function(i,a,o){var s,u=this.__on,c=r(e,a,o);if(u)for(var f=0,l=u.length;f<l;++f)if((s=u[f]).type===t.type&&s.name===t.name)return this.removeEventListener(s.type,s.listener,s.capture),this.addEventListener(s.type,s.listener=c,s.capture=n),void(s.value=e);this.addEventListener(t.type,c,n),s={type:t.type,name:t.name,value:e,listener:c,capture:n},u?u.push(s):this.__on=[s]}}function _e(t,e,n,r){var i=pe;t.sourceEvent=pe,pe=t;try{return e.apply(n,r)}finally{pe=i}}function we(t,e,n){var r=qt(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function xe(t,e){return function(){return we(this,t,e)}}function ke(t,e){return function(){return we(this,t,e.apply(this,arguments))}}var Ee=[null];function Ae(t,e){this._groups=t,this._parents=e}function Se(){return new Ae([[document.documentElement]],Ee)}Ae.prototype=Se.prototype={constructor:Ae,select:function(t){"function"!=typeof t&&(t=kt(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o,s=e[i],u=s.length,c=r[i]=new Array(u),f=0;f<u;++f)(a=s[f])&&(o=t.call(a,a.__data__,f,s))&&("__data__"in a&&(o.__data__=a.__data__),c[f]=o);return new Ae(r,this._parents)},selectAll:function(t){"function"!=typeof t&&(t=At(t));for(var e=this._groups,n=e.length,r=[],i=[],a=0;a<n;++a)for(var o,s=e[a],u=s.length,c=0;c<u;++c)(o=s[c])&&(r.push(t.call(o,o.__data__,c,s)),i.push(o));return new Ae(r,i)},filter:function(t){"function"!=typeof t&&(t=St(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,u=r[i]=[],c=0;c<s;++c)(a=o[c])&&t.call(a,a.__data__,c,o)&&u.push(a);return new Ae(r,this._parents)},data:function(t,e){if(!t)return p=new Array(this.size()),f=-1,this.each((function(t){p[++f]=t})),p;var n,r=e?Ot:Ct,i=this._parents,a=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var o=a.length,s=new Array(o),u=new Array(o),c=new Array(o),f=0;f<o;++f){var l=i[f],h=a[f],d=h.length,p=t.call(l,l&&l.__data__,f,i),g=p.length,y=u[f]=new Array(g),b=s[f]=new Array(g);r(l,h,y,b,c[f]=new Array(d),p,e);for(var m,v,_=0,w=0;_<g;++_)if(m=y[_]){for(_>=w&&(w=_+1);!(v=b[w])&&++w<g;);m._next=v||null}}return(s=new Ae(s,i))._enter=u,s._exit=c,s},enter:function(){return new Ae(this._enter||this._groups.map(Mt),this._parents)},exit:function(){return new Ae(this._exit||this._groups.map(Mt),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,a=this.exit();return r="function"==typeof t?t(r):r.append(t+""),null!=e&&(i=e(i)),null==n?a.remove():n(a),r&&i?r.merge(i).order():i},merge:function(t){for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var u,c=e[s],f=n[s],l=c.length,h=o[s]=new Array(l),d=0;d<l;++d)(u=c[d]||f[d])&&(h[d]=u);for(;s<r;++s)o[s]=e[s];return new Ae(o,this._parents)},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],a=i.length-1,o=i[a];--a>=0;)(r=i[a])&&(o&&4^r.compareDocumentPosition(o)&&o.parentNode.insertBefore(r,o),o=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Rt);for(var n=this._groups,r=n.length,i=new Array(r),a=0;a<r;++a){for(var o,s=n[a],u=s.length,c=i[a]=new Array(u),f=0;f<u;++f)(o=s[f])&&(c[f]=o);c.sort(e)}return new Ae(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){var t=new Array(this.size()),e=-1;return this.each((function(){t[++e]=this})),t},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,a=r.length;i<a;++i){var o=r[i];if(o)return o}return null},size:function(){var t=0;return this.each((function(){++t})),t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,a=e[n],o=0,s=a.length;o<s;++o)(i=a[o])&&t.call(i,i.__data__,o,a);return this},attr:function(t,e){var n=mt(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?It:Nt:"function"==typeof e?n.local?Ft:Pt:n.local?Lt:Bt)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?jt:"function"==typeof e?zt:Ut)(t,e,null==n?"":n)):Yt(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Ht:"function"==typeof e?$t:Vt)(t,e)):this.node()[t]},classed:function(t,e){var n=Gt(t+"");if(arguments.length<2){for(var r=Wt(this.node()),i=-1,a=n.length;++i<a;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?te:e?Jt:Qt)(n,e))},text:function(t){return arguments.length?this.each(null==t?ee:("function"==typeof t?re:ne)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?ie:("function"==typeof t?oe:ae)(t)):this.node().innerHTML},raise:function(){return this.each(se)},lower:function(){return this.each(ue)},append:function(t){var e="function"==typeof t?t:wt(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:wt(t),r=null==e?ce:"function"==typeof e?e:kt(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(fe)},clone:function(t){return this.select(t?he:le)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,a=be(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?ve:me,null==n&&(n=!1),r=0;r<o;++r)this.each(s(a[r],e,n));return this}var s=this.node().__on;if(s)for(var u,c=0,f=s.length;c<f;++c)for(r=0,u=s[c];r<o;++r)if((i=a[r]).type===u.type&&i.name===u.name)return u.value},dispatch:function(t,e){return this.each(("function"==typeof e?ke:xe)(t,e))}};var Me=Se,Te=function(t){return"string"==typeof t?new Ae([[document.querySelector(t)]],[document.documentElement]):new Ae([[t]],Ee)},De=function(t){return Te(wt(t).call(document.documentElement))},Ce=0;function Oe(){return new Re}function Re(){this._="@"+(++Ce).toString(36)}Re.prototype=Oe.prototype={constructor:Re,get:function(t){for(var e=this._;!(e in t);)if(!(t=t.parentNode))return;return t[e]},set:function(t,e){return t[this._]=e},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var Ne=function(){for(var t,e=pe;t=e.sourceEvent;)e=t;return e},Ie=function(t,e){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}var i=t.getBoundingClientRect();return[e.clientX-i.left-t.clientLeft,e.clientY-i.top-t.clientTop]},Be=function(t){var e=Ne();return e.changedTouches&&(e=e.changedTouches[0]),Ie(t,e)},Le=function(t){return"string"==typeof t?new Ae([document.querySelectorAll(t)],[document.documentElement]):new Ae([null==t?[]:t],Ee)},Pe=function(t,e,n){arguments.length<3&&(n=e,e=Ne().changedTouches);for(var r,i=0,a=e?e.length:0;i<a;++i)if((r=e[i]).identifier===n)return Ie(t,r);return null},Fe=function(t,e){null==e&&(e=Ne().touches);for(var n=0,r=e?e.length:0,i=new Array(r);n<r;++n)i[n]=Ie(t,e[n]);return i};function qe(){pe.stopImmediatePropagation()}var je=function(){pe.preventDefault(),pe.stopImmediatePropagation()},Ue=function(t){var e=t.document.documentElement,n=Te(t).on("dragstart.drag",je,!0);"onselectstart"in e?n.on("selectstart.drag",je,!0):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")};function ze(t,e){var n=t.document.documentElement,r=Te(t).on("dragstart.drag",null);e&&(r.on("click.drag",je,!0),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var Ye=function(t){return function(){return t}};function He(t,e,n,r,i,a,o,s,u,c){this.target=t,this.type=e,this.subject=n,this.identifier=r,this.active=i,this.x=a,this.y=o,this.dx=s,this.dy=u,this._=c}function Ve(){return!pe.ctrlKey&&!pe.button}function $e(){return this.parentNode}function Ge(t){return null==t?{x:pe.x,y:pe.y}:t}function We(){return navigator.maxTouchPoints||"ontouchstart"in this}He.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Ke=function(){var t,e,n,r,i=Ve,a=$e,o=Ge,s=We,u={},c=gt("start","drag","end"),f=0,l=0;function h(t){t.on("mousedown.drag",d).filter(s).on("touchstart.drag",y).on("touchmove.drag",b).on("touchend.drag touchcancel.drag",m).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(){if(!r&&i.apply(this,arguments)){var o=v("mouse",a.apply(this,arguments),Be,this,arguments);o&&(Te(pe.view).on("mousemove.drag",p,!0).on("mouseup.drag",g,!0),Ue(pe.view),qe(),n=!1,t=pe.clientX,e=pe.clientY,o("start"))}}function p(){if(je(),!n){var r=pe.clientX-t,i=pe.clientY-e;n=r*r+i*i>l}u.mouse("drag")}function g(){Te(pe.view).on("mousemove.drag mouseup.drag",null),ze(pe.view,n),je(),u.mouse("end")}function y(){if(i.apply(this,arguments)){var t,e,n=pe.changedTouches,r=a.apply(this,arguments),o=n.length;for(t=0;t<o;++t)(e=v(n[t].identifier,r,Pe,this,arguments))&&(qe(),e("start"))}}function b(){var t,e,n=pe.changedTouches,r=n.length;for(t=0;t<r;++t)(e=u[n[t].identifier])&&(je(),e("drag"))}function m(){var t,e,n=pe.changedTouches,i=n.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),t=0;t<i;++t)(e=u[n[t].identifier])&&(qe(),e("end"))}function v(t,e,n,r,i){var a,s,l,d=n(e,t),p=c.copy();if(_e(new He(h,"beforestart",a,t,f,d[0],d[1],0,0,p),(function(){return null!=(pe.subject=a=o.apply(r,i))&&(s=a.x-d[0]||0,l=a.y-d[1]||0,!0)})))return function o(c){var g,y=d;switch(c){case"start":u[t]=o,g=f++;break;case"end":delete u[t],--f;case"drag":d=n(e,t),g=f}_e(new He(h,c,a,t,g,d[0]+s,d[1]+l,d[0]-y[0],d[1]-y[1],p),p.apply,p,[c,r,i])}}return h.filter=function(t){return arguments.length?(i="function"==typeof t?t:Ye(!!t),h):i},h.container=function(t){return arguments.length?(a="function"==typeof t?t:Ye(t),h):a},h.subject=function(t){return arguments.length?(o="function"==typeof t?t:Ye(t),h):o},h.touchable=function(t){return arguments.length?(s="function"==typeof t?t:Ye(!!t),h):s},h.on=function(){var t=c.on.apply(c,arguments);return t===c?h:t},h.clickDistance=function(t){return arguments.length?(l=(t=+t)*t,h):Math.sqrt(l)},h},Xe=function(t,e,n){t.prototype=e.prototype=n,n.constructor=t};function Ze(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function Je(){}var Qe="\\s*([+-]?\\d+)\\s*",tn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",en="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",nn=/^#([0-9a-f]{3,8})$/,rn=new RegExp("^rgb\\("+[Qe,Qe,Qe]+"\\)$"),an=new RegExp("^rgb\\("+[en,en,en]+"\\)$"),on=new RegExp("^rgba\\("+[Qe,Qe,Qe,tn]+"\\)$"),sn=new RegExp("^rgba\\("+[en,en,en,tn]+"\\)$"),un=new RegExp("^hsl\\("+[tn,en,en]+"\\)$"),cn=new RegExp("^hsla\\("+[tn,en,en,tn]+"\\)$"),fn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function ln(){return this.rgb().formatHex()}function hn(){return this.rgb().formatRgb()}function dn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=nn.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?pn(e):3===n?new mn(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?new mn(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?new mn(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=rn.exec(t))?new mn(e[1],e[2],e[3],1):(e=an.exec(t))?new mn(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=on.exec(t))?gn(e[1],e[2],e[3],e[4]):(e=sn.exec(t))?gn(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=un.exec(t))?xn(e[1],e[2]/100,e[3]/100,1):(e=cn.exec(t))?xn(e[1],e[2]/100,e[3]/100,e[4]):fn.hasOwnProperty(t)?pn(fn[t]):"transparent"===t?new mn(NaN,NaN,NaN,0):null}function pn(t){return new mn(t>>16&255,t>>8&255,255&t,1)}function gn(t,e,n,r){return r<=0&&(t=e=n=NaN),new mn(t,e,n,r)}function yn(t){return t instanceof Je||(t=dn(t)),t?new mn((t=t.rgb()).r,t.g,t.b,t.opacity):new mn}function bn(t,e,n,r){return 1===arguments.length?yn(t):new mn(t,e,n,null==r?1:r)}function mn(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function vn(){return"#"+wn(this.r)+wn(this.g)+wn(this.b)}function _n(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"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))+(1===t?")":", "+t+")")}function wn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function xn(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new An(t,e,n,r)}function kn(t){if(t instanceof An)return new An(t.h,t.s,t.l,t.opacity);if(t instanceof Je||(t=dn(t)),!t)return new An;if(t instanceof An)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),a=Math.max(e,n,r),o=NaN,s=a-i,u=(a+i)/2;return s?(o=e===a?(n-r)/s+6*(n<r):n===a?(r-e)/s+2:(e-n)/s+4,s/=u<.5?a+i:2-a-i,o*=60):s=u>0&&u<1?0:o,new An(o,s,u,t.opacity)}function En(t,e,n,r){return 1===arguments.length?kn(t):new An(t,e,n,null==r?1:r)}function An(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Sn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Mn(t,e,n,r,i){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*n+(1+3*t+3*a-3*o)*r+o*i)/6}Xe(Je,dn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ln,formatHex:ln,formatHsl:function(){return kn(this).formatHsl()},formatRgb:hn,toString:hn}),Xe(mn,bn,Ze(Je,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new mn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new mn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:vn,formatHex:vn,formatRgb:_n,toString:_n})),Xe(An,En,Ze(Je,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new An(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new An(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new mn(Sn(t>=240?t-240:t+120,i,r),Sn(t,i,r),Sn(t<120?t+240:t-120,i,r),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 t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));var Tn=function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],a=t[r+1],o=r>0?t[r-1]:2*i-a,s=r<e-1?t[r+2]:2*a-i;return Mn((n-r/e)*e,o,i,a,s)}},Dn=function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],a=t[r%e],o=t[(r+1)%e],s=t[(r+2)%e];return Mn((n-r/e)*e,i,a,o,s)}},Cn=function(t){return function(){return t}};function On(t,e){return function(n){return t+n*e}}function Rn(t,e){var n=e-t;return n?On(t,n>180||n<-180?n-360*Math.round(n/360):n):Cn(isNaN(t)?e:t)}function Nn(t){return 1==(t=+t)?In:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Cn(isNaN(e)?n:e)}}function In(t,e){var n=e-t;return n?On(t,n):Cn(isNaN(t)?e:t)}var Bn=function t(e){var n=Nn(e);function r(t,e){var r=n((t=bn(t)).r,(e=bn(e)).r),i=n(t.g,e.g),a=n(t.b,e.b),o=In(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=a(e),t.opacity=o(e),t+""}}return r.gamma=t,r}(1);function Ln(t){return function(e){var n,r,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(n=0;n<i;++n)r=bn(e[n]),a[n]=r.r||0,o[n]=r.g||0,s[n]=r.b||0;return a=t(a),o=t(o),s=t(s),r.opacity=1,function(t){return r.r=a(t),r.g=o(t),r.b=s(t),r+""}}}var Pn=Ln(Tn),Fn=Ln(Dn),qn=function(t,e){var n,r=e?e.length:0,i=t?Math.min(r,t.length):0,a=new Array(i),o=new Array(r);for(n=0;n<i;++n)a[n]=Xn(t[n],e[n]);for(;n<r;++n)o[n]=e[n];return function(t){for(n=0;n<i;++n)o[n]=a[n](t);return o}},jn=function(t,e){var n=new Date;return e-=t=+t,function(r){return n.setTime(t+e*r),n}},Un=function(t,e){return e-=t=+t,function(n){return t+e*n}},zn=function(t,e){var n,r={},i={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?r[n]=Xn(t[n],e[n]):i[n]=e[n];return function(t){for(n in r)i[n]=r[n](t);return i}},Yn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hn=new RegExp(Yn.source,"g");var Vn,$n,Gn,Wn,Kn=function(t,e){var n,r,i,a=Yn.lastIndex=Hn.lastIndex=0,o=-1,s=[],u=[];for(t+="",e+="";(n=Yn.exec(t))&&(r=Hn.exec(e));)(i=r.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,u.push({i:o,x:Un(n,r)})),a=Hn.lastIndex;return a<e.length&&(i=e.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?u[0]?function(t){return function(e){return t(e)+""}}(u[0].x):function(t){return function(){return t}}(e):(e=u.length,function(t){for(var n,r=0;r<e;++r)s[(n=u[r]).i]=n.x(t);return s.join("")})},Xn=function(t,e){var n,r=typeof e;return null==e||"boolean"===r?Cn(e):("number"===r?Un:"string"===r?(n=dn(e))?(e=n,Bn):Kn:e instanceof dn?Bn:e instanceof Date?jn:Array.isArray(e)?qn:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?zn:Un)(t,e)},Zn=function(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}},Jn=function(t,e){var n=Rn(+t,+e);return function(t){var e=n(t);return e-360*Math.floor(e/360)}},Qn=function(t,e){return e-=t=+t,function(n){return Math.round(t+e*n)}},tr=180/Math.PI,er={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},nr=function(t,e,n,r,i,a){var o,s,u;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,u/=s),t*r<e*n&&(t=-t,e=-e,u=-u,o=-o),{translateX:i,translateY:a,rotate:Math.atan2(e,t)*tr,skewX:Math.atan(u)*tr,scaleX:o,scaleY:s}};function rr(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(a,o){var s=[],u=[];return a=t(a),o=t(o),function(t,r,i,a,o,s){if(t!==i||r!==a){var u=o.push("translate(",null,e,null,n);s.push({i:u-4,x:Un(t,i)},{i:u-2,x:Un(r,a)})}else(i||a)&&o.push("translate("+i+e+a+n)}(a.translateX,a.translateY,o.translateX,o.translateY,s,u),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(i(n)+"rotate(",null,r)-2,x:Un(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(a.rotate,o.rotate,s,u),function(t,e,n,a){t!==e?a.push({i:n.push(i(n)+"skewX(",null,r)-2,x:Un(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(a.skewX,o.skewX,s,u),function(t,e,n,r,a,o){if(t!==n||e!==r){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:Un(t,n)},{i:s-2,x:Un(e,r)})}else 1===n&&1===r||a.push(i(a)+"scale("+n+","+r+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,u),a=o=null,function(t){for(var e,n=-1,r=u.length;++n<r;)s[(e=u[n]).i]=e.x(t);return s.join("")}}}var ir=rr((function(t){return"none"===t?er:(Vn||(Vn=document.createElement("DIV"),$n=document.documentElement,Gn=document.defaultView),Vn.style.transform=t,t=Gn.getComputedStyle($n.appendChild(Vn),null).getPropertyValue("transform"),$n.removeChild(Vn),t=t.slice(7,-1).split(","),nr(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}),"px, ","px)","deg)"),ar=rr((function(t){return null==t?er:(Wn||(Wn=document.createElementNS("http://www.w3.org/2000/svg","g")),Wn.setAttribute("transform",t),(t=Wn.transform.baseVal.consolidate())?(t=t.matrix,nr(t.a,t.b,t.c,t.d,t.e,t.f)):er)}),", ",")",")"),or=Math.SQRT2;function sr(t){return((t=Math.exp(t))+1/t)/2}var ur=function(t,e){var n,r,i=t[0],a=t[1],o=t[2],s=e[0],u=e[1],c=e[2],f=s-i,l=u-a,h=f*f+l*l;if(h<1e-12)r=Math.log(c/o)/or,n=function(t){return[i+t*f,a+t*l,o*Math.exp(or*t*r)]};else{var d=Math.sqrt(h),p=(c*c-o*o+4*h)/(2*o*2*d),g=(c*c-o*o-4*h)/(2*c*2*d),y=Math.log(Math.sqrt(p*p+1)-p),b=Math.log(Math.sqrt(g*g+1)-g);r=(b-y)/or,n=function(t){var e,n=t*r,s=sr(y),u=o/(2*d)*(s*(e=or*n+y,((e=Math.exp(2*e))-1)/(e+1))-function(t){return((t=Math.exp(t))-1/t)/2}(y));return[i+u*f,a+u*l,o*s/sr(or*n+y)]}}return n.duration=1e3*r,n};function cr(t){return function(e,n){var r=t((e=En(e)).h,(n=En(n)).h),i=In(e.s,n.s),a=In(e.l,n.l),o=In(e.opacity,n.opacity);return function(t){return e.h=r(t),e.s=i(t),e.l=a(t),e.opacity=o(t),e+""}}}var fr=cr(Rn),lr=cr(In),hr=Math.PI/180,dr=180/Math.PI,pr=.96422,gr=1,yr=.82521,br=4/29,mr=6/29,vr=3*mr*mr,_r=mr*mr*mr;function wr(t){if(t instanceof Er)return new Er(t.l,t.a,t.b,t.opacity);if(t instanceof Rr)return Nr(t);t instanceof mn||(t=yn(t));var e,n,r=Tr(t.r),i=Tr(t.g),a=Tr(t.b),o=Ar((.2225045*r+.7168786*i+.0606169*a)/gr);return r===i&&i===a?e=n=o:(e=Ar((.4360747*r+.3850649*i+.1430804*a)/pr),n=Ar((.0139322*r+.0971045*i+.7141733*a)/yr)),new Er(116*o-16,500*(e-o),200*(o-n),t.opacity)}function xr(t,e){return new Er(t,0,0,null==e?1:e)}function kr(t,e,n,r){return 1===arguments.length?wr(t):new Er(t,e,n,null==r?1:r)}function Er(t,e,n,r){this.l=+t,this.a=+e,this.b=+n,this.opacity=+r}function Ar(t){return t>_r?Math.pow(t,1/3):t/vr+br}function Sr(t){return t>mr?t*t*t:vr*(t-br)}function Mr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Tr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Dr(t){if(t instanceof Rr)return new Rr(t.h,t.c,t.l,t.opacity);if(t instanceof Er||(t=wr(t)),0===t.a&&0===t.b)return new Rr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var e=Math.atan2(t.b,t.a)*dr;return new Rr(e<0?e+360:e,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Cr(t,e,n,r){return 1===arguments.length?Dr(t):new Rr(n,e,t,null==r?1:r)}function Or(t,e,n,r){return 1===arguments.length?Dr(t):new Rr(t,e,n,null==r?1:r)}function Rr(t,e,n,r){this.h=+t,this.c=+e,this.l=+n,this.opacity=+r}function Nr(t){if(isNaN(t.h))return new Er(t.l,0,0,t.opacity);var e=t.h*hr;return new Er(t.l,Math.cos(e)*t.c,Math.sin(e)*t.c,t.opacity)}function Ir(t,e){var n=In((t=kr(t)).l,(e=kr(e)).l),r=In(t.a,e.a),i=In(t.b,e.b),a=In(t.opacity,e.opacity);return function(e){return t.l=n(e),t.a=r(e),t.b=i(e),t.opacity=a(e),t+""}}function Br(t){return function(e,n){var r=t((e=Or(e)).h,(n=Or(n)).h),i=In(e.c,n.c),a=In(e.l,n.l),o=In(e.opacity,n.opacity);return function(t){return e.h=r(t),e.c=i(t),e.l=a(t),e.opacity=o(t),e+""}}}Xe(Er,kr,Ze(Je,{brighter:function(t){return new Er(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Er(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,n=isNaN(this.b)?t:t-this.b/200;return new mn(Mr(3.1338561*(e=pr*Sr(e))-1.6168667*(t=gr*Sr(t))-.4906146*(n=yr*Sr(n))),Mr(-.9787684*e+1.9161415*t+.033454*n),Mr(.0719453*e-.2289914*t+1.4052427*n),this.opacity)}})),Xe(Rr,Or,Ze(Je,{brighter:function(t){return new Rr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new Rr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Nr(this).rgb()}}));var Lr=Br(Rn),Pr=Br(In),Fr=-.29227,qr=-.90649,jr=1.97294,Ur=jr*qr,zr=1.78277*jr,Yr=1.78277*Fr- -.14861*qr;function Hr(t,e,n,r){return 1===arguments.length?function(t){if(t instanceof Vr)return new Vr(t.h,t.s,t.l,t.opacity);t instanceof mn||(t=yn(t));var e=t.r/255,n=t.g/255,r=t.b/255,i=(Yr*r+Ur*e-zr*n)/(Yr+Ur-zr),a=r-i,o=(jr*(n-i)-Fr*a)/qr,s=Math.sqrt(o*o+a*a)/(jr*i*(1-i)),u=s?Math.atan2(o,a)*dr-120:NaN;return new Vr(u<0?u+360:u,s,i,t.opacity)}(t):new Vr(t,e,n,null==r?1:r)}function Vr(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function $r(t){return function e(n){function r(e,r){var i=t((e=Hr(e)).h,(r=Hr(r)).h),a=In(e.s,r.s),o=In(e.l,r.l),s=In(e.opacity,r.opacity);return function(t){return e.h=i(t),e.s=a(t),e.l=o(Math.pow(t,n)),e.opacity=s(t),e+""}}return n=+n,r.gamma=e,r}(1)}Xe(Vr,Hr,Ze(Je,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Vr(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Vr(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*hr,e=+this.l,n=isNaN(this.s)?0:this.s*e*(1-e),r=Math.cos(t),i=Math.sin(t);return new mn(255*(e+n*(-.14861*r+1.78277*i)),255*(e+n*(Fr*r+qr*i)),255*(e+n*(jr*r)),this.opacity)}}));var Gr=$r(Rn),Wr=$r(In);function Kr(t,e){for(var n=0,r=e.length-1,i=e[0],a=new Array(r<0?0:r);n<r;)a[n]=t(i,i=e[++n]);return function(t){var e=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return a[e](t-e)}}var Xr,Zr,Jr=function(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t(r/(e-1));return n},Qr=0,ti=0,ei=0,ni=1e3,ri=0,ii=0,ai=0,oi="object"==typeof performance&&performance.now?performance:Date,si="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function ui(){return ii||(si(ci),ii=oi.now()+ai)}function ci(){ii=0}function fi(){this._call=this._time=this._next=null}function li(t,e,n){var r=new fi;return r.restart(t,e,n),r}function hi(){ui(),++Qr;for(var t,e=Xr;e;)(t=ii-e._time)>=0&&e._call.call(null,t),e=e._next;--Qr}function di(){ii=(ri=oi.now())+ai,Qr=ti=0;try{hi()}finally{Qr=0,function(){var t,e,n=Xr,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Xr=e);Zr=t,gi(r)}(),ii=0}}function pi(){var t=oi.now(),e=t-ri;e>ni&&(ai-=e,ri=t)}function gi(t){Qr||(ti&&(ti=clearTimeout(ti)),t-ii>24?(t<1/0&&(ti=setTimeout(di,t-oi.now()-ai)),ei&&(ei=clearInterval(ei))):(ei||(ri=oi.now(),ei=setInterval(pi,ni)),Qr=1,si(di)))}fi.prototype=li.prototype={constructor:fi,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?ui():+n)+(null==e?0:+e),this._next||Zr===this||(Zr?Zr._next=this:Xr=this,Zr=this),this._call=t,this._time=n,gi()},stop:function(){this._call&&(this._call=null,this._time=1/0,gi())}};var yi=function(t,e,n){var r=new fi;return e=null==e?0:+e,r.restart((function(n){r.stop(),t(n+e)}),e,n),r},bi=function(t,e,n){var r=new fi,i=e;return null==e?(r.restart(t,e,n),r):(e=+e,n=null==n?ui():+n,r.restart((function a(o){o+=i,r.restart(a,i+=e,n),t(o)}),e,n),r)},mi=gt("start","end","cancel","interrupt"),vi=[],_i=0,wi=1,xi=2,ki=3,Ei=4,Ai=5,Si=6,Mi=function(t,e,n,r,i,a){var o=t.__transition;if(o){if(n in o)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function a(u){var c,f,l,h;if(n.state!==wi)return s();for(c in i)if((h=i[c]).name===n.name){if(h.state===ki)return yi(a);h.state===Ei?(h.state=Si,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[c]):+c<e&&(h.state=Si,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[c])}if(yi((function(){n.state===ki&&(n.state=Ei,n.timer.restart(o,n.delay,n.time),o(u))})),n.state=xi,n.on.call("start",t,t.__data__,n.index,n.group),n.state===xi){for(n.state=ki,r=new Array(l=n.tween.length),c=0,f=-1;c<l;++c)(h=n.tween[c].value.call(t,t.__data__,n.index,n.group))&&(r[++f]=h);r.length=f+1}}function o(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(s),n.state=Ai,1),a=-1,o=r.length;++a<o;)r[a].call(t,i);n.state===Ai&&(n.on.call("end",t,t.__data__,n.index,n.group),s())}function s(){for(var r in n.state=Si,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=li((function(t){n.state=wi,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}),0,n.time)}(t,n,{name:e,index:r,group:i,on:mi,tween:vi,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:_i})};function Ti(t,e){var n=Ci(t,e);if(n.state>_i)throw new Error("too late; already scheduled");return n}function Di(t,e){var n=Ci(t,e);if(n.state>ki)throw new Error("too late; already running");return n}function Ci(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}var Oi=function(t,e){var n,r,i,a=t.__transition,o=!0;if(a){for(i in e=null==e?null:e+"",a)(n=a[i]).name===e?(r=n.state>xi&&n.state<Ai,n.state=Si,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[i]):o=!1;o&&delete t.__transition}};function Ri(t,e){var n,r;return function(){var i=Di(this,t),a=i.tween;if(a!==n)for(var o=0,s=(r=n=a).length;o<s;++o)if(r[o].name===e){(r=r.slice()).splice(o,1);break}i.tween=r}}function Ni(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var a=Di(this,t),o=a.tween;if(o!==r){i=(r=o).slice();for(var s={name:e,value:n},u=0,c=i.length;u<c;++u)if(i[u].name===e){i[u]=s;break}u===c&&i.push(s)}a.tween=i}}function Ii(t,e,n){var r=t._id;return t.each((function(){var t=Di(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return Ci(t,r).value[e]}}var Bi=function(t,e){var n;return("number"==typeof e?Un:e instanceof dn?Bn:(n=dn(e))?(e=n,Bn):Kn)(t,e)};function Li(t){return function(){this.removeAttribute(t)}}function Pi(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Fi(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttribute(t);return o===a?null:o===r?i:i=e(r=o,n)}}function qi(t,e,n){var r,i,a=n+"";return function(){var o=this.getAttributeNS(t.space,t.local);return o===a?null:o===r?i:i=e(r=o,n)}}function ji(t,e,n){var r,i,a;return function(){var o,s,u=n(this);if(null!=u)return(o=this.getAttribute(t))===(s=u+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,u));this.removeAttribute(t)}}function Ui(t,e,n){var r,i,a;return function(){var o,s,u=n(this);if(null!=u)return(o=this.getAttributeNS(t.space,t.local))===(s=u+"")?null:o===r&&s===i?a:(i=s,a=e(r=o,u));this.removeAttributeNS(t.space,t.local)}}function zi(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e(n))}}(t,i)),n}return i._value=e,i}function Yi(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttribute(t,e(n))}}(t,i)),n}return i._value=e,i}function Hi(t,e){return function(){Ti(this,t).delay=+e.apply(this,arguments)}}function Vi(t,e){return e=+e,function(){Ti(this,t).delay=e}}function $i(t,e){return function(){Di(this,t).duration=+e.apply(this,arguments)}}function Gi(t,e){return e=+e,function(){Di(this,t).duration=e}}function Wi(t,e){if("function"!=typeof e)throw new Error;return function(){Di(this,t).ease=e}}function Ki(t,e,n){var r,i,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Ti:Di;return function(){var o=a(this,t),s=o.on;s!==r&&(i=(r=s).copy()).on(e,n),o.on=i}}var Xi=Me.prototype.constructor;function Zi(t){return function(){this.style.removeProperty(t)}}function Ji(t,e,n){var r,i;function a(){var a=e.apply(this,arguments);return a!==i&&(r=(i=a)&&function(t,e,n){return function(r){this.style.setProperty(t,e(r),n)}}(t,a,n)),r}return a._value=e,a}var Qi=0;function ta(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function ea(t){return Me().transition(t)}function na(){return++Qi}var ra=Me.prototype;function ia(t){return+t}function aa(t){return t*t}function oa(t){return t*(2-t)}function sa(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function ua(t){return t*t*t}function ca(t){return--t*t*t+1}function fa(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}ta.prototype=ea.prototype={constructor:ta,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=kt(t));for(var r=this._groups,i=r.length,a=new Array(i),o=0;o<i;++o)for(var s,u,c=r[o],f=c.length,l=a[o]=new Array(f),h=0;h<f;++h)(s=c[h])&&(u=t.call(s,s.__data__,h,c))&&("__data__"in s&&(u.__data__=s.__data__),l[h]=u,Mi(l[h],e,n,h,l,Ci(s,n)));return new ta(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=At(t));for(var r=this._groups,i=r.length,a=[],o=[],s=0;s<i;++s)for(var u,c=r[s],f=c.length,l=0;l<f;++l)if(u=c[l]){for(var h,d=t.call(u,u.__data__,l,c),p=Ci(u,n),g=0,y=d.length;g<y;++g)(h=d[g])&&Mi(h,e,n,g,d,p);a.push(d),o.push(u)}return new ta(a,o,e,n)},filter:function(t){"function"!=typeof t&&(t=St(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,o=e[i],s=o.length,u=r[i]=[],c=0;c<s;++c)(a=o[c])&&t.call(a,a.__data__,c,o)&&u.push(a);return new ta(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,a=Math.min(r,i),o=new Array(r),s=0;s<a;++s)for(var u,c=e[s],f=n[s],l=c.length,h=o[s]=new Array(l),d=0;d<l;++d)(u=c[d]||f[d])&&(h[d]=u);for(;s<r;++s)o[s]=e[s];return new ta(o,this._parents,this._name,this._id)},selection:function(){return new Xi(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=na(),r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],u=s.length,c=0;c<u;++c)if(o=s[c]){var f=Ci(o,e);Mi(o,t,n,c,s,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new ta(r,this._parents,t,n)},call:ra.call,nodes:ra.nodes,node:ra.node,size:ra.size,empty:ra.empty,each:ra.each,on:function(t,e){var n=this._id;return arguments.length<2?Ci(this.node(),n).on.on(t):this.each(Ki(n,t,e))},attr:function(t,e){var n=mt(t),r="transform"===n?ar:Bi;return this.attrTween(t,"function"==typeof e?(n.local?Ui:ji)(n,r,Ii(this,"attr."+t,e)):null==e?(n.local?Pi:Li)(n):(n.local?qi:Fi)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=mt(t);return this.tween(n,(r.local?zi:Yi)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?ir:Bi;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var a=Yt(this,t),o=(this.style.removeProperty(t),Yt(this,t));return a===o?null:a===n&&o===r?i:i=e(n=a,r=o)}}(t,r)).on("end.style."+t,Zi(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,a;return function(){var o=Yt(this,t),s=n(this),u=s+"";return null==s&&(this.style.removeProperty(t),u=s=Yt(this,t)),o===u?null:o===r&&u===i?a:(i=u,a=e(r=o,s))}}(t,r,Ii(this,"style."+t,e))).each(function(t,e){var n,r,i,a,o="style."+e,s="end."+o;return function(){var u=Di(this,t),c=u.on,f=null==u.value[o]?a||(a=Zi(e)):void 0;c===n&&i===f||(r=(n=c).copy()).on(s,i=f),u.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,a=n+"";return function(){var o=Yt(this,t);return o===a?null:o===r?i:i=e(r=o,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,Ji(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Ii(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},remove:function(){return this.on("end.remove",(t=this._id,function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}));var t},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=Ci(this.node(),n).tween,a=0,o=i.length;a<o;++a)if((r=i[a]).name===t)return r.value;return null}return this.each((null==e?Ri:Ni)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Hi:Vi)(e,t)):Ci(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?$i:Gi)(e,t)):Ci(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(Wi(e,t)):Ci(this.node(),e).ease},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(a,o){var s={value:o},u={value:function(){0==--i&&a()}};n.each((function(){var n=Di(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(u)),n.on=e}))}))}};var la=function t(e){function n(t){return Math.pow(t,e)}return e=+e,n.exponent=t,n}(3),ha=function t(e){function n(t){return 1-Math.pow(1-t,e)}return e=+e,n.exponent=t,n}(3),da=function t(e){function n(t){return((t*=2)<=1?Math.pow(t,e):2-Math.pow(2-t,e))/2}return e=+e,n.exponent=t,n}(3),pa=Math.PI,ga=pa/2;function ya(t){return 1-Math.cos(t*ga)}function ba(t){return Math.sin(t*ga)}function ma(t){return(1-Math.cos(pa*t))/2}function va(t){return Math.pow(2,10*t-10)}function _a(t){return 1-Math.pow(2,-10*t)}function wa(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function xa(t){return 1-Math.sqrt(1-t*t)}function ka(t){return Math.sqrt(1- --t*t)}function Ea(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var Aa=4/11,Sa=6/11,Ma=8/11,Ta=.75,Da=9/11,Ca=10/11,Oa=.9375,Ra=21/22,Na=63/64,Ia=1/Aa/Aa;function Ba(t){return 1-La(1-t)}function La(t){return(t=+t)<Aa?Ia*t*t:t<Ma?Ia*(t-=Sa)*t+Ta:t<Ca?Ia*(t-=Da)*t+Oa:Ia*(t-=Ra)*t+Na}function Pa(t){return((t*=2)<=1?1-La(1-t):La(t-1)+1)/2}var Fa=function t(e){function n(t){return t*t*((e+1)*t-e)}return e=+e,n.overshoot=t,n}(1.70158),qa=function t(e){function n(t){return--t*t*((e+1)*t+e)+1}return e=+e,n.overshoot=t,n}(1.70158),ja=function t(e){function n(t){return((t*=2)<1?t*t*((e+1)*t-e):(t-=2)*t*((e+1)*t+e)+2)/2}return e=+e,n.overshoot=t,n}(1.70158),Ua=2*Math.PI,za=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Ua);function i(t){return e*Math.pow(2,10*--t)*Math.sin((r-t)/n)}return i.amplitude=function(e){return t(e,n*Ua)},i.period=function(n){return t(e,n)},i}(1,.3),Ya=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Ua);function i(t){return 1-e*Math.pow(2,-10*(t=+t))*Math.sin((t+r)/n)}return i.amplitude=function(e){return t(e,n*Ua)},i.period=function(n){return t(e,n)},i}(1,.3),Ha=function t(e,n){var r=Math.asin(1/(e=Math.max(1,e)))*(n/=Ua);function i(t){return((t=2*t-1)<0?e*Math.pow(2,10*t)*Math.sin((r-t)/n):2-e*Math.pow(2,-10*t)*Math.sin((r+t)/n))/2}return i.amplitude=function(e){return t(e,n*Ua)},i.period=function(n){return t(e,n)},i}(1,.3),Va={time:null,delay:0,duration:250,ease:fa};function $a(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))return Va.time=ui(),Va;return n}Me.prototype.interrupt=function(t){return this.each((function(){Oi(this,t)}))},Me.prototype.transition=function(t){var e,n;t instanceof ta?(e=t._id,t=t._name):(e=na(),(n=Va).time=ui(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,a=0;a<i;++a)for(var o,s=r[a],u=s.length,c=0;c<u;++c)(o=s[c])&&Mi(o,t,e,c,s,n||$a(o,e));return new ta(r,this._parents,t,e)};var Ga=[null],Wa=function(t,e){var n,r,i=t.__transition;if(i)for(r in e=null==e?null:e+"",i)if((n=i[r]).state>wi&&n.name===e)return new ta([[t]],Ga,e,+r);return null},Ka=function(t){return function(){return t}},Xa=function(t,e,n){this.target=t,this.type=e,this.selection=n};function Za(){pe.stopImmediatePropagation()}var Ja=function(){pe.preventDefault(),pe.stopImmediatePropagation()},Qa={name:"drag"},to={name:"space"},eo={name:"handle"},no={name:"center"};function ro(t){return[+t[0],+t[1]]}function io(t){return[ro(t[0]),ro(t[1])]}var ao={name:"x",handles:["w","e"].map(po),input:function(t,e){return null==t?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},oo={name:"y",handles:["n","s"].map(po),input:function(t,e){return null==t?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},so={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(po),input:function(t){return null==t?null:io(t)},output:function(t){return t}},uo={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"},co={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},fo={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},lo={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ho={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function po(t){return{type:t}}function go(){return!pe.ctrlKey&&!pe.button}function yo(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function bo(){return navigator.maxTouchPoints||"ontouchstart"in this}function mo(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function vo(t){var e=t.__brush;return e?e.dim.output(e.selection):null}function _o(){return ko(ao)}function wo(){return ko(oo)}var xo=function(){return ko(so)};function ko(t){var e,n=yo,r=go,i=bo,a=!0,o=gt(u,"start","brush","end"),s=6;function u(e){var n=e.property("__brush",g).selectAll(".overlay").data([po("overlay")]);n.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",uo.overlay).merge(n).each((function(){var t=mo(this).extent;Te(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),e.selectAll(".selection").data([po("selection")]).enter().append("rect").attr("class","selection").attr("cursor",uo.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=e.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return uo[t.type]})),e.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var t=Te(this),e=mo(this).selection;e?(t.selectAll(".selection").style("display",null).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?e[1][0]-s/2:e[0][0]-s/2})).attr("y",(function(t){return"s"===t.type[0]?e[1][1]-s/2:e[0][1]-s/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?e[1][0]-e[0][0]+s:s})).attr("height",(function(t){return"e"===t.type||"w"===t.type?e[1][1]-e[0][1]+s:s}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function f(t,e,n){return!n&&t.__brush.emitter||new l(t,e)}function l(t,e){this.that=t,this.args=e,this.state=t.__brush,this.active=0}function h(){if((!e||pe.touches)&&r.apply(this,arguments)){var n,i,o,s,u,l,h,d,p,g,y,b,m=this,v=pe.target.__data__.type,_="selection"===(a&&pe.metaKey?v="overlay":v)?Qa:a&&pe.altKey?no:eo,w=t===oo?null:lo[v],x=t===ao?null:ho[v],k=mo(m),E=k.extent,A=k.selection,S=E[0][0],M=E[0][1],T=E[1][0],D=E[1][1],C=0,O=0,R=w&&x&&a&&pe.shiftKey,N=pe.touches?(b=pe.changedTouches[0].identifier,function(t){return Pe(t,pe.touches,b)}):Be,I=N(m),B=I,L=f(m,arguments,!0).beforestart();"overlay"===v?(A&&(p=!0),k.selection=A=[[n=t===oo?S:I[0],o=t===ao?M:I[1]],[u=t===oo?T:n,h=t===ao?D:o]]):(n=A[0][0],o=A[0][1],u=A[1][0],h=A[1][1]),i=n,s=o,l=u,d=h;var P=Te(m).attr("pointer-events","none"),F=P.selectAll(".overlay").attr("cursor",uo[v]);if(pe.touches)L.moved=j,L.ended=z;else{var q=Te(pe.view).on("mousemove.brush",j,!0).on("mouseup.brush",z,!0);a&&q.on("keydown.brush",(function(){switch(pe.keyCode){case 16:R=w&&x;break;case 18:_===eo&&(w&&(u=l-C*w,n=i+C*w),x&&(h=d-O*x,o=s+O*x),_=no,U());break;case 32:_!==eo&&_!==no||(w<0?u=l-C:w>0&&(n=i-C),x<0?h=d-O:x>0&&(o=s-O),_=to,F.attr("cursor",uo.selection),U());break;default:return}Ja()}),!0).on("keyup.brush",(function(){switch(pe.keyCode){case 16:R&&(g=y=R=!1,U());break;case 18:_===no&&(w<0?u=l:w>0&&(n=i),x<0?h=d:x>0&&(o=s),_=eo,U());break;case 32:_===to&&(pe.altKey?(w&&(u=l-C*w,n=i+C*w),x&&(h=d-O*x,o=s+O*x),_=no):(w<0?u=l:w>0&&(n=i),x<0?h=d:x>0&&(o=s),_=eo),F.attr("cursor",uo[v]),U());break;default:return}Ja()}),!0),Ue(pe.view)}Za(),Oi(m),c.call(m),L.start()}function j(){var t=N(m);!R||g||y||(Math.abs(t[0]-B[0])>Math.abs(t[1]-B[1])?y=!0:g=!0),B=t,p=!0,Ja(),U()}function U(){var t;switch(C=B[0]-I[0],O=B[1]-I[1],_){case to:case Qa:w&&(C=Math.max(S-n,Math.min(T-u,C)),i=n+C,l=u+C),x&&(O=Math.max(M-o,Math.min(D-h,O)),s=o+O,d=h+O);break;case eo:w<0?(C=Math.max(S-n,Math.min(T-n,C)),i=n+C,l=u):w>0&&(C=Math.max(S-u,Math.min(T-u,C)),i=n,l=u+C),x<0?(O=Math.max(M-o,Math.min(D-o,O)),s=o+O,d=h):x>0&&(O=Math.max(M-h,Math.min(D-h,O)),s=o,d=h+O);break;case no:w&&(i=Math.max(S,Math.min(T,n-C*w)),l=Math.max(S,Math.min(T,u+C*w))),x&&(s=Math.max(M,Math.min(D,o-O*x)),d=Math.max(M,Math.min(D,h+O*x)))}l<i&&(w*=-1,t=n,n=u,u=t,t=i,i=l,l=t,v in co&&F.attr("cursor",uo[v=co[v]])),d<s&&(x*=-1,t=o,o=h,h=t,t=s,s=d,d=t,v in fo&&F.attr("cursor",uo[v=fo[v]])),k.selection&&(A=k.selection),g&&(i=A[0][0],l=A[1][0]),y&&(s=A[0][1],d=A[1][1]),A[0][0]===i&&A[0][1]===s&&A[1][0]===l&&A[1][1]===d||(k.selection=[[i,s],[l,d]],c.call(m),L.brush())}function z(){if(Za(),pe.touches){if(pe.touches.length)return;e&&clearTimeout(e),e=setTimeout((function(){e=null}),500)}else ze(pe.view,p),q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);P.attr("pointer-events","all"),F.attr("cursor",uo.overlay),k.selection&&(A=k.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(A)&&(k.selection=null,c.call(m)),L.end()}}function d(){f(this,arguments).moved()}function p(){f(this,arguments).ended()}function g(){var e=this.__brush||{selection:null};return e.extent=io(n.apply(this,arguments)),e.dim=t,e}return u.move=function(e,n){e.selection?e.on("start.brush",(function(){f(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){f(this,arguments).end()})).tween("brush",(function(){var e=this,r=e.__brush,i=f(e,arguments),a=r.selection,o=t.input("function"==typeof n?n.apply(this,arguments):n,r.extent),s=Xn(a,o);function u(t){r.selection=1===t&&null===o?null:s(t),c.call(e),i.brush()}return null!==a&&null!==o?u:u(1)})):e.each((function(){var e=this,r=arguments,i=e.__brush,a=t.input("function"==typeof n?n.apply(e,r):n,i.extent),o=f(e,r).beforestart();Oi(e),i.selection=null===a?null:a,c.call(e),o.start().brush().end()}))},u.clear=function(t){u.move(t,null)},l.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(e){_e(new Xa(u,e,t.output(this.state.selection)),o.apply,o,[e,this.that,this.args])}},u.extent=function(t){return arguments.length?(n="function"==typeof t?t:Ka(io(t)),u):n},u.filter=function(t){return arguments.length?(r="function"==typeof t?t:Ka(!!t),u):r},u.handleSize=function(t){return arguments.length?(s=+t,u):s},u.keyModifiers=function(t){return arguments.length?(a=!!t,u):a},u.on=function(){var t=o.on.apply(o,arguments);return t===o?u:t},u}var Eo=Math.cos,Ao=Math.sin,So=Math.PI,Mo=So/2,To=2*So,Do=Math.max;function Co(t){return function(e,n){return t(e.source.value+e.target.value,n.source.value+n.target.value)}}var Oo=function(){var t=0,e=null,n=null,r=null;function i(i){var a,o,s,u,c,f,l=i.length,h=[],d=x(l),p=[],g=[],y=g.groups=new Array(l),b=new Array(l*l);for(a=0,c=-1;++c<l;){for(o=0,f=-1;++f<l;)o+=i[c][f];h.push(o),p.push(x(l)),a+=o}for(e&&d.sort((function(t,n){return e(h[t],h[n])})),n&&p.forEach((function(t,e){t.sort((function(t,r){return n(i[e][t],i[e][r])}))})),u=(a=Do(0,To-t*l)/a)?t:To/l,o=0,c=-1;++c<l;){for(s=o,f=-1;++f<l;){var m=d[c],v=p[m][f],_=i[m][v],w=o,k=o+=_*a;b[v*l+m]={index:m,subindex:v,startAngle:w,endAngle:k,value:_}}y[m]={index:m,startAngle:s,endAngle:o,value:h[m]},o+=u}for(c=-1;++c<l;)for(f=c-1;++f<l;){var E=b[f*l+c],A=b[c*l+f];(E.value||A.value)&&g.push(E.value<A.value?{source:A,target:E}:{source:E,target:A})}return r?g.sort(r):g}return i.padAngle=function(e){return arguments.length?(t=Do(0,e),i):t},i.sortGroups=function(t){return arguments.length?(e=t,i):e},i.sortSubgroups=function(t){return arguments.length?(n=t,i):n},i.sortChords=function(t){return arguments.length?(null==t?r=null:(r=Co(t))._=t,i):r&&r._},i},Ro=Array.prototype.slice,No=function(t){return function(){return t}},Io=Math.PI,Bo=2*Io,Lo=Bo-1e-6;function Po(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Fo(){return new Po}Po.prototype=Fo.prototype={constructor:Po,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,n,r){this._+="Q"+ +t+","+ +e+","+(this._x1=+n)+","+(this._y1=+r)},bezierCurveTo:function(t,e,n,r,i,a){this._+="C"+ +t+","+ +e+","+ +n+","+ +r+","+(this._x1=+i)+","+(this._y1=+a)},arcTo:function(t,e,n,r,i){t=+t,e=+e,n=+n,r=+r,i=+i;var a=this._x1,o=this._y1,s=n-t,u=r-e,c=a-t,f=o-e,l=c*c+f*f;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(l>1e-6)if(Math.abs(f*s-u*c)>1e-6&&i){var h=n-a,d=r-o,p=s*s+u*u,g=h*h+d*d,y=Math.sqrt(p),b=Math.sqrt(l),m=i*Math.tan((Io-Math.acos((p+l-g)/(2*y*b)))/2),v=m/b,_=m/y;Math.abs(v-1)>1e-6&&(this._+="L"+(t+v*c)+","+(e+v*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>c*d)+","+(this._x1=t+_*s)+","+(this._y1=e+_*u)}else this._+="L"+(this._x1=t)+","+(this._y1=e);else;},arc:function(t,e,n,r,i,a){t=+t,e=+e,a=!!a;var o=(n=+n)*Math.cos(r),s=n*Math.sin(r),u=t+o,c=e+s,f=1^a,l=a?r-i:i-r;if(n<0)throw new Error("negative radius: "+n);null===this._x1?this._+="M"+u+","+c:(Math.abs(this._x1-u)>1e-6||Math.abs(this._y1-c)>1e-6)&&(this._+="L"+u+","+c),n&&(l<0&&(l=l%Bo+Bo),l>Lo?this._+="A"+n+","+n+",0,1,"+f+","+(t-o)+","+(e-s)+"A"+n+","+n+",0,1,"+f+","+(this._x1=u)+","+(this._y1=c):l>1e-6&&(this._+="A"+n+","+n+",0,"+ +(l>=Io)+","+f+","+(this._x1=t+n*Math.cos(i))+","+(this._y1=e+n*Math.sin(i))))},rect:function(t,e,n,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +n+"v"+ +r+"h"+-n+"Z"},toString:function(){return this._}};var qo=Fo;function jo(t){return t.source}function Uo(t){return t.target}function zo(t){return t.radius}function Yo(t){return t.startAngle}function Ho(t){return t.endAngle}var Vo=function(){var t=jo,e=Uo,n=zo,r=Yo,i=Ho,a=null;function o(){var o,s=Ro.call(arguments),u=t.apply(this,s),c=e.apply(this,s),f=+n.apply(this,(s[0]=u,s)),l=r.apply(this,s)-Mo,h=i.apply(this,s)-Mo,d=f*Eo(l),p=f*Ao(l),g=+n.apply(this,(s[0]=c,s)),y=r.apply(this,s)-Mo,b=i.apply(this,s)-Mo;if(a||(a=o=qo()),a.moveTo(d,p),a.arc(0,0,f,l,h),l===y&&h===b||(a.quadraticCurveTo(0,0,g*Eo(y),g*Ao(y)),a.arc(0,0,g,y,b)),a.quadraticCurveTo(0,0,d,p),a.closePath(),o)return a=null,o+""||null}return o.radius=function(t){return arguments.length?(n="function"==typeof t?t:No(+t),o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:No(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:No(+t),o):i},o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(t){return arguments.length?(e=t,o):e},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o};function $o(){}function Go(t,e){var n=new $o;if(t instanceof $o)t.each((function(t,e){n.set(e,t)}));else if(Array.isArray(t)){var r,i=-1,a=t.length;if(null==e)for(;++i<a;)n.set(i,t[i]);else for(;++i<a;)n.set(e(r=t[i],i,t),r)}else if(t)for(var o in t)n.set(o,t[o]);return n}$o.prototype=Go.prototype={constructor:$o,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,e){return this["$"+t]=e,this},remove:function(t){var e="$"+t;return e in this&&delete this[e]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var e in this)"$"===e[0]&&t.push(e.slice(1));return t},values:function(){var t=[];for(var e in this)"$"===e[0]&&t.push(this[e]);return t},entries:function(){var t=[];for(var e in this)"$"===e[0]&&t.push({key:e.slice(1),value:this[e]});return t},size:function(){var t=0;for(var e in this)"$"===e[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var e in this)"$"===e[0]&&t(this[e],e.slice(1),this)}};var Wo=Go,Ko=function(){var t,e,n,r=[],i=[];function a(n,i,o,s){if(i>=r.length)return null!=t&&n.sort(t),null!=e?e(n):n;for(var u,c,f,l=-1,h=n.length,d=r[i++],p=Wo(),g=o();++l<h;)(f=p.get(u=d(c=n[l])+""))?f.push(c):p.set(u,[c]);return p.each((function(t,e){s(g,e,a(t,i,o,s))})),g}return n={object:function(t){return a(t,0,Xo,Zo)},map:function(t){return a(t,0,Jo,Qo)},entries:function(t){return function t(n,a){if(++a>r.length)return n;var o,s=i[a-1];return null!=e&&a>=r.length?o=n.entries():(o=[],n.each((function(e,n){o.push({key:n,values:t(e,a)})}))),null!=s?o.sort((function(t,e){return s(t.key,e.key)})):o}(a(t,0,Jo,Qo),0)},key:function(t){return r.push(t),n},sortKeys:function(t){return i[r.length-1]=t,n},sortValues:function(e){return t=e,n},rollup:function(t){return e=t,n}}};function Xo(){return{}}function Zo(t,e,n){t[e]=n}function Jo(){return Wo()}function Qo(t,e,n){t.set(e,n)}function ts(){}var es=Wo.prototype;function ns(t,e){var n=new ts;if(t instanceof ts)t.each((function(t){n.add(t)}));else if(t){var r=-1,i=t.length;if(null==e)for(;++r<i;)n.add(t[r]);else for(;++r<i;)n.add(e(t[r],r,t))}return n}ts.prototype=ns.prototype={constructor:ts,has:es.has,add:function(t){return this["$"+(t+="")]=t,this},remove:es.remove,clear:es.clear,values:es.keys,size:es.size,empty:es.empty,each:es.each};var rs=ns,is=function(t){var e=[];for(var n in t)e.push(n);return e},as=function(t){var e=[];for(var n in t)e.push(t[n]);return e},os=function(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e},ss=Array.prototype.slice,us=function(t,e){return t-e},cs=function(t){for(var e=0,n=t.length,r=t[n-1][1]*t[0][0]-t[n-1][0]*t[0][1];++e<n;)r+=t[e-1][1]*t[e][0]-t[e-1][0]*t[e][1];return r},fs=function(t){return function(){return t}},ls=function(t,e){for(var n,r=-1,i=e.length;++r<i;)if(n=hs(t,e[r]))return n;return 0};function hs(t,e){for(var n=e[0],r=e[1],i=-1,a=0,o=t.length,s=o-1;a<o;s=a++){var u=t[a],c=u[0],f=u[1],l=t[s],h=l[0],d=l[1];if(ds(u,l,e))return 0;f>r!=d>r&&n<(h-c)*(r-f)/(d-f)+c&&(i=-i)}return i}function ds(t,e,n){var r,i,a,o;return function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])==(n[0]-t[0])*(e[1]-t[1])}(t,e,n)&&(i=t[r=+(t[0]===e[0])],a=n[r],o=e[r],i<=a&&a<=o||o<=a&&a<=i)}var ps=function(){},gs=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]],ys=function(){var t=1,e=1,n=D,r=s;function i(t){var e=n(t);if(Array.isArray(e))e=e.slice().sort(us);else{var r=y(t),i=r[0],o=r[1];e=T(i,o,e),e=x(Math.floor(i/e)*e,Math.floor(o/e)*e,e)}return e.map((function(e){return a(t,e)}))}function a(n,i){var a=[],s=[];return function(n,r,i){var a,s,u,c,f,l,h=new Array,d=new Array;a=s=-1,c=n[0]>=r,gs[c<<1].forEach(p);for(;++a<t-1;)u=c,c=n[a+1]>=r,gs[u|c<<1].forEach(p);gs[c<<0].forEach(p);for(;++s<e-1;){for(a=-1,c=n[s*t+t]>=r,f=n[s*t]>=r,gs[c<<1|f<<2].forEach(p);++a<t-1;)u=c,c=n[s*t+t+a+1]>=r,l=f,f=n[s*t+a+1]>=r,gs[u|c<<1|f<<2|l<<3].forEach(p);gs[c|f<<3].forEach(p)}a=-1,f=n[s*t]>=r,gs[f<<2].forEach(p);for(;++a<t-1;)l=f,f=n[s*t+a+1]>=r,gs[f<<2|l<<3].forEach(p);function p(t){var e,n,r=[t[0][0]+a,t[0][1]+s],u=[t[1][0]+a,t[1][1]+s],c=o(r),f=o(u);(e=d[c])?(n=h[f])?(delete d[e.end],delete h[n.start],e===n?(e.ring.push(u),i(e.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete d[e.end],e.ring.push(u),d[e.end=f]=e):(e=h[f])?(n=d[c])?(delete h[e.start],delete d[n.end],e===n?(e.ring.push(u),i(e.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete h[e.start],e.ring.unshift(r),h[e.start=c]=e):h[c]=d[f]={start:c,end:f,ring:[r,u]}}gs[f<<3].forEach(p)}(n,i,(function(t){r(t,n,i),cs(t)>0?a.push([t]):s.push(t)})),s.forEach((function(t){for(var e,n=0,r=a.length;n<r;++n)if(-1!==ls((e=a[n])[0],t))return void e.push(t)})),{type:"MultiPolygon",value:i,coordinates:a}}function o(e){return 2*e[0]+e[1]*(t+1)*4}function s(n,r,i){n.forEach((function(n){var a,o=n[0],s=n[1],u=0|o,c=0|s,f=r[c*t+u];o>0&&o<t&&u===o&&(a=r[c*t+u-1],n[0]=o+(i-a)/(f-a)-.5),s>0&&s<e&&c===s&&(a=r[(c-1)*t+u],n[1]=s+(i-a)/(f-a)-.5)}))}return i.contour=a,i.size=function(n){if(!arguments.length)return[t,e];var r=Math.ceil(n[0]),a=Math.ceil(n[1]);if(!(r>0&&a>0))throw new Error("invalid size");return t=r,e=a,i},i.thresholds=function(t){return arguments.length?(n="function"==typeof t?t:Array.isArray(t)?fs(ss.call(t)):fs(t),i):n},i.smooth=function(t){return arguments.length?(r=t?s:ps,i):r===s},i};function bs(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o<i;++o)for(var s=0,u=0;s<r+n;++s)s<r&&(u+=t.data[s+o*r]),s>=n&&(s>=a&&(u-=t.data[s-a+o*r]),e.data[s-n+o*r]=u/Math.min(s+1,r-1+a-s,a))}function ms(t,e,n){for(var r=t.width,i=t.height,a=1+(n<<1),o=0;o<r;++o)for(var s=0,u=0;s<i+n;++s)s<i&&(u+=t.data[o+s*r]),s>=n&&(s>=a&&(u-=t.data[o+(s-a)*r]),e.data[o+(s-n)*r]=u/Math.min(s+1,i-1+a-s,a))}function vs(t){return t[0]}function _s(t){return t[1]}function ws(){return 1}var xs=function(){var t=vs,e=_s,n=ws,r=960,i=500,a=20,o=2,s=3*a,u=r+2*s>>o,c=i+2*s>>o,f=fs(20);function l(r){var i=new Float32Array(u*c),l=new Float32Array(u*c);r.forEach((function(r,a,f){var l=+t(r,a,f)+s>>o,h=+e(r,a,f)+s>>o,d=+n(r,a,f);l>=0&&l<u&&h>=0&&h<c&&(i[l+h*u]+=d)})),bs({width:u,height:c,data:i},{width:u,height:c,data:l},a>>o),ms({width:u,height:c,data:l},{width:u,height:c,data:i},a>>o),bs({width:u,height:c,data:i},{width:u,height:c,data:l},a>>o),ms({width:u,height:c,data:l},{width:u,height:c,data:i},a>>o),bs({width:u,height:c,data:i},{width:u,height:c,data:l},a>>o),ms({width:u,height:c,data:l},{width:u,height:c,data:i},a>>o);var d=f(i);if(!Array.isArray(d)){var p=I(i);d=T(0,p,d),(d=x(0,Math.floor(p/d)*d,d)).shift()}return ys().thresholds(d).size([u,c])(i).map(h)}function h(t){return t.value*=Math.pow(2,-2*o),t.coordinates.forEach(d),t}function d(t){t.forEach(p)}function p(t){t.forEach(g)}function g(t){t[0]=t[0]*Math.pow(2,o)-s,t[1]=t[1]*Math.pow(2,o)-s}function y(){return u=r+2*(s=3*a)>>o,c=i+2*s>>o,l}return l.x=function(e){return arguments.length?(t="function"==typeof e?e:fs(+e),l):t},l.y=function(t){return arguments.length?(e="function"==typeof t?t:fs(+t),l):e},l.weight=function(t){return arguments.length?(n="function"==typeof t?t:fs(+t),l):n},l.size=function(t){if(!arguments.length)return[r,i];var e=Math.ceil(t[0]),n=Math.ceil(t[1]);if(!(e>=0||e>=0))throw new Error("invalid size");return r=e,i=n,y()},l.cellSize=function(t){if(!arguments.length)return 1<<o;if(!((t=+t)>=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(t)/Math.LN2),y()},l.thresholds=function(t){return arguments.length?(f="function"==typeof t?t:Array.isArray(t)?fs(ss.call(t)):fs(t),l):f},l.bandwidth=function(t){if(!arguments.length)return Math.sqrt(a*(a+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return a=Math.round((Math.sqrt(4*t*t+1)-1)/2),y()},l},ks={},Es={},As=34,Ss=10,Ms=13;function Ts(t){return new Function("d","return {"+t.map((function(t,e){return JSON.stringify(t)+": d["+e+"]"})).join(",")+"}")}function Ds(t){var e=Object.create(null),n=[];return t.forEach((function(t){for(var r in t)r in e||n.push(e[r]=r)})),n}function Cs(t,e){var n=t+"",r=n.length;return r<e?new Array(e-r+1).join(0)+n:n}function Os(t){var e,n=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),a=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((e=t.getUTCFullYear())<0?"-"+Cs(-e,6):e>9999?"+"+Cs(e,6):Cs(e,4))+"-"+Cs(t.getUTCMonth()+1,2)+"-"+Cs(t.getUTCDate(),2)+(a?"T"+Cs(n,2)+":"+Cs(r,2)+":"+Cs(i,2)+"."+Cs(a,3)+"Z":i?"T"+Cs(n,2)+":"+Cs(r,2)+":"+Cs(i,2)+"Z":r||n?"T"+Cs(n,2)+":"+Cs(r,2)+"Z":"")}var Rs=function(t){var e=new RegExp('["'+t+"\n\r]"),n=t.charCodeAt(0);function r(t,e){var r,i=[],a=t.length,o=0,s=0,u=a<=0,c=!1;function f(){if(u)return Es;if(c)return c=!1,ks;var e,r,i=o;if(t.charCodeAt(i)===As){for(;o++<a&&t.charCodeAt(o)!==As||t.charCodeAt(++o)===As;);return(e=o)>=a?u=!0:(r=t.charCodeAt(o++))===Ss?c=!0:r===Ms&&(c=!0,t.charCodeAt(o)===Ss&&++o),t.slice(i+1,e-1).replace(/""/g,'"')}for(;o<a;){if((r=t.charCodeAt(e=o++))===Ss)c=!0;else if(r===Ms)c=!0,t.charCodeAt(o)===Ss&&++o;else if(r!==n)continue;return t.slice(i,e)}return u=!0,t.slice(i,a)}for(t.charCodeAt(a-1)===Ss&&--a,t.charCodeAt(a-1)===Ms&&--a;(r=f())!==Es;){for(var l=[];r!==ks&&r!==Es;)l.push(r),r=f();e&&null==(l=e(l,s++))||i.push(l)}return i}function i(e,n){return e.map((function(e){return n.map((function(t){return o(e[t])})).join(t)}))}function a(e){return e.map(o).join(t)}function o(t){return null==t?"":t instanceof Date?Os(t):e.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,e){var n,i,a=r(t,(function(t,r){if(n)return n(t,r-1);i=t,n=e?function(t,e){var n=Ts(t);return function(r,i){return e(n(r),i,t)}}(t,e):Ts(t)}));return a.columns=i||[],a},parseRows:r,format:function(e,n){return null==n&&(n=Ds(e)),[n.map(o).join(t)].concat(i(e,n)).join("\n")},formatBody:function(t,e){return null==e&&(e=Ds(t)),i(t,e).join("\n")},formatRows:function(t){return t.map(a).join("\n")}}},Ns=Rs(","),Is=Ns.parse,Bs=Ns.parseRows,Ls=Ns.format,Ps=Ns.formatBody,Fs=Ns.formatRows,qs=Rs("\t"),js=qs.parse,Us=qs.parseRows,zs=qs.format,Ys=qs.formatBody,Hs=qs.formatRows;function Vs(t){for(var e in t){var n,r=t[e].trim();if(r)if("true"===r)r=!0;else if("false"===r)r=!1;else if("NaN"===r)r=NaN;else if(isNaN(n=+r)){if(!/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/.test(r))continue;r=new Date(r)}else r=n;else r=null;t[e]=r}return t}function $s(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}var Gs=function(t,e){return fetch(t,e).then($s)};function Ws(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}var Ks=function(t,e){return fetch(t,e).then(Ws)};function Xs(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}var Zs=function(t,e){return fetch(t,e).then(Xs)};function Js(t){return function(e,n,r){return 2===arguments.length&&"function"==typeof n&&(r=n,n=void 0),Zs(e,n).then((function(e){return t(e,r)}))}}function Qs(t,e,n,r){3===arguments.length&&"function"==typeof n&&(r=n,n=void 0);var i=Rs(t);return Zs(e,n).then((function(t){return i.parse(t,r)}))}var tu=Js(Is),eu=Js(js),nu=function(t,e){return new Promise((function(n,r){var i=new Image;for(var a in e)i[a]=e[a];i.onerror=r,i.onload=function(){n(i)},i.src=t}))};function ru(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.json()}var iu=function(t,e){return fetch(t,e).then(ru)};function au(t){return function(e,n){return Zs(e,n).then((function(e){return(new DOMParser).parseFromString(e,t)}))}}var ou=au("application/xml"),su=au("text/html"),uu=au("image/svg+xml"),cu=function(t,e){var n;function r(){var r,i,a=n.length,o=0,s=0;for(r=0;r<a;++r)o+=(i=n[r]).x,s+=i.y;for(o=o/a-t,s=s/a-e,r=0;r<a;++r)(i=n[r]).x-=o,i.y-=s}return null==t&&(t=0),null==e&&(e=0),r.initialize=function(t){n=t},r.x=function(e){return arguments.length?(t=+e,r):t},r.y=function(t){return arguments.length?(e=+t,r):e},r},fu=function(t){return function(){return t}},lu=function(){return 1e-6*(Math.random()-.5)};function hu(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,a,o,s,u,c,f,l,h,d=t._root,p={data:r},g=t._x0,y=t._y0,b=t._x1,m=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((c=e>=(a=(g+b)/2))?g=a:b=a,(f=n>=(o=(y+m)/2))?y=o:m=o,i=d,!(d=d[l=f<<1|c]))return i[l]=p,t;if(s=+t._x.call(null,d.data),u=+t._y.call(null,d.data),e===s&&n===u)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(c=e>=(a=(g+b)/2))?g=a:b=a,(f=n>=(o=(y+m)/2))?y=o:m=o}while((l=f<<1|c)==(h=(u>=o)<<1|s>=a));return i[h]=d,i[l]=p,t}var du=function(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i};function pu(t){return t[0]}function gu(t){return t[1]}function yu(t,e,n){var r=new bu(null==e?pu:e,null==n?gu:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function bu(t,e,n,r,i,a){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=a,this._root=void 0}function mu(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}var vu=yu.prototype=bu.prototype;function _u(t){return t.x+t.vx}function wu(t){return t.y+t.vy}vu.copy=function(){var t,e,n=new bu(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=mu(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=mu(e));return n},vu.add=function(t){var e=+this._x.call(null,t),n=+this._y.call(null,t);return hu(this.cover(e,n),e,n,t)},vu.addAll=function(t){var e,n,r,i,a=t.length,o=new Array(a),s=new Array(a),u=1/0,c=1/0,f=-1/0,l=-1/0;for(n=0;n<a;++n)isNaN(r=+this._x.call(null,e=t[n]))||isNaN(i=+this._y.call(null,e))||(o[n]=r,s[n]=i,r<u&&(u=r),r>f&&(f=r),i<c&&(c=i),i>l&&(l=i));if(u>f||c>l)return this;for(this.cover(u,c).cover(f,l),n=0;n<a;++n)hu(this,o[n],s[n],t[n]);return this},vu.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,a=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,a=(r=Math.floor(e))+1;else{for(var o,s,u=i-n,c=this._root;n>t||t>=i||r>e||e>=a;)switch(s=(e<r)<<1|t<n,(o=new Array(4))[s]=c,c=o,u*=2,s){case 0:i=n+u,a=r+u;break;case 1:n=i-u,a=r+u;break;case 2:i=n+u,r=a-u;break;case 3:n=i-u,r=a-u}this._root&&this._root.length&&(this._root=c)}return this._x0=n,this._y0=r,this._x1=i,this._y1=a,this},vu.data=function(){var t=[];return this.visit((function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)})),t},vu.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},vu.find=function(t,e,n){var r,i,a,o,s,u,c,f=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new du(g,f,l,h,d)),null==n?n=1/0:(f=t-n,l=e-n,h=t+n,d=e+n,n*=n);u=p.pop();)if(!(!(g=u.node)||(i=u.x0)>h||(a=u.y0)>d||(o=u.x1)<f||(s=u.y1)<l))if(g.length){var y=(i+o)/2,b=(a+s)/2;p.push(new du(g[3],y,b,o,s),new du(g[2],i,b,y,s),new du(g[1],y,a,o,b),new du(g[0],i,a,y,b)),(c=(e>=b)<<1|t>=y)&&(u=p[p.length-1],p[p.length-1]=p[p.length-1-c],p[p.length-1-c]=u)}else{var m=t-+this._x.call(null,g.data),v=e-+this._y.call(null,g.data),_=m*m+v*v;if(_<n){var w=Math.sqrt(n=_);f=t-w,l=e-w,h=t+w,d=e+w,r=g.data}}return r},vu.remove=function(t){if(isNaN(a=+this._x.call(null,t))||isNaN(o=+this._y.call(null,t)))return this;var e,n,r,i,a,o,s,u,c,f,l,h,d=this._root,p=this._x0,g=this._y0,y=this._x1,b=this._y1;if(!d)return this;if(d.length)for(;;){if((c=a>=(s=(p+y)/2))?p=s:y=s,(f=o>=(u=(g+b)/2))?g=u:b=u,e=d,!(d=d[l=f<<1|c]))return this;if(!d.length)break;(e[l+1&3]||e[l+2&3]||e[l+3&3])&&(n=e,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[l]=i:delete e[l],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[h]=d:this._root=d),this):(this._root=i,this)},vu.removeAll=function(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this},vu.root=function(){return this._root},vu.size=function(){var t=0;return this.visit((function(e){if(!e.length)do{++t}while(e=e.next)})),t},vu.visit=function(t){var e,n,r,i,a,o,s=[],u=this._root;for(u&&s.push(new du(u,this._x0,this._y0,this._x1,this._y1));e=s.pop();)if(!t(u=e.node,r=e.x0,i=e.y0,a=e.x1,o=e.y1)&&u.length){var c=(r+a)/2,f=(i+o)/2;(n=u[3])&&s.push(new du(n,c,f,a,o)),(n=u[2])&&s.push(new du(n,r,f,c,o)),(n=u[1])&&s.push(new du(n,c,i,a,f)),(n=u[0])&&s.push(new du(n,r,i,c,f))}return this},vu.visitAfter=function(t){var e,n=[],r=[];for(this._root&&n.push(new du(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var i=e.node;if(i.length){var a,o=e.x0,s=e.y0,u=e.x1,c=e.y1,f=(o+u)/2,l=(s+c)/2;(a=i[0])&&n.push(new du(a,o,s,f,l)),(a=i[1])&&n.push(new du(a,f,s,u,l)),(a=i[2])&&n.push(new du(a,o,l,f,c)),(a=i[3])&&n.push(new du(a,f,l,u,c))}r.push(e)}for(;e=r.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},vu.x=function(t){return arguments.length?(this._x=t,this):this._x},vu.y=function(t){return arguments.length?(this._y=t,this):this._y};var xu=function(t){var e,n,r=1,i=1;function a(){for(var t,a,s,u,c,f,l,h=e.length,d=0;d<i;++d)for(a=yu(e,_u,wu).visitAfter(o),t=0;t<h;++t)s=e[t],f=n[s.index],l=f*f,u=s.x+s.vx,c=s.y+s.vy,a.visit(p);function p(t,e,n,i,a){var o=t.data,h=t.r,d=f+h;if(!o)return e>u+d||i<u-d||n>c+d||a<c-d;if(o.index>s.index){var p=u-o.x-o.vx,g=c-o.y-o.vy,y=p*p+g*g;y<d*d&&(0===p&&(y+=(p=lu())*p),0===g&&(y+=(g=lu())*g),y=(d-(y=Math.sqrt(y)))/y*r,s.vx+=(p*=y)*(d=(h*=h)/(l+h)),s.vy+=(g*=y)*d,o.vx-=p*(d=1-d),o.vy-=g*d)}}}function o(t){if(t.data)return t.r=n[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function s(){if(e){var r,i,a=e.length;for(n=new Array(a),r=0;r<a;++r)i=e[r],n[i.index]=+t(i,r,e)}}return"function"!=typeof t&&(t=fu(null==t?1:+t)),a.initialize=function(t){e=t,s()},a.iterations=function(t){return arguments.length?(i=+t,a):i},a.strength=function(t){return arguments.length?(r=+t,a):r},a.radius=function(e){return arguments.length?(t="function"==typeof e?e:fu(+e),s(),a):t},a};function ku(t){return t.index}function Eu(t,e){var n=t.get(e);if(!n)throw new Error("missing: "+e);return n}var Au=function(t){var e,n,r,i,a,o=ku,s=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},u=fu(30),c=1;function f(r){for(var i=0,o=t.length;i<c;++i)for(var s,u,f,l,h,d,p,g=0;g<o;++g)u=(s=t[g]).source,l=(f=s.target).x+f.vx-u.x-u.vx||lu(),h=f.y+f.vy-u.y-u.vy||lu(),l*=d=((d=Math.sqrt(l*l+h*h))-n[g])/d*r*e[g],h*=d,f.vx-=l*(p=a[g]),f.vy-=h*p,u.vx+=l*(p=1-p),u.vy+=h*p}function l(){if(r){var s,u,c=r.length,f=t.length,l=Wo(r,o);for(s=0,i=new Array(c);s<f;++s)(u=t[s]).index=s,"object"!=typeof u.source&&(u.source=Eu(l,u.source)),"object"!=typeof u.target&&(u.target=Eu(l,u.target)),i[u.source.index]=(i[u.source.index]||0)+1,i[u.target.index]=(i[u.target.index]||0)+1;for(s=0,a=new Array(f);s<f;++s)u=t[s],a[s]=i[u.source.index]/(i[u.source.index]+i[u.target.index]);e=new Array(f),h(),n=new Array(f),d()}}function h(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+s(t[n],n,t)}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+u(t[e],e,t)}return null==t&&(t=[]),f.initialize=function(t){r=t,l()},f.links=function(e){return arguments.length?(t=e,l(),f):t},f.id=function(t){return arguments.length?(o=t,f):o},f.iterations=function(t){return arguments.length?(c=+t,f):c},f.strength=function(t){return arguments.length?(s="function"==typeof t?t:fu(+t),h(),f):s},f.distance=function(t){return arguments.length?(u="function"==typeof t?t:fu(+t),d(),f):u},f};function Su(t){return t.x}function Mu(t){return t.y}var Tu=10,Du=Math.PI*(3-Math.sqrt(5)),Cu=function(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),a=0,o=.6,s=Wo(),u=li(f),c=gt("tick","end");function f(){l(),c.call("tick",e),n<r&&(u.stop(),c.call("end",e))}function l(r){var u,c,f=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(n+=(a-n)*i,s.each((function(t){t(n)})),u=0;u<f;++u)null==(c=t[u]).fx?c.x+=c.vx*=o:(c.x=c.fx,c.vx=0),null==c.fy?c.y+=c.vy*=o:(c.y=c.fy,c.vy=0);return e}function h(){for(var e,n=0,r=t.length;n<r;++n){if((e=t[n]).index=n,null!=e.fx&&(e.x=e.fx),null!=e.fy&&(e.y=e.fy),isNaN(e.x)||isNaN(e.y)){var i=Tu*Math.sqrt(n),a=n*Du;e.x=i*Math.cos(a),e.y=i*Math.sin(a)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function d(e){return e.initialize&&e.initialize(t),e}return null==t&&(t=[]),h(),e={tick:l,restart:function(){return u.restart(f),e},stop:function(){return u.stop(),e},nodes:function(n){return arguments.length?(t=n,h(),s.each(d),e):t},alpha:function(t){return arguments.length?(n=+t,e):n},alphaMin:function(t){return arguments.length?(r=+t,e):r},alphaDecay:function(t){return arguments.length?(i=+t,e):+i},alphaTarget:function(t){return arguments.length?(a=+t,e):a},velocityDecay:function(t){return arguments.length?(o=1-t,e):1-o},force:function(t,n){return arguments.length>1?(null==n?s.remove(t):s.set(t,d(n)),e):s.get(t)},find:function(e,n,r){var i,a,o,s,u,c=0,f=t.length;for(null==r?r=1/0:r*=r,c=0;c<f;++c)(o=(i=e-(s=t[c]).x)*i+(a=n-s.y)*a)<r&&(u=s,r=o);return u},on:function(t,n){return arguments.length>1?(c.on(t,n),e):c.on(t)}}},Ou=function(){var t,e,n,r,i=fu(-30),a=1,o=1/0,s=.81;function u(r){var i,a=t.length,o=yu(t,Su,Mu).visitAfter(f);for(n=r,i=0;i<a;++i)e=t[i],o.visit(l)}function c(){if(t){var e,n,a=t.length;for(r=new Array(a),e=0;e<a;++e)n=t[e],r[n.index]=+i(n,e,t)}}function f(t){var e,n,i,a,o,s=0,u=0;if(t.length){for(i=a=o=0;o<4;++o)(e=t[o])&&(n=Math.abs(e.value))&&(s+=e.value,u+=n,i+=n*e.x,a+=n*e.y);t.x=i/u,t.y=a/u}else{(e=t).x=e.data.x,e.y=e.data.y;do{s+=r[e.data.index]}while(e=e.next)}t.value=s}function l(t,i,u,c){if(!t.value)return!0;var f=t.x-e.x,l=t.y-e.y,h=c-i,d=f*f+l*l;if(h*h/s<d)return d<o&&(0===f&&(d+=(f=lu())*f),0===l&&(d+=(l=lu())*l),d<a&&(d=Math.sqrt(a*d)),e.vx+=f*t.value*n/d,e.vy+=l*t.value*n/d),!0;if(!(t.length||d>=o)){(t.data!==e||t.next)&&(0===f&&(d+=(f=lu())*f),0===l&&(d+=(l=lu())*l),d<a&&(d=Math.sqrt(a*d)));do{t.data!==e&&(h=r[t.data.index]*n/d,e.vx+=f*h,e.vy+=l*h)}while(t=t.next)}}return u.initialize=function(e){t=e,c()},u.strength=function(t){return arguments.length?(i="function"==typeof t?t:fu(+t),c(),u):i},u.distanceMin=function(t){return arguments.length?(a=t*t,u):Math.sqrt(a)},u.distanceMax=function(t){return arguments.length?(o=t*t,u):Math.sqrt(o)},u.theta=function(t){return arguments.length?(s=t*t,u):Math.sqrt(s)},u},Ru=function(t,e,n){var r,i,a,o=fu(.1);function s(t){for(var o=0,s=r.length;o<s;++o){var u=r[o],c=u.x-e||1e-6,f=u.y-n||1e-6,l=Math.sqrt(c*c+f*f),h=(a[o]-l)*i[o]*t/l;u.vx+=c*h,u.vy+=f*h}}function u(){if(r){var e,n=r.length;for(i=new Array(n),a=new Array(n),e=0;e<n;++e)a[e]=+t(r[e],e,r),i[e]=isNaN(a[e])?0:+o(r[e],e,r)}}return"function"!=typeof t&&(t=fu(+t)),null==e&&(e=0),null==n&&(n=0),s.initialize=function(t){r=t,u()},s.strength=function(t){return arguments.length?(o="function"==typeof t?t:fu(+t),u(),s):o},s.radius=function(e){return arguments.length?(t="function"==typeof e?e:fu(+e),u(),s):t},s.x=function(t){return arguments.length?(e=+t,s):e},s.y=function(t){return arguments.length?(n=+t,s):n},s},Nu=function(t){var e,n,r,i=fu(.1);function a(t){for(var i,a=0,o=e.length;a<o;++a)(i=e[a]).vx+=(r[a]-i.x)*n[a]*t}function o(){if(e){var a,o=e.length;for(n=new Array(o),r=new Array(o),a=0;a<o;++a)n[a]=isNaN(r[a]=+t(e[a],a,e))?0:+i(e[a],a,e)}}return"function"!=typeof t&&(t=fu(null==t?0:+t)),a.initialize=function(t){e=t,o()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:fu(+t),o(),a):i},a.x=function(e){return arguments.length?(t="function"==typeof e?e:fu(+e),o(),a):t},a},Iu=function(t){var e,n,r,i=fu(.1);function a(t){for(var i,a=0,o=e.length;a<o;++a)(i=e[a]).vy+=(r[a]-i.y)*n[a]*t}function o(){if(e){var a,o=e.length;for(n=new Array(o),r=new Array(o),a=0;a<o;++a)n[a]=isNaN(r[a]=+t(e[a],a,e))?0:+i(e[a],a,e)}}return"function"!=typeof t&&(t=fu(null==t?0:+t)),a.initialize=function(t){e=t,o()},a.strength=function(t){return arguments.length?(i="function"==typeof t?t:fu(+t),o(),a):i},a.y=function(e){return arguments.length?(t="function"==typeof e?e:fu(+e),o(),a):t},a},Bu=function(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]},Lu=function(t){return(t=Bu(Math.abs(t)))?t[1]:NaN},Pu=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Fu(t){if(!(e=Pu.exec(t)))throw new Error("invalid format: "+t);var e;return new qu({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function qu(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}Fu.prototype=qu.prototype,qu.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ju,Uu,zu,Yu,Hu=function(t){t:for(var e,n=t.length,r=1,i=-1;r<n;++r)switch(t[r]){case".":i=e=r;break;case"0":0===i&&(i=r),e=r;break;default:if(i>0){if(!+t[r])break t;i=0}}return i>0?t.slice(0,i)+t.slice(e+1):t},Vu=function(t,e){var n=Bu(t,e);if(!n)return t+"";var r=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},$u={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return Vu(100*t,e)},r:Vu,s:function(t,e){var n=Bu(t,e);if(!n)return t+"";var r=n[0],i=n[1],a=i-(ju=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,o=r.length;return a===o?r:a>o?r+new Array(a-o+1).join("0"):a>0?r.slice(0,a)+"."+r.slice(a):"0."+new Array(1-a).join("0")+Bu(t,Math.max(0,e+a-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Gu=function(t){return t},Wu=Array.prototype.map,Ku=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],Xu=function(t){var e,n,r=void 0===t.grouping||void 0===t.thousands?Gu:(e=Wu.call(t.grouping,Number),n=t.thousands+"",function(t,r){for(var i=t.length,a=[],o=0,s=e[0],u=0;i>0&&s>0&&(u+s+1>r&&(s=Math.max(1,r-u)),a.push(t.substring(i-=s,i+s)),!((u+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(n)}),i=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Gu:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(Wu.call(t.numerals,String)),u=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"-":t.minus+"",f=void 0===t.nan?"NaN":t.nan+"";function l(t){var e=(t=Fu(t)).fill,n=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,b=t.trim,m=t.type;"n"===m?(g=!0,m="g"):$u[m]||(void 0===y&&(y=12),b=!0,m="g"),(d||"0"===e&&"="===n)&&(d=!0,e="0",n="=");var v="$"===h?i:"#"===h&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",_="$"===h?a:/[%p]/.test(m)?u:"",w=$u[m],x=/[defgprs%]/.test(m);function k(t){var i,a,u,h=v,k=_;if("c"===m)k=w(t)+k,t="";else{var E=(t=+t)<0;if(t=isNaN(t)?f:w(Math.abs(t),y),b&&(t=Hu(t)),E&&0==+t&&(E=!1),h=(E?"("===l?l:c:"-"===l||"("===l?"":l)+h,k=("s"===m?Ku[8+ju/3]:"")+k+(E&&"("===l?")":""),x)for(i=-1,a=t.length;++i<a;)if(48>(u=t.charCodeAt(i))||u>57){k=(46===u?o+t.slice(i+1):t.slice(i))+k,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var A=h.length+t.length+k.length,S=A<p?new Array(p-A+1).join(e):"";switch(g&&d&&(t=r(S+t,S.length?p-k.length:1/0),S=""),n){case"<":t=h+t+k+S;break;case"=":t=h+S+t+k;break;case"^":t=S.slice(0,A=S.length>>1)+h+t+k+S.slice(A);break;default:t=S+h+t+k}return s(t)}return y=void 0===y?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),k.toString=function(){return t+""},k}return{format:l,formatPrefix:function(t,e){var n=l(((t=Fu(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Lu(e)/3))),i=Math.pow(10,-r),a=Ku[8+r/3];return function(t){return n(i*t)+a}}}};function Zu(t){return Uu=Xu(t),zu=Uu.format,Yu=Uu.formatPrefix,Uu}Zu({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});var Ju=function(t){return Math.max(0,-Lu(Math.abs(t)))},Qu=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Lu(e)/3)))-Lu(Math.abs(t)))},tc=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Lu(e)-Lu(t))+1},ec=function(){return new nc};function nc(){this.reset()}nc.prototype={constructor:nc,reset:function(){this.s=this.t=0},add:function(t){ic(rc,t,this.t),ic(this,rc.s,this.s),this.s?this.t+=rc.t:this.s=rc.t},valueOf:function(){return this.s}};var rc=new nc;function ic(t,e,n){var r=t.s=e+n,i=r-e,a=r-i;t.t=e-a+(n-i)}var ac=1e-6,oc=1e-12,sc=Math.PI,uc=sc/2,cc=sc/4,fc=2*sc,lc=180/sc,hc=sc/180,dc=Math.abs,pc=Math.atan,gc=Math.atan2,yc=Math.cos,bc=Math.ceil,mc=Math.exp,vc=(Math.floor,Math.log),_c=Math.pow,wc=Math.sin,xc=Math.sign||function(t){return t>0?1:t<0?-1:0},kc=Math.sqrt,Ec=Math.tan;function Ac(t){return t>1?0:t<-1?sc:Math.acos(t)}function Sc(t){return t>1?uc:t<-1?-uc:Math.asin(t)}function Mc(t){return(t=wc(t/2))*t}function Tc(){}function Dc(t,e){t&&Oc.hasOwnProperty(t.type)&&Oc[t.type](t,e)}var Cc={Feature:function(t,e){Dc(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)Dc(n[r].geometry,e)}},Oc={Sphere:function(t,e){e.sphere()},Point:function(t,e){t=t.coordinates,e.point(t[0],t[1],t[2])},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)t=n[r],e.point(t[0],t[1],t[2])},LineString:function(t,e){Rc(t.coordinates,e,0)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)Rc(n[r],e,0)},Polygon:function(t,e){Nc(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)Nc(n[r],e)},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)Dc(n[r],e)}};function Rc(t,e,n){var r,i=-1,a=t.length-n;for(e.lineStart();++i<a;)r=t[i],e.point(r[0],r[1],r[2]);e.lineEnd()}function Nc(t,e){var n=-1,r=t.length;for(e.polygonStart();++n<r;)Rc(t[n],e,1);e.polygonEnd()}var Ic,Bc,Lc,Pc,Fc,qc=function(t,e){t&&Cc.hasOwnProperty(t.type)?Cc[t.type](t,e):Dc(t,e)},jc=ec(),Uc=ec(),zc={point:Tc,lineStart:Tc,lineEnd:Tc,polygonStart:function(){jc.reset(),zc.lineStart=Yc,zc.lineEnd=Hc},polygonEnd:function(){var t=+jc;Uc.add(t<0?fc+t:t),this.lineStart=this.lineEnd=this.point=Tc},sphere:function(){Uc.add(fc)}};function Yc(){zc.point=Vc}function Hc(){$c(Ic,Bc)}function Vc(t,e){zc.point=$c,Ic=t,Bc=e,Lc=t*=hc,Pc=yc(e=(e*=hc)/2+cc),Fc=wc(e)}function $c(t,e){var n=(t*=hc)-Lc,r=n>=0?1:-1,i=r*n,a=yc(e=(e*=hc)/2+cc),o=wc(e),s=Fc*o,u=Pc*a+s*yc(i),c=s*r*wc(i);jc.add(gc(c,u)),Lc=t,Pc=a,Fc=o}var Gc=function(t){return Uc.reset(),qc(t,zc),2*Uc};function Wc(t){return[gc(t[1],t[0]),Sc(t[2])]}function Kc(t){var e=t[0],n=t[1],r=yc(n);return[r*yc(e),r*wc(e),wc(n)]}function Xc(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Zc(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function Jc(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Qc(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function tf(t){var e=kc(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var ef,nf,rf,af,of,sf,uf,cf,ff,lf,hf=ec(),df={point:pf,lineStart:yf,lineEnd:bf,polygonStart:function(){df.point=mf,df.lineStart=vf,df.lineEnd=_f,hf.reset(),zc.polygonStart()},polygonEnd:function(){zc.polygonEnd(),df.point=pf,df.lineStart=yf,df.lineEnd=bf,jc<0?(ef=-(rf=180),nf=-(af=90)):hf>ac?af=90:hf<-ac&&(nf=-90),lf[0]=ef,lf[1]=rf},sphere:function(){ef=-(rf=180),nf=-(af=90)}};function pf(t,e){ff.push(lf=[ef=t,rf=t]),e<nf&&(nf=e),e>af&&(af=e)}function gf(t,e){var n=Kc([t*hc,e*hc]);if(cf){var r=Zc(cf,n),i=Zc([r[1],-r[0],0],r);tf(i),i=Wc(i);var a,o=t-of,s=o>0?1:-1,u=i[0]*lc*s,c=dc(o)>180;c^(s*of<u&&u<s*t)?(a=i[1]*lc)>af&&(af=a):c^(s*of<(u=(u+360)%360-180)&&u<s*t)?(a=-i[1]*lc)<nf&&(nf=a):(e<nf&&(nf=e),e>af&&(af=e)),c?t<of?wf(ef,t)>wf(ef,rf)&&(rf=t):wf(t,rf)>wf(ef,rf)&&(ef=t):rf>=ef?(t<ef&&(ef=t),t>rf&&(rf=t)):t>of?wf(ef,t)>wf(ef,rf)&&(rf=t):wf(t,rf)>wf(ef,rf)&&(ef=t)}else ff.push(lf=[ef=t,rf=t]);e<nf&&(nf=e),e>af&&(af=e),cf=n,of=t}function yf(){df.point=gf}function bf(){lf[0]=ef,lf[1]=rf,df.point=pf,cf=null}function mf(t,e){if(cf){var n=t-of;hf.add(dc(n)>180?n+(n>0?360:-360):n)}else sf=t,uf=e;zc.point(t,e),gf(t,e)}function vf(){zc.lineStart()}function _f(){mf(sf,uf),zc.lineEnd(),dc(hf)>ac&&(ef=-(rf=180)),lf[0]=ef,lf[1]=rf,cf=null}function wf(t,e){return(e-=t)<0?e+360:e}function xf(t,e){return t[0]-e[0]}function kf(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:e<t[0]||t[1]<e}var Ef,Af,Sf,Mf,Tf,Df,Cf,Of,Rf,Nf,If,Bf,Lf,Pf,Ff,qf,jf=function(t){var e,n,r,i,a,o,s;if(af=rf=-(ef=nf=1/0),ff=[],qc(t,df),n=ff.length){for(ff.sort(xf),e=1,a=[r=ff[0]];e<n;++e)kf(r,(i=ff[e])[0])||kf(r,i[1])?(wf(r[0],i[1])>wf(r[0],r[1])&&(r[1]=i[1]),wf(i[0],r[1])>wf(r[0],r[1])&&(r[0]=i[0])):a.push(r=i);for(o=-1/0,e=0,r=a[n=a.length-1];e<=n;r=i,++e)i=a[e],(s=wf(r[1],i[0]))>o&&(o=s,ef=i[0],rf=r[1])}return ff=lf=null,ef===1/0||nf===1/0?[[NaN,NaN],[NaN,NaN]]:[[ef,nf],[rf,af]]},Uf={sphere:Tc,point:zf,lineStart:Hf,lineEnd:Gf,polygonStart:function(){Uf.lineStart=Wf,Uf.lineEnd=Kf},polygonEnd:function(){Uf.lineStart=Hf,Uf.lineEnd=Gf}};function zf(t,e){t*=hc;var n=yc(e*=hc);Yf(n*yc(t),n*wc(t),wc(e))}function Yf(t,e,n){Sf+=(t-Sf)/++Ef,Mf+=(e-Mf)/Ef,Tf+=(n-Tf)/Ef}function Hf(){Uf.point=Vf}function Vf(t,e){t*=hc;var n=yc(e*=hc);Pf=n*yc(t),Ff=n*wc(t),qf=wc(e),Uf.point=$f,Yf(Pf,Ff,qf)}function $f(t,e){t*=hc;var n=yc(e*=hc),r=n*yc(t),i=n*wc(t),a=wc(e),o=gc(kc((o=Ff*a-qf*i)*o+(o=qf*r-Pf*a)*o+(o=Pf*i-Ff*r)*o),Pf*r+Ff*i+qf*a);Af+=o,Df+=o*(Pf+(Pf=r)),Cf+=o*(Ff+(Ff=i)),Of+=o*(qf+(qf=a)),Yf(Pf,Ff,qf)}function Gf(){Uf.point=zf}function Wf(){Uf.point=Xf}function Kf(){Zf(Bf,Lf),Uf.point=zf}function Xf(t,e){Bf=t,Lf=e,t*=hc,e*=hc,Uf.point=Zf;var n=yc(e);Pf=n*yc(t),Ff=n*wc(t),qf=wc(e),Yf(Pf,Ff,qf)}function Zf(t,e){t*=hc;var n=yc(e*=hc),r=n*yc(t),i=n*wc(t),a=wc(e),o=Ff*a-qf*i,s=qf*r-Pf*a,u=Pf*i-Ff*r,c=kc(o*o+s*s+u*u),f=Sc(c),l=c&&-f/c;Rf+=l*o,Nf+=l*s,If+=l*u,Af+=f,Df+=f*(Pf+(Pf=r)),Cf+=f*(Ff+(Ff=i)),Of+=f*(qf+(qf=a)),Yf(Pf,Ff,qf)}var Jf=function(t){Ef=Af=Sf=Mf=Tf=Df=Cf=Of=Rf=Nf=If=0,qc(t,Uf);var e=Rf,n=Nf,r=If,i=e*e+n*n+r*r;return i<oc&&(e=Df,n=Cf,r=Of,Af<ac&&(e=Sf,n=Mf,r=Tf),(i=e*e+n*n+r*r)<oc)?[NaN,NaN]:[gc(n,e)*lc,Sc(r/kc(i))*lc]},Qf=function(t){return function(){return t}},tl=function(t,e){function n(n,r){return n=t(n,r),e(n[0],n[1])}return t.invert&&e.invert&&(n.invert=function(n,r){return(n=e.invert(n,r))&&t.invert(n[0],n[1])}),n};function el(t,e){return[dc(t)>sc?t+Math.round(-t/fc)*fc:t,e]}function nl(t,e,n){return(t%=fc)?e||n?tl(il(t),al(e,n)):il(t):e||n?al(e,n):el}function rl(t){return function(e,n){return[(e+=t)>sc?e-fc:e<-sc?e+fc:e,n]}}function il(t){var e=rl(t);return e.invert=rl(-t),e}function al(t,e){var n=yc(t),r=wc(t),i=yc(e),a=wc(e);function o(t,e){var o=yc(e),s=yc(t)*o,u=wc(t)*o,c=wc(e),f=c*n+s*r;return[gc(u*i-f*a,s*n-c*r),Sc(f*i+u*a)]}return o.invert=function(t,e){var o=yc(e),s=yc(t)*o,u=wc(t)*o,c=wc(e),f=c*i-u*a;return[gc(u*i+c*a,s*n+f*r),Sc(f*n-s*r)]},o}el.invert=el;var ol=function(t){function e(e){return(e=t(e[0]*hc,e[1]*hc))[0]*=lc,e[1]*=lc,e}return t=nl(t[0]*hc,t[1]*hc,t.length>2?t[2]*hc:0),e.invert=function(e){return(e=t.invert(e[0]*hc,e[1]*hc))[0]*=lc,e[1]*=lc,e},e};function sl(t,e,n,r,i,a){if(n){var o=yc(e),s=wc(e),u=r*n;null==i?(i=e+r*fc,a=e-u/2):(i=ul(o,i),a=ul(o,a),(r>0?i<a:i>a)&&(i+=r*fc));for(var c,f=i;r>0?f>a:f<a;f-=u)c=Wc([o,-s*yc(f),-s*wc(f)]),t.point(c[0],c[1])}}function ul(t,e){(e=Kc(e))[0]-=t,tf(e);var n=Ac(-e[1]);return((-e[2]<0?-n:n)+fc-ac)%fc}var cl=function(){var t,e,n=Qf([0,0]),r=Qf(90),i=Qf(6),a={point:function(n,r){t.push(n=e(n,r)),n[0]*=lc,n[1]*=lc}};function o(){var o=n.apply(this,arguments),s=r.apply(this,arguments)*hc,u=i.apply(this,arguments)*hc;return t=[],e=nl(-o[0]*hc,-o[1]*hc,0).invert,sl(a,s,u,1),o={type:"Polygon",coordinates:[t]},t=e=null,o}return o.center=function(t){return arguments.length?(n="function"==typeof t?t:Qf([+t[0],+t[1]]),o):n},o.radius=function(t){return arguments.length?(r="function"==typeof t?t:Qf(+t),o):r},o.precision=function(t){return arguments.length?(i="function"==typeof t?t:Qf(+t),o):i},o},fl=function(){var t,e=[];return{point:function(e,n){t.push([e,n])},lineStart:function(){e.push(t=[])},lineEnd:Tc,rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))},result:function(){var n=e;return e=[],t=null,n}}},ll=function(t,e){return dc(t[0]-e[0])<ac&&dc(t[1]-e[1])<ac};function hl(t,e,n,r){this.x=t,this.z=e,this.o=n,this.e=r,this.v=!1,this.n=this.p=null}var dl=function(t,e,n,r,i){var a,o,s=[],u=[];if(t.forEach((function(t){if(!((e=t.length-1)<=0)){var e,n,r=t[0],o=t[e];if(ll(r,o)){for(i.lineStart(),a=0;a<e;++a)i.point((r=t[a])[0],r[1]);i.lineEnd()}else s.push(n=new hl(r,t,null,!0)),u.push(n.o=new hl(r,null,n,!1)),s.push(n=new hl(o,t,null,!1)),u.push(n.o=new hl(o,null,n,!0))}})),s.length){for(u.sort(e),pl(s),pl(u),a=0,o=u.length;a<o;++a)u[a].e=n=!n;for(var c,f,l=s[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;c=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(a=0,o=c.length;a<o;++a)i.point((f=c[a])[0],f[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(c=h.p.z,a=c.length-1;a>=0;--a)i.point((f=c[a])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}c=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}};function pl(t){if(e=t.length){for(var e,n,r=0,i=t[0];++r<e;)i.n=n=t[r],n.p=i,i=n;i.n=n=t[0],n.p=i}}var gl=ec();function yl(t){return dc(t[0])<=sc?t[0]:xc(t[0])*((dc(t[0])+sc)%fc-sc)}var bl=function(t,e){var n=yl(e),r=e[1],i=wc(r),a=[wc(n),-yc(n),0],o=0,s=0;gl.reset(),1===i?r=uc+ac:-1===i&&(r=-uc-ac);for(var u=0,c=t.length;u<c;++u)if(l=(f=t[u]).length)for(var f,l,h=f[l-1],d=yl(h),p=h[1]/2+cc,g=wc(p),y=yc(p),b=0;b<l;++b,d=v,g=w,y=x,h=m){var m=f[b],v=yl(m),_=m[1]/2+cc,w=wc(_),x=yc(_),k=v-d,E=k>=0?1:-1,A=E*k,S=A>sc,M=g*w;if(gl.add(gc(M*E*wc(A),y*x+M*yc(A))),o+=S?k+E*fc:k,S^d>=n^v>=n){var T=Zc(Kc(h),Kc(m));tf(T);var D=Zc(a,T);tf(D);var C=(S^k>=0?-1:1)*Sc(D[2]);(r>C||r===C&&(T[0]||T[1]))&&(s+=S^k>=0?1:-1)}}return(o<-ac||o<ac&&gl<-ac)^1&s},ml=function(t,e,n,r){return function(i){var a,o,s,u=e(i),c=fl(),f=e(c),l=!1,h={point:d,lineStart:g,lineEnd:y,polygonStart:function(){h.point=b,h.lineStart=m,h.lineEnd=v,o=[],a=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=y,o=P(o);var t=bl(a,r);o.length?(l||(i.polygonStart(),l=!0),dl(o,_l,t,n,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),n(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),o=a=null},sphere:function(){i.polygonStart(),i.lineStart(),n(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(e,n){t(e,n)&&i.point(e,n)}function p(t,e){u.point(t,e)}function g(){h.point=p,u.lineStart()}function y(){h.point=d,u.lineEnd()}function b(t,e){s.push([t,e]),f.point(t,e)}function m(){f.lineStart(),s=[]}function v(){b(s[0][0],s[0][1]),f.lineEnd();var t,e,n,r,u=f.clean(),h=c.result(),d=h.length;if(s.pop(),a.push(s),s=null,d)if(1&u){if((e=(n=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<e;++t)i.point((r=n[t])[0],r[1]);i.lineEnd()}}else d>1&&2&u&&h.push(h.pop().concat(h.shift())),o.push(h.filter(vl))}return h}};function vl(t){return t.length>1}function _l(t,e){return((t=t.x)[0]<0?t[1]-uc-ac:uc-t[1])-((e=e.x)[0]<0?e[1]-uc-ac:uc-e[1])}var wl=ml((function(){return!0}),(function(t){var e,n=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?sc:-sc,u=dc(a-n);dc(u-sc)<ac?(t.point(n,r=(r+o)/2>0?uc:-uc),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),t.point(a,r),e=0):i!==s&&u>=sc&&(dc(n-i)<ac&&(n-=i*ac),dc(a-s)<ac&&(a-=s*ac),r=function(t,e,n,r){var i,a,o=wc(t-n);return dc(o)>ac?pc((wc(e)*(a=yc(r))*wc(n)-wc(r)*(i=yc(e))*wc(t))/(i*a*o)):(e+r)/2}(n,r,a,o),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(s,r),e=0),t.point(n=a,r=o),i=s},lineEnd:function(){t.lineEnd(),n=r=NaN},clean:function(){return 2-e}}}),(function(t,e,n,r){var i;if(null==t)i=n*uc,r.point(-sc,i),r.point(0,i),r.point(sc,i),r.point(sc,0),r.point(sc,-i),r.point(0,-i),r.point(-sc,-i),r.point(-sc,0),r.point(-sc,i);else if(dc(t[0]-e[0])>ac){var a=t[0]<e[0]?sc:-sc;i=n*a/2,r.point(-a,i),r.point(0,i),r.point(a,i)}else r.point(e[0],e[1])}),[-sc,-uc]);var xl=function(t){var e=yc(t),n=6*hc,r=e>0,i=dc(e)>ac;function a(t,n){return yc(t)*yc(n)>e}function o(t,n,r){var i=[1,0,0],a=Zc(Kc(t),Kc(n)),o=Xc(a,a),s=a[0],u=o-s*s;if(!u)return!r&&t;var c=e*o/u,f=-e*s/u,l=Zc(i,a),h=Qc(i,c);Jc(h,Qc(a,f));var d=l,p=Xc(h,d),g=Xc(d,d),y=p*p-g*(Xc(h,h)-1);if(!(y<0)){var b=kc(y),m=Qc(d,(-p-b)/g);if(Jc(m,h),m=Wc(m),!r)return m;var v,_=t[0],w=n[0],x=t[1],k=n[1];w<_&&(v=_,_=w,w=v);var E=w-_,A=dc(E-sc)<ac;if(!A&&k<x&&(v=x,x=k,k=v),A||E<ac?A?x+k>0^m[1]<(dc(m[0]-_)<ac?x:k):x<=m[1]&&m[1]<=k:E>sc^(_<=m[0]&&m[0]<=w)){var S=Qc(d,(-p+b)/g);return Jc(S,h),[m,Wc(S)]}}}function s(e,n){var i=r?t:sc-t,a=0;return e<-i?a|=1:e>i&&(a|=2),n<-i?a|=4:n>i&&(a|=8),a}return ml(a,(function(t){var e,n,u,c,f;return{lineStart:function(){c=u=!1,f=1},point:function(l,h){var d,p=[l,h],g=a(l,h),y=r?g?0:s(l,h):g?s(l+(l<0?sc:-sc),h):0;if(!e&&(c=u=g)&&t.lineStart(),g!==u&&(!(d=o(e,p))||ll(e,d)||ll(p,d))&&(p[0]+=ac,p[1]+=ac,g=a(p[0],p[1])),g!==u)f=0,g?(t.lineStart(),d=o(p,e),t.point(d[0],d[1])):(d=o(e,p),t.point(d[0],d[1]),t.lineEnd()),e=d;else if(i&&e&&r^g){var b;y&n||!(b=o(p,e,!0))||(f=0,r?(t.lineStart(),t.point(b[0][0],b[0][1]),t.point(b[1][0],b[1][1]),t.lineEnd()):(t.point(b[1][0],b[1][1]),t.lineEnd(),t.lineStart(),t.point(b[0][0],b[0][1])))}!g||e&&ll(e,p)||t.point(p[0],p[1]),e=p,u=g,n=y},lineEnd:function(){u&&t.lineEnd(),e=null},clean:function(){return f|(c&&u)<<1}}}),(function(e,r,i,a){sl(a,t,n,i,e,r)}),r?[0,-t]:[-sc,t-sc])},kl=function(t,e,n,r,i,a){var o,s=t[0],u=t[1],c=0,f=1,l=e[0]-s,h=e[1]-u;if(o=n-s,l||!(o>0)){if(o/=l,l<0){if(o<c)return;o<f&&(f=o)}else if(l>0){if(o>f)return;o>c&&(c=o)}if(o=i-s,l||!(o<0)){if(o/=l,l<0){if(o>f)return;o>c&&(c=o)}else if(l>0){if(o<c)return;o<f&&(f=o)}if(o=r-u,h||!(o>0)){if(o/=h,h<0){if(o<c)return;o<f&&(f=o)}else if(h>0){if(o>f)return;o>c&&(c=o)}if(o=a-u,h||!(o<0)){if(o/=h,h<0){if(o>f)return;o>c&&(c=o)}else if(h>0){if(o<c)return;o<f&&(f=o)}return c>0&&(t[0]=s+c*l,t[1]=u+c*h),f<1&&(e[0]=s+f*l,e[1]=u+f*h),!0}}}}},El=1e9,Al=-El;function Sl(t,e,n,r){function i(i,a){return t<=i&&i<=n&&e<=a&&a<=r}function a(i,a,s,c){var f=0,l=0;if(null==i||(f=o(i,s))!==(l=o(a,s))||u(i,a)<0^s>0)do{c.point(0===f||3===f?t:n,f>1?r:e)}while((f=(f+s+4)%4)!==l);else c.point(a[0],a[1])}function o(r,i){return dc(r[0]-t)<ac?i>0?0:3:dc(r[0]-n)<ac?i>0?2:1:dc(r[1]-e)<ac?i>0?1:0:i>0?3:2}function s(t,e){return u(t.x,e.x)}function u(t,e){var n=o(t,1),r=o(e,1);return n!==r?n-r:0===n?e[1]-t[1]:1===n?t[0]-e[0]:2===n?t[1]-e[1]:e[0]-t[0]}return function(o){var u,c,f,l,h,d,p,g,y,b,m,v=o,_=fl(),w={point:x,lineStart:function(){w.point=k,c&&c.push(f=[]);b=!0,y=!1,p=g=NaN},lineEnd:function(){u&&(k(l,h),d&&y&&_.rejoin(),u.push(_.result()));w.point=x,y&&v.lineEnd()},polygonStart:function(){v=_,u=[],c=[],m=!0},polygonEnd:function(){var e=function(){for(var e=0,n=0,i=c.length;n<i;++n)for(var a,o,s=c[n],u=1,f=s.length,l=s[0],h=l[0],d=l[1];u<f;++u)a=h,o=d,l=s[u],h=l[0],d=l[1],o<=r?d>r&&(h-a)*(r-o)>(d-o)*(t-a)&&++e:d<=r&&(h-a)*(r-o)<(d-o)*(t-a)&&--e;return e}(),n=m&&e,i=(u=P(u)).length;(n||i)&&(o.polygonStart(),n&&(o.lineStart(),a(null,null,1,o),o.lineEnd()),i&&dl(u,s,e,a,o),o.polygonEnd());v=o,u=c=f=null}};function x(t,e){i(t,e)&&v.point(t,e)}function k(a,o){var s=i(a,o);if(c&&f.push([a,o]),b)l=a,h=o,d=s,b=!1,s&&(v.lineStart(),v.point(a,o));else if(s&&y)v.point(a,o);else{var u=[p=Math.max(Al,Math.min(El,p)),g=Math.max(Al,Math.min(El,g))],_=[a=Math.max(Al,Math.min(El,a)),o=Math.max(Al,Math.min(El,o))];kl(u,_,t,e,n,r)?(y||(v.lineStart(),v.point(u[0],u[1])),v.point(_[0],_[1]),s||v.lineEnd(),m=!1):s&&(v.lineStart(),v.point(a,o),m=!1)}p=a,g=o,y=s}return w}}var Ml,Tl,Dl,Cl=function(){var t,e,n,r=0,i=0,a=960,o=500;return n={stream:function(n){return t&&e===n?t:t=Sl(r,i,a,o)(e=n)},extent:function(s){return arguments.length?(r=+s[0][0],i=+s[0][1],a=+s[1][0],o=+s[1][1],t=e=null,n):[[r,i],[a,o]]}}},Ol=ec(),Rl={sphere:Tc,point:Tc,lineStart:function(){Rl.point=Il,Rl.lineEnd=Nl},lineEnd:Tc,polygonStart:Tc,polygonEnd:Tc};function Nl(){Rl.point=Rl.lineEnd=Tc}function Il(t,e){Ml=t*=hc,Tl=wc(e*=hc),Dl=yc(e),Rl.point=Bl}function Bl(t,e){t*=hc;var n=wc(e*=hc),r=yc(e),i=dc(t-Ml),a=yc(i),o=r*wc(i),s=Dl*n-Tl*r*a,u=Tl*n+Dl*r*a;Ol.add(gc(kc(o*o+s*s),u)),Ml=t,Tl=n,Dl=r}var Ll=function(t){return Ol.reset(),qc(t,Rl),+Ol},Pl=[null,null],Fl={type:"LineString",coordinates:Pl},ql=function(t,e){return Pl[0]=t,Pl[1]=e,Ll(Fl)},jl={Feature:function(t,e){return zl(t.geometry,e)},FeatureCollection:function(t,e){for(var n=t.features,r=-1,i=n.length;++r<i;)if(zl(n[r].geometry,e))return!0;return!1}},Ul={Sphere:function(){return!0},Point:function(t,e){return Yl(t.coordinates,e)},MultiPoint:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if(Yl(n[r],e))return!0;return!1},LineString:function(t,e){return Hl(t.coordinates,e)},MultiLineString:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if(Hl(n[r],e))return!0;return!1},Polygon:function(t,e){return Vl(t.coordinates,e)},MultiPolygon:function(t,e){for(var n=t.coordinates,r=-1,i=n.length;++r<i;)if(Vl(n[r],e))return!0;return!1},GeometryCollection:function(t,e){for(var n=t.geometries,r=-1,i=n.length;++r<i;)if(zl(n[r],e))return!0;return!1}};function zl(t,e){return!(!t||!Ul.hasOwnProperty(t.type))&&Ul[t.type](t,e)}function Yl(t,e){return 0===ql(t,e)}function Hl(t,e){for(var n,r,i,a=0,o=t.length;a<o;a++){if(0===(r=ql(t[a],e)))return!0;if(a>0&&(i=ql(t[a],t[a-1]))>0&&n<=i&&r<=i&&(n+r-i)*(1-Math.pow((n-r)/i,2))<oc*i)return!0;n=r}return!1}function Vl(t,e){return!!bl(t.map($l),Gl(e))}function $l(t){return(t=t.map(Gl)).pop(),t}function Gl(t){return[t[0]*hc,t[1]*hc]}var Wl=function(t,e){return(t&&jl.hasOwnProperty(t.type)?jl[t.type]:zl)(t,e)};function Kl(t,e,n){var r=x(t,e-ac,n).concat(e);return function(t){return r.map((function(e){return[t,e]}))}}function Xl(t,e,n){var r=x(t,e-ac,n).concat(e);return function(t){return r.map((function(e){return[e,t]}))}}function Zl(){var t,e,n,r,i,a,o,s,u,c,f,l,h=10,d=h,p=90,g=360,y=2.5;function b(){return{type:"MultiLineString",coordinates:m()}}function m(){return x(bc(r/p)*p,n,p).map(f).concat(x(bc(s/g)*g,o,g).map(l)).concat(x(bc(e/h)*h,t,h).filter((function(t){return dc(t%p)>ac})).map(u)).concat(x(bc(a/d)*d,i,d).filter((function(t){return dc(t%g)>ac})).map(c))}return b.lines=function(){return m().map((function(t){return{type:"LineString",coordinates:t}}))},b.outline=function(){return{type:"Polygon",coordinates:[f(r).concat(l(o).slice(1),f(n).reverse().slice(1),l(s).reverse().slice(1))]}},b.extent=function(t){return arguments.length?b.extentMajor(t).extentMinor(t):b.extentMinor()},b.extentMajor=function(t){return arguments.length?(r=+t[0][0],n=+t[1][0],s=+t[0][1],o=+t[1][1],r>n&&(t=r,r=n,n=t),s>o&&(t=s,s=o,o=t),b.precision(y)):[[r,s],[n,o]]},b.extentMinor=function(n){return arguments.length?(e=+n[0][0],t=+n[1][0],a=+n[0][1],i=+n[1][1],e>t&&(n=e,e=t,t=n),a>i&&(n=a,a=i,i=n),b.precision(y)):[[e,a],[t,i]]},b.step=function(t){return arguments.length?b.stepMajor(t).stepMinor(t):b.stepMinor()},b.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],b):[p,g]},b.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],b):[h,d]},b.precision=function(h){return arguments.length?(y=+h,u=Kl(a,i,90),c=Xl(e,t,y),f=Kl(s,o,90),l=Xl(r,n,y),b):y},b.extentMajor([[-180,-90+ac],[180,90-ac]]).extentMinor([[-180,-80-ac],[180,80+ac]])}function Jl(){return Zl()()}var Ql,th,eh,nh,rh=function(t,e){var n=t[0]*hc,r=t[1]*hc,i=e[0]*hc,a=e[1]*hc,o=yc(r),s=wc(r),u=yc(a),c=wc(a),f=o*yc(n),l=o*wc(n),h=u*yc(i),d=u*wc(i),p=2*Sc(kc(Mc(a-r)+o*u*Mc(i-n))),g=wc(p),y=p?function(t){var e=wc(t*=p)/g,n=wc(p-t)/g,r=n*f+e*h,i=n*l+e*d,a=n*s+e*c;return[gc(i,r)*lc,gc(a,kc(r*r+i*i))*lc]}:function(){return[n*lc,r*lc]};return y.distance=p,y},ih=function(t){return t},ah=ec(),oh=ec(),sh={point:Tc,lineStart:Tc,lineEnd:Tc,polygonStart:function(){sh.lineStart=uh,sh.lineEnd=lh},polygonEnd:function(){sh.lineStart=sh.lineEnd=sh.point=Tc,ah.add(dc(oh)),oh.reset()},result:function(){var t=ah/2;return ah.reset(),t}};function uh(){sh.point=ch}function ch(t,e){sh.point=fh,Ql=eh=t,th=nh=e}function fh(t,e){oh.add(nh*t-eh*e),eh=t,nh=e}function lh(){fh(Ql,th)}var hh=sh,dh=1/0,ph=dh,gh=-dh,yh=gh;var bh,mh,vh,_h,wh={point:function(t,e){t<dh&&(dh=t);t>gh&&(gh=t);e<ph&&(ph=e);e>yh&&(yh=e)},lineStart:Tc,lineEnd:Tc,polygonStart:Tc,polygonEnd:Tc,result:function(){var t=[[dh,ph],[gh,yh]];return gh=yh=-(ph=dh=1/0),t}},xh=0,kh=0,Eh=0,Ah=0,Sh=0,Mh=0,Th=0,Dh=0,Ch=0,Oh={point:Rh,lineStart:Nh,lineEnd:Lh,polygonStart:function(){Oh.lineStart=Ph,Oh.lineEnd=Fh},polygonEnd:function(){Oh.point=Rh,Oh.lineStart=Nh,Oh.lineEnd=Lh},result:function(){var t=Ch?[Th/Ch,Dh/Ch]:Mh?[Ah/Mh,Sh/Mh]:Eh?[xh/Eh,kh/Eh]:[NaN,NaN];return xh=kh=Eh=Ah=Sh=Mh=Th=Dh=Ch=0,t}};function Rh(t,e){xh+=t,kh+=e,++Eh}function Nh(){Oh.point=Ih}function Ih(t,e){Oh.point=Bh,Rh(vh=t,_h=e)}function Bh(t,e){var n=t-vh,r=e-_h,i=kc(n*n+r*r);Ah+=i*(vh+t)/2,Sh+=i*(_h+e)/2,Mh+=i,Rh(vh=t,_h=e)}function Lh(){Oh.point=Rh}function Ph(){Oh.point=qh}function Fh(){jh(bh,mh)}function qh(t,e){Oh.point=jh,Rh(bh=vh=t,mh=_h=e)}function jh(t,e){var n=t-vh,r=e-_h,i=kc(n*n+r*r);Ah+=i*(vh+t)/2,Sh+=i*(_h+e)/2,Mh+=i,Th+=(i=_h*t-vh*e)*(vh+t),Dh+=i*(_h+e),Ch+=3*i,Rh(vh=t,_h=e)}var Uh=Oh;function zh(t){this._context=t}zh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,fc)}},result:Tc};var Yh,Hh,Vh,$h,Gh,Wh=ec(),Kh={point:Tc,lineStart:function(){Kh.point=Xh},lineEnd:function(){Yh&&Zh(Hh,Vh),Kh.point=Tc},polygonStart:function(){Yh=!0},polygonEnd:function(){Yh=null},result:function(){var t=+Wh;return Wh.reset(),t}};function Xh(t,e){Kh.point=Zh,Hh=$h=t,Vh=Gh=e}function Zh(t,e){$h-=t,Gh-=e,Wh.add(kc($h*$h+Gh*Gh)),$h=t,Gh=e}var Jh=Kh;function Qh(){this._string=[]}function td(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}Qh.prototype={_radius:4.5,_circle:td(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=td(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var ed=function(t,e){var n,r,i=4.5;function a(t){return t&&("function"==typeof i&&r.pointRadius(+i.apply(this,arguments)),qc(t,n(r))),r.result()}return a.area=function(t){return qc(t,n(hh)),hh.result()},a.measure=function(t){return qc(t,n(Jh)),Jh.result()},a.bounds=function(t){return qc(t,n(wh)),wh.result()},a.centroid=function(t){return qc(t,n(Uh)),Uh.result()},a.projection=function(e){return arguments.length?(n=null==e?(t=null,ih):(t=e).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(e=null,new Qh):new zh(e=t),"function"!=typeof i&&r.pointRadius(i),a):e},a.pointRadius=function(t){return arguments.length?(i="function"==typeof t?t:(r.pointRadius(+t),+t),a):i},a.projection(t).context(e)},nd=function(t){return{stream:rd(t)}};function rd(t){return function(e){var n=new id;for(var r in t)n[r]=t[r];return n.stream=e,n}}function id(){}function ad(t,e,n){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),qc(n,t.stream(wh)),e(wh.result()),null!=r&&t.clipExtent(r),t}function od(t,e,n){return ad(t,(function(n){var r=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(r/(n[1][0]-n[0][0]),i/(n[1][1]-n[0][1])),o=+e[0][0]+(r-a*(n[1][0]+n[0][0]))/2,s=+e[0][1]+(i-a*(n[1][1]+n[0][1]))/2;t.scale(150*a).translate([o,s])}),n)}function sd(t,e,n){return od(t,[[0,0],e],n)}function ud(t,e,n){return ad(t,(function(n){var r=+e,i=r/(n[1][0]-n[0][0]),a=(r-i*(n[1][0]+n[0][0]))/2,o=-i*n[0][1];t.scale(150*i).translate([a,o])}),n)}function cd(t,e,n){return ad(t,(function(n){var r=+e,i=r/(n[1][1]-n[0][1]),a=-i*n[0][0],o=(r-i*(n[1][1]+n[0][1]))/2;t.scale(150*i).translate([a,o])}),n)}id.prototype={constructor:id,point:function(t,e){this.stream.point(t,e)},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()}};var fd=16,ld=yc(30*hc),hd=function(t,e){return+e?function(t,e){function n(r,i,a,o,s,u,c,f,l,h,d,p,g,y){var b=c-r,m=f-i,v=b*b+m*m;if(v>4*e&&g--){var _=o+h,w=s+d,x=u+p,k=kc(_*_+w*w+x*x),E=Sc(x/=k),A=dc(dc(x)-1)<ac||dc(a-l)<ac?(a+l)/2:gc(w,_),S=t(A,E),M=S[0],T=S[1],D=M-r,C=T-i,O=m*D-b*C;(O*O/v>e||dc((b*D+m*C)/v-.5)>.3||o*h+s*d+u*p<ld)&&(n(r,i,a,o,s,u,M,T,A,_/=k,w/=k,x,g,y),y.point(M,T),n(M,T,A,_,w,x,c,f,l,h,d,p,g,y))}}return function(e){var r,i,a,o,s,u,c,f,l,h,d,p,g={point:y,lineStart:b,lineEnd:v,polygonStart:function(){e.polygonStart(),g.lineStart=_},polygonEnd:function(){e.polygonEnd(),g.lineStart=b}};function y(n,r){n=t(n,r),e.point(n[0],n[1])}function b(){f=NaN,g.point=m,e.lineStart()}function m(r,i){var a=Kc([r,i]),o=t(r,i);n(f,l,c,h,d,p,f=o[0],l=o[1],c=r,h=a[0],d=a[1],p=a[2],fd,e),e.point(f,l)}function v(){g.point=y,e.lineEnd()}function _(){b(),g.point=w,g.lineEnd=x}function w(t,e){m(r=t,e),i=f,a=l,o=h,s=d,u=p,g.point=m}function x(){n(f,l,c,h,d,p,i,a,r,o,s,u,fd,e),g.lineEnd=v,v()}return g}}(t,e):function(t){return rd({point:function(e,n){e=t(e,n),this.stream.point(e[0],e[1])}})}(t)};var dd=rd({point:function(t,e){this.stream.point(t*hc,e*hc)}});function pd(t,e,n){function r(r,i){return[e+t*r,n-t*i]}return r.invert=function(r,i){return[(r-e)/t,(n-i)/t]},r}function gd(t,e,n,r){var i=yc(r),a=wc(r),o=i*t,s=a*t,u=i/t,c=a/t,f=(a*n-i*e)/t,l=(a*e+i*n)/t;function h(t,r){return[o*t-s*r+e,n-s*t-o*r]}return h.invert=function(t,e){return[u*t-c*e+f,l-c*t-u*e]},h}function yd(t){return bd((function(){return t}))()}function bd(t){var e,n,r,i,a,o,s,u,c,f,l=150,h=480,d=250,p=0,g=0,y=0,b=0,m=0,v=0,_=null,w=wl,x=null,k=ih,E=.5;function A(t){return u(t[0]*hc,t[1]*hc)}function S(t){return(t=u.invert(t[0],t[1]))&&[t[0]*lc,t[1]*lc]}function M(){var t=gd(l,0,0,v).apply(null,e(p,g)),r=(v?gd:pd)(l,h-t[0],d-t[1],v);return n=nl(y,b,m),s=tl(e,r),u=tl(n,s),o=hd(s,E),T()}function T(){return c=f=null,A}return A.stream=function(t){return c&&f===t?c:c=dd(function(t){return rd({point:function(e,n){var r=t(e,n);return this.stream.point(r[0],r[1])}})}(n)(w(o(k(f=t)))))},A.preclip=function(t){return arguments.length?(w=t,_=void 0,T()):w},A.postclip=function(t){return arguments.length?(k=t,x=r=i=a=null,T()):k},A.clipAngle=function(t){return arguments.length?(w=+t?xl(_=t*hc):(_=null,wl),T()):_*lc},A.clipExtent=function(t){return arguments.length?(k=null==t?(x=r=i=a=null,ih):Sl(x=+t[0][0],r=+t[0][1],i=+t[1][0],a=+t[1][1]),T()):null==x?null:[[x,r],[i,a]]},A.scale=function(t){return arguments.length?(l=+t,M()):l},A.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],M()):[h,d]},A.center=function(t){return arguments.length?(p=t[0]%360*hc,g=t[1]%360*hc,M()):[p*lc,g*lc]},A.rotate=function(t){return arguments.length?(y=t[0]%360*hc,b=t[1]%360*hc,m=t.length>2?t[2]%360*hc:0,M()):[y*lc,b*lc,m*lc]},A.angle=function(t){return arguments.length?(v=t%360*hc,M()):v*lc},A.precision=function(t){return arguments.length?(o=hd(s,E=t*t),T()):kc(E)},A.fitExtent=function(t,e){return od(A,t,e)},A.fitSize=function(t,e){return sd(A,t,e)},A.fitWidth=function(t,e){return ud(A,t,e)},A.fitHeight=function(t,e){return cd(A,t,e)},function(){return e=t.apply(this,arguments),A.invert=e.invert&&S,M()}}function md(t){var e=0,n=sc/3,r=bd(t),i=r(e,n);return i.parallels=function(t){return arguments.length?r(e=t[0]*hc,n=t[1]*hc):[e*lc,n*lc]},i}function vd(t,e){var n=wc(t),r=(n+wc(e))/2;if(dc(r)<ac)return function(t){var e=yc(t);function n(t,n){return[t*e,wc(n)/e]}return n.invert=function(t,n){return[t/e,Sc(n*e)]},n}(t);var i=1+n*(2*r-n),a=kc(i)/r;function o(t,e){var n=kc(i-2*r*wc(e))/r;return[n*wc(t*=r),a-n*yc(t)]}return o.invert=function(t,e){var n=a-e;return[gc(t,dc(n))/r*xc(n),Sc((i-(t*t+n*n)*r*r)/(2*r))]},o}var _d=function(){return md(vd).scale(155.424).center([0,33.6442])},wd=function(){return _d().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])};var xd=function(){var t,e,n,r,i,a,o=wd(),s=_d().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=_d().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(t,e){a=[t,e]}};function f(t){var e=t[0],o=t[1];return a=null,n.point(e,o),a||(r.point(e,o),a)||(i.point(e,o),a)}function l(){return t=e=null,f}return f.invert=function(t){var e=o.scale(),n=o.translate(),r=(t[0]-n[0])/e,i=(t[1]-n[1])/e;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?u:o).invert(t)},f.stream=function(n){return t&&e===n?t:(r=[o.stream(e=n),s.stream(n),u.stream(n)],i=r.length,t={point:function(t,e){for(var n=-1;++n<i;)r[n].point(t,e)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},f.precision=function(t){return arguments.length?(o.precision(t),s.precision(t),u.precision(t),l()):o.precision()},f.scale=function(t){return arguments.length?(o.scale(t),s.scale(.35*t),u.scale(t),f.translate(o.translate())):o.scale()},f.translate=function(t){if(!arguments.length)return o.translate();var e=o.scale(),a=+t[0],f=+t[1];return n=o.translate(t).clipExtent([[a-.455*e,f-.238*e],[a+.455*e,f+.238*e]]).stream(c),r=s.translate([a-.307*e,f+.201*e]).clipExtent([[a-.425*e+ac,f+.12*e+ac],[a-.214*e-ac,f+.234*e-ac]]).stream(c),i=u.translate([a-.205*e,f+.212*e]).clipExtent([[a-.214*e+ac,f+.166*e+ac],[a-.115*e-ac,f+.234*e-ac]]).stream(c),l()},f.fitExtent=function(t,e){return od(f,t,e)},f.fitSize=function(t,e){return sd(f,t,e)},f.fitWidth=function(t,e){return ud(f,t,e)},f.fitHeight=function(t,e){return cd(f,t,e)},f.scale(1070)};function kd(t){return function(e,n){var r=yc(e),i=yc(n),a=t(r*i);return[a*i*wc(e),a*wc(n)]}}function Ed(t){return function(e,n){var r=kc(e*e+n*n),i=t(r),a=wc(i),o=yc(i);return[gc(e*a,r*o),Sc(r&&n*a/r)]}}var Ad=kd((function(t){return kc(2/(1+t))}));Ad.invert=Ed((function(t){return 2*Sc(t/2)}));var Sd=function(){return yd(Ad).scale(124.75).clipAngle(179.999)},Md=kd((function(t){return(t=Ac(t))&&t/wc(t)}));Md.invert=Ed((function(t){return t}));var Td=function(){return yd(Md).scale(79.4188).clipAngle(179.999)};function Dd(t,e){return[t,vc(Ec((uc+e)/2))]}Dd.invert=function(t,e){return[t,2*pc(mc(e))-uc]};var Cd=function(){return Od(Dd).scale(961/fc)};function Od(t){var e,n,r,i=yd(t),a=i.center,o=i.scale,s=i.translate,u=i.clipExtent,c=null;function f(){var a=sc*o(),s=i(ol(i.rotate()).invert([0,0]));return u(null==c?[[s[0]-a,s[1]-a],[s[0]+a,s[1]+a]]:t===Dd?[[Math.max(s[0]-a,c),e],[Math.min(s[0]+a,n),r]]:[[c,Math.max(s[1]-a,e)],[n,Math.min(s[1]+a,r)]])}return i.scale=function(t){return arguments.length?(o(t),f()):o()},i.translate=function(t){return arguments.length?(s(t),f()):s()},i.center=function(t){return arguments.length?(a(t),f()):a()},i.clipExtent=function(t){return arguments.length?(null==t?c=e=n=r=null:(c=+t[0][0],e=+t[0][1],n=+t[1][0],r=+t[1][1]),f()):null==c?null:[[c,e],[n,r]]},f()}function Rd(t){return Ec((uc+t)/2)}function Nd(t,e){var n=yc(t),r=t===e?wc(t):vc(n/yc(e))/vc(Rd(e)/Rd(t)),i=n*_c(Rd(t),r)/r;if(!r)return Dd;function a(t,e){i>0?e<-uc+ac&&(e=-uc+ac):e>uc-ac&&(e=uc-ac);var n=i/_c(Rd(e),r);return[n*wc(r*t),i-n*yc(r*t)]}return a.invert=function(t,e){var n=i-e,a=xc(r)*kc(t*t+n*n);return[gc(t,dc(n))/r*xc(n),2*pc(_c(i/a,1/r))-uc]},a}var Id=function(){return md(Nd).scale(109.5).parallels([30,30])};function Bd(t,e){return[t,e]}Bd.invert=Bd;var Ld=function(){return yd(Bd).scale(152.63)};function Pd(t,e){var n=yc(t),r=t===e?wc(t):(n-yc(e))/(e-t),i=n/r+t;if(dc(r)<ac)return Bd;function a(t,e){var n=i-e,a=r*t;return[n*wc(a),i-n*yc(a)]}return a.invert=function(t,e){var n=i-e;return[gc(t,dc(n))/r*xc(n),i-xc(r)*kc(t*t+n*n)]},a}var Fd=function(){return md(Pd).scale(131.154).center([0,13.9389])},qd=1.340264,jd=-.081106,Ud=893e-6,zd=.003796,Yd=kc(3)/2;function Hd(t,e){var n=Sc(Yd*wc(e)),r=n*n,i=r*r*r;return[t*yc(n)/(Yd*(qd+3*jd*r+i*(7*Ud+9*zd*r))),n*(qd+jd*r+i*(Ud+zd*r))]}Hd.invert=function(t,e){for(var n,r=e,i=r*r,a=i*i*i,o=0;o<12&&(a=(i=(r-=n=(r*(qd+jd*i+a*(Ud+zd*i))-e)/(qd+3*jd*i+a*(7*Ud+9*zd*i)))*r)*i*i,!(dc(n)<oc));++o);return[Yd*t*(qd+3*jd*i+a*(7*Ud+9*zd*i))/yc(r),Sc(wc(r)/Yd)]};var Vd=function(){return yd(Hd).scale(177.158)};function $d(t,e){var n=yc(e),r=yc(t)*n;return[n*wc(t)/r,wc(e)/r]}$d.invert=Ed(pc);var Gd=function(){return yd($d).scale(144.049).clipAngle(60)};function Wd(t,e,n,r){return 1===t&&1===e&&0===n&&0===r?ih:rd({point:function(i,a){this.stream.point(i*t+n,a*e+r)}})}var Kd=function(){var t,e,n,r,i,a,o=1,s=0,u=0,c=1,f=1,l=ih,h=null,d=ih;function p(){return r=i=null,a}return a={stream:function(t){return r&&i===t?r:r=l(d(i=t))},postclip:function(r){return arguments.length?(d=r,h=t=e=n=null,p()):d},clipExtent:function(r){return arguments.length?(d=null==r?(h=t=e=n=null,ih):Sl(h=+r[0][0],t=+r[0][1],e=+r[1][0],n=+r[1][1]),p()):null==h?null:[[h,t],[e,n]]},scale:function(t){return arguments.length?(l=Wd((o=+t)*c,o*f,s,u),p()):o},translate:function(t){return arguments.length?(l=Wd(o*c,o*f,s=+t[0],u=+t[1]),p()):[s,u]},reflectX:function(t){return arguments.length?(l=Wd(o*(c=t?-1:1),o*f,s,u),p()):c<0},reflectY:function(t){return arguments.length?(l=Wd(o*c,o*(f=t?-1:1),s,u),p()):f<0},fitExtent:function(t,e){return od(a,t,e)},fitSize:function(t,e){return sd(a,t,e)},fitWidth:function(t,e){return ud(a,t,e)},fitHeight:function(t,e){return cd(a,t,e)}}};function Xd(t,e){var n=e*e,r=n*n;return[t*(.8707-.131979*n+r*(r*(.003971*n-.001529*r)-.013791)),e*(1.007226+n*(.015085+r*(.028874*n-.044475-.005916*r)))]}Xd.invert=function(t,e){var n,r=e,i=25;do{var a=r*r,o=a*a;r-=n=(r*(1.007226+a*(.015085+o*(.028874*a-.044475-.005916*o)))-e)/(1.007226+a*(.045255+o*(.259866*a-.311325-.005916*11*o)))}while(dc(n)>ac&&--i>0);return[t/(.8707+(a=r*r)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),r]};var Zd=function(){return yd(Xd).scale(175.295)};function Jd(t,e){return[yc(e)*wc(t),wc(e)]}Jd.invert=Ed(Sc);var Qd=function(){return yd(Jd).scale(249.5).clipAngle(90+ac)};function tp(t,e){var n=yc(e),r=1+yc(t)*n;return[n*wc(t)/r,wc(e)/r]}tp.invert=Ed((function(t){return 2*pc(t)}));var ep=function(){return yd(tp).scale(250).clipAngle(142)};function np(t,e){return[vc(Ec((uc+e)/2)),-t]}np.invert=function(t,e){return[-e,2*pc(mc(t))-uc]};var rp=function(){var t=Od(np),e=t.center,n=t.rotate;return t.center=function(t){return arguments.length?e([-t[1],t[0]]):[(t=e())[1],-t[0]]},t.rotate=function(t){return arguments.length?n([t[0],t[1],t.length>2?t[2]+90:90]):[(t=n())[0],t[1],t[2]-90]},n([0,0,90]).scale(159.155)};function ip(t,e){return t.parent===e.parent?1:2}function ap(t,e){return t+e.x}function op(t,e){return Math.max(t,e.y)}var sp=function(){var t=ip,e=1,n=1,r=!1;function i(i){var a,o=0;i.eachAfter((function(e){var n=e.children;n?(e.x=function(t){return t.reduce(ap,0)/t.length}(n),e.y=function(t){return 1+t.reduce(op,0)}(n)):(e.x=a?o+=t(e,a):0,e.y=0,a=e)}));var s=function(t){for(var e;e=t.children;)t=e[0];return t}(i),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(i),c=s.x-t(s,u)/2,f=u.x+t(u,s)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*e,t.y=(i.y-t.y)*n}:function(t){t.x=(t.x-c)/(f-c)*e,t.y=(1-(i.y?t.y/i.y:1))*n})}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i};function up(t){var e=0,n=t.children,r=n&&n.length;if(r)for(;--r>=0;)e+=n[r].value;else e=1;t.value=e}function cp(t,e){var n,r,i,a,o,s=new dp(t),u=+t.value&&(s.value=t.value),c=[s];for(null==e&&(e=fp);n=c.pop();)if(u&&(n.value=+n.data.value),(i=e(n.data))&&(o=i.length))for(n.children=new Array(o),a=o-1;a>=0;--a)c.push(r=n.children[a]=new dp(i[a])),r.parent=n,r.depth=n.depth+1;return s.eachBefore(hp)}function fp(t){return t.children}function lp(t){t.data=t.data.data}function hp(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function dp(t){this.data=t,this.depth=this.height=0,this.parent=null}dp.prototype=cp.prototype={constructor:dp,count:function(){return this.eachAfter(up)},each:function(t){var e,n,r,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),n=a.children)for(r=0,i=n.length;r<i;++r)o.push(n[r])}while(o.length);return this},eachAfter:function(t){for(var e,n,r,i=this,a=[i],o=[];i=a.pop();)if(o.push(i),e=i.children)for(n=0,r=e.length;n<r;++n)a.push(e[n]);for(;i=o.pop();)t(i);return this},eachBefore:function(t){for(var e,n,r=this,i=[r];r=i.pop();)if(t(r),e=r.children)for(n=e.length-1;n>=0;--n)i.push(e[n]);return this},sum:function(t){return this.eachAfter((function(e){for(var n=+t(e.data)||0,r=e.children,i=r&&r.length;--i>=0;)n+=r[i].value;e.value=n}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,n=function(t,e){if(t===e)return t;var n=t.ancestors(),r=e.ancestors(),i=null;t=n.pop(),e=r.pop();for(;t===e;)i=t,t=n.pop(),e=r.pop();return i}(e,t),r=[e];e!==n;)e=e.parent,r.push(e);for(var i=r.length;t!==n;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(n){n!==t&&e.push({source:n.parent,target:n})})),e},copy:function(){return cp(this).eachBefore(lp)}};var pp=Array.prototype.slice;var gp=function(t){for(var e,n,r=0,i=(t=function(t){for(var e,n,r=t.length;r;)n=Math.random()*r--|0,e=t[r],t[r]=t[n],t[n]=e;return t}(pp.call(t))).length,a=[];r<i;)e=t[r],n&&mp(n,e)?++r:(n=_p(a=yp(a,e)),r=0);return n};function yp(t,e){var n,r;if(vp(e,t))return[e];for(n=0;n<t.length;++n)if(bp(e,t[n])&&vp(wp(t[n],e),t))return[t[n],e];for(n=0;n<t.length-1;++n)for(r=n+1;r<t.length;++r)if(bp(wp(t[n],t[r]),e)&&bp(wp(t[n],e),t[r])&&bp(wp(t[r],e),t[n])&&vp(xp(t[n],t[r],e),t))return[t[n],t[r],e];throw new Error}function bp(t,e){var n=t.r-e.r,r=e.x-t.x,i=e.y-t.y;return n<0||n*n<r*r+i*i}function mp(t,e){var n=t.r-e.r+1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function vp(t,e){for(var n=0;n<e.length;++n)if(!mp(t,e[n]))return!1;return!0}function _p(t){switch(t.length){case 1:return{x:(e=t[0]).x,y:e.y,r:e.r};case 2:return wp(t[0],t[1]);case 3:return xp(t[0],t[1],t[2])}var e}function wp(t,e){var n=t.x,r=t.y,i=t.r,a=e.x,o=e.y,s=e.r,u=a-n,c=o-r,f=s-i,l=Math.sqrt(u*u+c*c);return{x:(n+a+u/l*f)/2,y:(r+o+c/l*f)/2,r:(l+i+s)/2}}function xp(t,e,n){var r=t.x,i=t.y,a=t.r,o=e.x,s=e.y,u=e.r,c=n.x,f=n.y,l=n.r,h=r-o,d=r-c,p=i-s,g=i-f,y=u-a,b=l-a,m=r*r+i*i-a*a,v=m-o*o-s*s+u*u,_=m-c*c-f*f+l*l,w=d*p-h*g,x=(p*_-g*v)/(2*w)-r,k=(g*y-p*b)/w,E=(d*v-h*_)/(2*w)-i,A=(h*b-d*y)/w,S=k*k+A*A-1,M=2*(a+x*k+E*A),T=x*x+E*E-a*a,D=-(S?(M+Math.sqrt(M*M-4*S*T))/(2*S):T/M);return{x:r+x+k*D,y:i+E+A*D,r:D}}function kp(t,e,n){var r,i,a,o,s=t.x-e.x,u=t.y-e.y,c=s*s+u*u;c?(i=e.r+n.r,i*=i,o=t.r+n.r,i>(o*=o)?(r=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-r*r)),n.x=t.x-r*s-a*u,n.y=t.y-r*u+a*s):(r=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-r*r)),n.x=e.x+r*s-a*u,n.y=e.y+r*u+a*s)):(n.x=e.x+n.r,n.y=e.y)}function Ep(t,e){var n=t.r+e.r-1e-6,r=e.x-t.x,i=e.y-t.y;return n>0&&n*n>r*r+i*i}function Ap(t){var e=t._,n=t.next._,r=e.r+n.r,i=(e.x*n.r+n.x*e.r)/r,a=(e.y*n.r+n.y*e.r)/r;return i*i+a*a}function Sp(t){this._=t,this.next=null,this.previous=null}function Mp(t){if(!(i=t.length))return 0;var e,n,r,i,a,o,s,u,c,f,l;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(n=t[1],e.x=-n.r,n.x=e.r,n.y=0,!(i>2))return e.r+n.r;kp(n,e,r=t[2]),e=new Sp(e),n=new Sp(n),r=new Sp(r),e.next=r.previous=n,n.next=e.previous=r,r.next=n.previous=e;t:for(s=3;s<i;++s){kp(e._,n._,r=t[s]),r=new Sp(r),u=n.next,c=e.previous,f=n._.r,l=e._.r;do{if(f<=l){if(Ep(u._,r._)){n=u,e.next=n,n.previous=e,--s;continue t}f+=u._.r,u=u.next}else{if(Ep(c._,r._)){(e=c).next=n,n.previous=e,--s;continue t}l+=c._.r,c=c.previous}}while(u!==c.next);for(r.previous=e,r.next=n,e.next=n.previous=n=r,a=Ap(e);(r=r.next)!==n;)(o=Ap(r))<a&&(e=r,a=o);n=e.next}for(e=[n._],r=n;(r=r.next)!==n;)e.push(r._);for(r=gp(e),s=0;s<i;++s)(e=t[s]).x-=r.x,e.y-=r.y;return r.r}var Tp=function(t){return Mp(t),t};function Dp(t){return null==t?null:Cp(t)}function Cp(t){if("function"!=typeof t)throw new Error;return t}function Op(){return 0}var Rp=function(t){return function(){return t}};function Np(t){return Math.sqrt(t.value)}var Ip=function(){var t=null,e=1,n=1,r=Op;function i(i){return i.x=e/2,i.y=n/2,t?i.eachBefore(Bp(t)).eachAfter(Lp(r,.5)).eachBefore(Pp(1)):i.eachBefore(Bp(Np)).eachAfter(Lp(Op,1)).eachAfter(Lp(r,i.r/Math.min(e,n))).eachBefore(Pp(Math.min(e,n)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=Dp(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],n=+t[1],i):[e,n]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:Rp(+t),i):r},i};function Bp(t){return function(e){e.children||(e.r=Math.max(0,+t(e)||0))}}function Lp(t,e){return function(n){if(r=n.children){var r,i,a,o=r.length,s=t(n)*e||0;if(s)for(i=0;i<o;++i)r[i].r+=s;if(a=Mp(r),s)for(i=0;i<o;++i)r[i].r-=s;n.r=a+s}}}function Pp(t){return function(e){var n=e.parent;e.r*=t,n&&(e.x=n.x+t*e.x,e.y=n.y+t*e.y)}}var Fp=function(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)},qp=function(t,e,n,r,i){for(var a,o=t.children,s=-1,u=o.length,c=t.value&&(r-e)/t.value;++s<u;)(a=o[s]).y0=n,a.y1=i,a.x0=e,a.x1=e+=a.value*c},jp=function(){var t=1,e=1,n=0,r=!1;function i(i){var a=i.height+1;return i.x0=i.y0=n,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(r){r.children&&qp(r,r.x0,t*(r.depth+1)/e,r.x1,t*(r.depth+2)/e);var i=r.x0,a=r.y0,o=r.x1-n,s=r.y1-n;o<i&&(i=o=(i+o)/2),s<a&&(a=s=(a+s)/2),r.x0=i,r.y0=a,r.x1=o,r.y1=s}}(e,a)),r&&i.eachBefore(Fp),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(n){return arguments.length?(t=+n[0],e=+n[1],i):[t,e]},i.padding=function(t){return arguments.length?(n=+t,i):n},i},Up="$",zp={depth:-1},Yp={};function Hp(t){return t.id}function Vp(t){return t.parentId}var $p=function(){var t=Hp,e=Vp;function n(n){var r,i,a,o,s,u,c,f=n.length,l=new Array(f),h={};for(i=0;i<f;++i)r=n[i],s=l[i]=new dp(r),null!=(u=t(r,i,n))&&(u+="")&&(h[c=Up+(s.id=u)]=c in h?Yp:s);for(i=0;i<f;++i)if(s=l[i],null!=(u=e(n[i],i,n))&&(u+="")){if(!(o=h[Up+u]))throw new Error("missing: "+u);if(o===Yp)throw new Error("ambiguous: "+u);o.children?o.children.push(s):o.children=[s],s.parent=o}else{if(a)throw new Error("multiple roots");a=s}if(!a)throw new Error("no root");if(a.parent=zp,a.eachBefore((function(t){t.depth=t.parent.depth+1,--f})).eachBefore(hp),a.parent=null,f>0)throw new Error("cycle");return a}return n.id=function(e){return arguments.length?(t=Cp(e),n):t},n.parentId=function(t){return arguments.length?(e=Cp(t),n):e},n};function Gp(t,e){return t.parent===e.parent?1:2}function Wp(t){var e=t.children;return e?e[0]:t.t}function Kp(t){var e=t.children;return e?e[e.length-1]:t.t}function Xp(t,e,n){var r=n/(e.i-t.i);e.c-=r,e.s+=n,t.c+=r,e.z+=n,e.m+=n}function Zp(t,e,n){return t.a.parent===e.parent?t.a:n}function Jp(t,e){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=e}Jp.prototype=Object.create(dp.prototype);var Qp=function(){var t=Gp,e=1,n=1,r=null;function i(i){var u=function(t){for(var e,n,r,i,a,o=new Jp(t,0),s=[o];e=s.pop();)if(r=e._.children)for(e.children=new Array(a=r.length),i=a-1;i>=0;--i)s.push(n=e.children[i]=new Jp(r[i],i)),n.parent=e;return(o.parent=new Jp(null,0)).children=[o],o}(i);if(u.eachAfter(a),u.parent.m=-u.z,u.eachBefore(o),r)i.eachBefore(s);else{var c=i,f=i,l=i;i.eachBefore((function(t){t.x<c.x&&(c=t),t.x>f.x&&(f=t),t.depth>l.depth&&(l=t)}));var h=c===f?1:t(c,f)/2,d=h-c.x,p=e/(f.x+h+d),g=n/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function a(e){var n=e.children,r=e.parent.children,i=e.i?r[e.i-1]:null;if(n){!function(t){for(var e,n=0,r=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=n,e.m+=n,n+=e.s+(r+=e.c)}(e);var a=(n[0].z+n[n.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,n,r){if(n){for(var i,a=e,o=e,s=n,u=a.parent.children[0],c=a.m,f=o.m,l=s.m,h=u.m;s=Kp(s),a=Wp(a),s&&a;)u=Wp(u),(o=Kp(o)).a=e,(i=s.z+l-a.z-c+t(s._,a._))>0&&(Xp(Zp(s,e,r),e,i),c+=i,f+=i),l+=s.m,c+=a.m,h+=u.m,f+=o.m;s&&!Kp(o)&&(o.t=s,o.m+=l-f),a&&!Wp(u)&&(u.t=a,u.m+=c-h,r=e)}return r}(e,i,e.parent.A||r[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*n}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(r=!1,e=+t[0],n=+t[1],i):r?null:[e,n]},i.nodeSize=function(t){return arguments.length?(r=!0,e=+t[0],n=+t[1],i):r?[e,n]:null},i},tg=function(t,e,n,r,i){for(var a,o=t.children,s=-1,u=o.length,c=t.value&&(i-n)/t.value;++s<u;)(a=o[s]).x0=e,a.x1=r,a.y0=n,a.y1=n+=a.value*c},eg=(1+Math.sqrt(5))/2;function ng(t,e,n,r,i,a){for(var o,s,u,c,f,l,h,d,p,g,y,b=[],m=e.children,v=0,_=0,w=m.length,x=e.value;v<w;){u=i-n,c=a-r;do{f=m[_++].value}while(!f&&_<w);for(l=h=f,y=f*f*(g=Math.max(c/u,u/c)/(x*t)),p=Math.max(h/y,y/l);_<w;++_){if(f+=s=m[_].value,s<l&&(l=s),s>h&&(h=s),y=f*f*g,(d=Math.max(h/y,y/l))>p){f-=s;break}p=d}b.push(o={value:f,dice:u<c,children:m.slice(v,_)}),o.dice?qp(o,n,r,i,x?r+=c*f/x:a):tg(o,n,r,x?n+=u*f/x:i,a),x-=f,v=_}return b}var rg=function t(e){function n(t,n,r,i,a){ng(e,t,n,r,i,a)}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(eg),ig=function(){var t=rg,e=!1,n=1,r=1,i=[0],a=Op,o=Op,s=Op,u=Op,c=Op;function f(t){return t.x0=t.y0=0,t.x1=n,t.y1=r,t.eachBefore(l),i=[0],e&&t.eachBefore(Fp),t}function l(e){var n=i[e.depth],r=e.x0+n,f=e.y0+n,l=e.x1-n,h=e.y1-n;l<r&&(r=l=(r+l)/2),h<f&&(f=h=(f+h)/2),e.x0=r,e.y0=f,e.x1=l,e.y1=h,e.children&&(n=i[e.depth+1]=a(e)/2,r+=c(e)-n,f+=o(e)-n,(l-=s(e)-n)<r&&(r=l=(r+l)/2),(h-=u(e)-n)<f&&(f=h=(f+h)/2),t(e,r,f,l,h))}return f.round=function(t){return arguments.length?(e=!!t,f):e},f.size=function(t){return arguments.length?(n=+t[0],r=+t[1],f):[n,r]},f.tile=function(e){return arguments.length?(t=Cp(e),f):t},f.padding=function(t){return arguments.length?f.paddingInner(t).paddingOuter(t):f.paddingInner()},f.paddingInner=function(t){return arguments.length?(a="function"==typeof t?t:Rp(+t),f):a},f.paddingOuter=function(t){return arguments.length?f.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):f.paddingTop()},f.paddingTop=function(t){return arguments.length?(o="function"==typeof t?t:Rp(+t),f):o},f.paddingRight=function(t){return arguments.length?(s="function"==typeof t?t:Rp(+t),f):s},f.paddingBottom=function(t){return arguments.length?(u="function"==typeof t?t:Rp(+t),f):u},f.paddingLeft=function(t){return arguments.length?(c="function"==typeof t?t:Rp(+t),f):c},f},ag=function(t,e,n,r,i){var a,o,s=t.children,u=s.length,c=new Array(u+1);for(c[0]=o=a=0;a<u;++a)c[a+1]=o+=s[a].value;!function t(e,n,r,i,a,o,u){if(e>=n-1){var f=s[e];return f.x0=i,f.y0=a,f.x1=o,void(f.y1=u)}var l=c[e],h=r/2+l,d=e+1,p=n-1;for(;d<p;){var g=d+p>>>1;c[g]<h?d=g+1:p=g}h-c[d-1]<c[d]-h&&e+1<d&&--d;var y=c[d]-l,b=r-y;if(o-i>u-a){var m=(i*b+o*y)/r;t(e,d,y,i,a,m,u),t(d,n,b,m,a,o,u)}else{var v=(a*b+u*y)/r;t(e,d,y,i,a,o,v),t(d,n,b,i,v,o,u)}}(0,u,t.value,e,n,r,i)},og=function(t,e,n,r,i){(1&t.depth?tg:qp)(t,e,n,r,i)},sg=function t(e){function n(t,n,r,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,u,c,f,l=-1,h=o.length,d=t.value;++l<h;){for(u=(s=o[l]).children,c=s.value=0,f=u.length;c<f;++c)s.value+=u[c].value;s.dice?qp(s,n,r,i,r+=(a-r)*s.value/d):tg(s,n,r,n+=(i-n)*s.value/d,a),d-=s.value}else t._squarify=o=ng(e,t,n,r,i,a),o.ratio=e}return n.ratio=function(e){return t((e=+e)>1?e:1)},n}(eg),ug=function(t){for(var e,n=-1,r=t.length,i=t[r-1],a=0;++n<r;)e=i,i=t[n],a+=e[1]*i[0]-e[0]*i[1];return a/2},cg=function(t){for(var e,n,r=-1,i=t.length,a=0,o=0,s=t[i-1],u=0;++r<i;)e=s,s=t[r],u+=n=e[0]*s[1]-s[0]*e[1],a+=(e[0]+s[0])*n,o+=(e[1]+s[1])*n;return[a/(u*=3),o/u]},fg=function(t,e,n){return(e[0]-t[0])*(n[1]-t[1])-(e[1]-t[1])*(n[0]-t[0])};function lg(t,e){return t[0]-e[0]||t[1]-e[1]}function hg(t){for(var e=t.length,n=[0,1],r=2,i=2;i<e;++i){for(;r>1&&fg(t[n[r-2]],t[n[r-1]],t[i])<=0;)--r;n[r++]=i}return n.slice(0,r)}var dg=function(t){if((n=t.length)<3)return null;var e,n,r=new Array(n),i=new Array(n);for(e=0;e<n;++e)r[e]=[+t[e][0],+t[e][1],e];for(r.sort(lg),e=0;e<n;++e)i[e]=[r[e][0],-r[e][1]];var a=hg(r),o=hg(i),s=o[0]===a[0],u=o[o.length-1]===a[a.length-1],c=[];for(e=a.length-1;e>=0;--e)c.push(t[r[a[e]][2]]);for(e=+s;e<o.length-u;++e)c.push(t[r[o[e]][2]]);return c},pg=function(t,e){for(var n,r,i=t.length,a=t[i-1],o=e[0],s=e[1],u=a[0],c=a[1],f=!1,l=0;l<i;++l)n=(a=t[l])[0],(r=a[1])>s!=c>s&&o<(u-n)*(s-r)/(c-r)+n&&(f=!f),u=n,c=r;return f},gg=function(t){for(var e,n,r=-1,i=t.length,a=t[i-1],o=a[0],s=a[1],u=0;++r<i;)e=o,n=s,e-=o=(a=t[r])[0],n-=s=a[1],u+=Math.sqrt(e*e+n*n);return u},yg=function(){return Math.random()},bg=function t(e){function n(t,n){return t=null==t?0:+t,n=null==n?1:+n,1===arguments.length?(n=t,t=0):n-=t,function(){return e()*n+t}}return n.source=t,n}(yg),mg=function t(e){function n(t,n){var r,i;return t=null==t?0:+t,n=null==n?1:+n,function(){var a;if(null!=r)a=r,r=null;else do{r=2*e()-1,a=2*e()-1,i=r*r+a*a}while(!i||i>1);return t+n*a*Math.sqrt(-2*Math.log(i)/i)}}return n.source=t,n}(yg),vg=function t(e){function n(){var t=mg.source(e).apply(this,arguments);return function(){return Math.exp(t())}}return n.source=t,n}(yg),_g=function t(e){function n(t){return function(){for(var n=0,r=0;r<t;++r)n+=e();return n}}return n.source=t,n}(yg),wg=function t(e){function n(t){var n=_g.source(e)(t);return function(){return n()/t}}return n.source=t,n}(yg),xg=function t(e){function n(t){return function(){return-Math.log(1-e())/t}}return n.source=t,n}(yg);function kg(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function Eg(t,e){switch(arguments.length){case 0:break;case 1:this.interpolator(t);break;default:this.interpolator(e).domain(t)}return this}var Ag=Array.prototype,Sg=Ag.map,Mg=Ag.slice,Tg={name:"implicit"};function Dg(){var t=Wo(),e=[],n=[],r=Tg;function i(i){var a=i+"",o=t.get(a);if(!o){if(r!==Tg)return r;t.set(a,o=e.push(i))}return n[(o-1)%n.length]}return i.domain=function(n){if(!arguments.length)return e.slice();e=[],t=Wo();for(var r,a,o=-1,s=n.length;++o<s;)t.has(a=(r=n[o])+"")||t.set(a,e.push(r));return i},i.range=function(t){return arguments.length?(n=Mg.call(t),i):n.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return Dg(e,n).unknown(r)},kg.apply(i,arguments),i}function Cg(){var t,e,n=Dg().unknown(void 0),r=n.domain,i=n.range,a=[0,1],o=!1,s=0,u=0,c=.5;function f(){var n=r().length,f=a[1]<a[0],l=a[f-0],h=a[1-f];t=(h-l)/Math.max(1,n-s+2*u),o&&(t=Math.floor(t)),l+=(h-l-t*(n-s))*c,e=t*(1-s),o&&(l=Math.round(l),e=Math.round(e));var d=x(n).map((function(e){return l+t*e}));return i(f?d.reverse():d)}return delete n.unknown,n.domain=function(t){return arguments.length?(r(t),f()):r()},n.range=function(t){return arguments.length?(a=[+t[0],+t[1]],f()):a.slice()},n.rangeRound=function(t){return a=[+t[0],+t[1]],o=!0,f()},n.bandwidth=function(){return e},n.step=function(){return t},n.round=function(t){return arguments.length?(o=!!t,f()):o},n.padding=function(t){return arguments.length?(s=Math.min(1,u=+t),f()):s},n.paddingInner=function(t){return arguments.length?(s=Math.min(1,t),f()):s},n.paddingOuter=function(t){return arguments.length?(u=+t,f()):u},n.align=function(t){return arguments.length?(c=Math.max(0,Math.min(1,t)),f()):c},n.copy=function(){return Cg(r(),a).round(o).paddingInner(s).paddingOuter(u).align(c)},kg.apply(f(),arguments)}function Og(){return function t(e){var n=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return t(n())},e}(Cg.apply(null,arguments).paddingInner(1))}var Rg=function(t){return function(){return t}},Ng=function(t){return+t},Ig=[0,1];function Bg(t){return t}function Lg(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Rg(isNaN(e)?NaN:.5)}function Pg(t){var e,n=t[0],r=t[t.length-1];return n>r&&(e=n,n=r,r=e),function(t){return Math.max(n,Math.min(r,t))}}function Fg(t,e,n){var r=t[0],i=t[1],a=e[0],o=e[1];return i<r?(r=Lg(i,r),a=n(o,a)):(r=Lg(r,i),a=n(a,o)),function(t){return a(r(t))}}function qg(t,e,n){var r=Math.min(t.length,e.length)-1,i=new Array(r),a=new Array(r),o=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++o<r;)i[o]=Lg(t[o],t[o+1]),a[o]=n(e[o],e[o+1]);return function(e){var n=u(t,e,1,r)-1;return a[n](i[n](e))}}function jg(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ug(){var t,e,n,r,i,a,o=Ig,s=Ig,u=Xn,c=Bg;function f(){return r=Math.min(o.length,s.length)>2?qg:Fg,i=a=null,l}function l(e){return isNaN(e=+e)?n:(i||(i=r(o.map(t),s,u)))(t(c(e)))}return l.invert=function(n){return c(e((a||(a=r(s,o.map(t),Un)))(n)))},l.domain=function(t){return arguments.length?(o=Sg.call(t,Ng),c===Bg||(c=Pg(o)),f()):o.slice()},l.range=function(t){return arguments.length?(s=Mg.call(t),f()):s.slice()},l.rangeRound=function(t){return s=Mg.call(t),u=Qn,f()},l.clamp=function(t){return arguments.length?(c=t?Pg(o):Bg,l):c!==Bg},l.interpolate=function(t){return arguments.length?(u=t,f()):u},l.unknown=function(t){return arguments.length?(n=t,l):n},function(n,r){return t=n,e=r,f()}}function zg(t,e){return Ug()(t,e)}var Yg=function(t,e,n,r){var i,a=T(t,e,n);switch((r=Fu(null==r?",f":r)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=r.precision||isNaN(i=Qu(a,o))||(r.precision=i),Yu(r,o);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=tc(a,Math.max(Math.abs(t),Math.abs(e))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=Ju(a))||(r.precision=i-2*("%"===r.type))}return zu(r)};function Hg(t){var e=t.domain;return t.ticks=function(t){var n=e();return S(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var r=e();return Yg(r[0],r[r.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var r,i=e(),a=0,o=i.length-1,s=i[a],u=i[o];return u<s&&(r=s,s=u,u=r,r=a,a=o,o=r),(r=M(s,u,n))>0?r=M(s=Math.floor(s/r)*r,u=Math.ceil(u/r)*r,n):r<0&&(r=M(s=Math.ceil(s*r)/r,u=Math.floor(u*r)/r,n)),r>0?(i[a]=Math.floor(s/r)*r,i[o]=Math.ceil(u/r)*r,e(i)):r<0&&(i[a]=Math.ceil(s*r)/r,i[o]=Math.floor(u*r)/r,e(i)),t},t}function Vg(){var t=zg(Bg,Bg);return t.copy=function(){return jg(t,Vg())},kg.apply(t,arguments),Hg(t)}function $g(t){var e;function n(t){return isNaN(t=+t)?e:t}return n.invert=n,n.domain=n.range=function(e){return arguments.length?(t=Sg.call(e,Ng),n):t.slice()},n.unknown=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return $g(t).unknown(e)},t=arguments.length?Sg.call(t,Ng):[0,1],Hg(n)}var Gg=function(t,e){var n,r=0,i=(t=t.slice()).length-1,a=t[r],o=t[i];return o<a&&(n=r,r=i,i=n,n=a,a=o,o=n),t[r]=e.floor(a),t[i]=e.ceil(o),t};function Wg(t){return Math.log(t)}function Kg(t){return Math.exp(t)}function Xg(t){return-Math.log(-t)}function Zg(t){return-Math.exp(-t)}function Jg(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Qg(t){return function(e){return-t(-e)}}function ty(t){var e,n,r=t(Wg,Kg),i=r.domain,a=10;function o(){return e=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(e){return Math.log(e)/t})}(a),n=function(t){return 10===t?Jg:t===Math.E?Math.exp:function(e){return Math.pow(t,e)}}(a),i()[0]<0?(e=Qg(e),n=Qg(n),t(Xg,Zg)):t(Wg,Kg),r}return r.base=function(t){return arguments.length?(a=+t,o()):a},r.domain=function(t){return arguments.length?(i(t),o()):i()},r.ticks=function(t){var r,o=i(),s=o[0],u=o[o.length-1];(r=u<s)&&(h=s,s=u,u=h);var c,f,l,h=e(s),d=e(u),p=null==t?10:+t,g=[];if(!(a%1)&&d-h<p){if(h=Math.round(h)-1,d=Math.round(d)+1,s>0){for(;h<d;++h)for(f=1,c=n(h);f<a;++f)if(!((l=c*f)<s)){if(l>u)break;g.push(l)}}else for(;h<d;++h)for(f=a-1,c=n(h);f>=1;--f)if(!((l=c*f)<s)){if(l>u)break;g.push(l)}}else g=S(h,d,Math.min(d-h,p)).map(n);return r?g.reverse():g},r.tickFormat=function(t,i){if(null==i&&(i=10===a?".0e":","),"function"!=typeof i&&(i=zu(i)),t===1/0)return i;null==t&&(t=10);var o=Math.max(1,a*t/r.ticks().length);return function(t){var r=t/n(Math.round(e(t)));return r*a<a-.5&&(r*=a),r<=o?i(t):""}},r.nice=function(){return i(Gg(i(),{floor:function(t){return n(Math.floor(e(t)))},ceil:function(t){return n(Math.ceil(e(t)))}}))},r}function ey(){var t=ty(Ug()).domain([1,10]);return t.copy=function(){return jg(t,ey()).base(t.base())},kg.apply(t,arguments),t}function ny(t){return function(e){return Math.sign(e)*Math.log1p(Math.abs(e/t))}}function ry(t){return function(e){return Math.sign(e)*Math.expm1(Math.abs(e))*t}}function iy(t){var e=1,n=t(ny(e),ry(e));return n.constant=function(n){return arguments.length?t(ny(e=+n),ry(e)):e},Hg(n)}function ay(){var t=iy(Ug());return t.copy=function(){return jg(t,ay()).constant(t.constant())},kg.apply(t,arguments)}function oy(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function sy(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function uy(t){return t<0?-t*t:t*t}function cy(t){var e=t(Bg,Bg),n=1;function r(){return 1===n?t(Bg,Bg):.5===n?t(sy,uy):t(oy(n),oy(1/n))}return e.exponent=function(t){return arguments.length?(n=+t,r()):n},Hg(e)}function fy(){var t=cy(Ug());return t.copy=function(){return jg(t,fy()).exponent(t.exponent())},kg.apply(t,arguments),t}function ly(){return fy.apply(null,arguments).exponent(.5)}function hy(){var t,e=[],n=[],i=[];function a(){var t=0,r=Math.max(1,n.length);for(i=new Array(r-1);++t<r;)i[t-1]=O(e,t/r);return o}function o(e){return isNaN(e=+e)?t:n[u(i,e)]}return o.invertExtent=function(t){var r=n.indexOf(t);return r<0?[NaN,NaN]:[r>0?i[r-1]:e[0],r<i.length?i[r]:e[e.length-1]]},o.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var n,i=0,o=t.length;i<o;++i)null==(n=t[i])||isNaN(n=+n)||e.push(n);return e.sort(r),a()},o.range=function(t){return arguments.length?(n=Mg.call(t),a()):n.slice()},o.unknown=function(e){return arguments.length?(t=e,o):t},o.quantiles=function(){return i.slice()},o.copy=function(){return hy().domain(e).range(n).unknown(t)},kg.apply(o,arguments)}function dy(){var t,e=0,n=1,r=1,i=[.5],a=[0,1];function o(e){return e<=e?a[u(i,e,0,r)]:t}function s(){var t=-1;for(i=new Array(r);++t<r;)i[t]=((t+1)*n-(t-r)*e)/(r+1);return o}return o.domain=function(t){return arguments.length?(e=+t[0],n=+t[1],s()):[e,n]},o.range=function(t){return arguments.length?(r=(a=Mg.call(t)).length-1,s()):a.slice()},o.invertExtent=function(t){var o=a.indexOf(t);return o<0?[NaN,NaN]:o<1?[e,i[0]]:o>=r?[i[r-1],n]:[i[o-1],i[o]]},o.unknown=function(e){return arguments.length?(t=e,o):o},o.thresholds=function(){return i.slice()},o.copy=function(){return dy().domain([e,n]).range(a).unknown(t)},kg.apply(Hg(o),arguments)}function py(){var t,e=[.5],n=[0,1],r=1;function i(i){return i<=i?n[u(e,i,0,r)]:t}return i.domain=function(t){return arguments.length?(e=Mg.call(t),r=Math.min(e.length,n.length-1),i):e.slice()},i.range=function(t){return arguments.length?(n=Mg.call(t),r=Math.min(e.length,n.length-1),i):n.slice()},i.invertExtent=function(t){var r=n.indexOf(t);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return py().domain(e).range(n).unknown(t)},kg.apply(i,arguments)}var gy=new Date,yy=new Date;function by(t,e,n,r){function i(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return i.floor=function(e){return t(e=new Date(+e)),e},i.ceil=function(n){return t(n=new Date(n-1)),e(n,1),t(n),n},i.round=function(t){var e=i(t),n=i.ceil(t);return t-e<n-t?e:n},i.offset=function(t,n){return e(t=new Date(+t),null==n?1:Math.floor(n)),t},i.range=function(n,r,a){var o,s=[];if(n=i.ceil(n),a=null==a?1:Math.floor(a),!(n<r&&a>0))return s;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<r);return s},i.filter=function(n){return by((function(e){if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;e(t,-1),!n(t););else for(;--r>=0;)for(;e(t,1),!n(t););}))},n&&(i.count=function(e,r){return gy.setTime(+e),yy.setTime(+r),t(gy),t(yy),Math.floor(n(gy,yy))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(e){return r(e)%t==0}:function(e){return i.count(0,e)%t==0}):i:null}),i}var my=by((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));my.every=function(t){return isFinite(t=Math.floor(t))&&t>0?by((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,n){e.setFullYear(e.getFullYear()+n*t)})):null};var vy=my,_y=my.range,wy=by((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),xy=wy,ky=wy.range,Ey=6e4,Ay=6048e5;function Sy(t){return by((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ey)/Ay}))}var My=Sy(0),Ty=Sy(1),Dy=Sy(2),Cy=Sy(3),Oy=Sy(4),Ry=Sy(5),Ny=Sy(6),Iy=My.range,By=Ty.range,Ly=Dy.range,Py=Cy.range,Fy=Oy.range,qy=Ry.range,jy=Ny.range,Uy=by((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ey)/864e5}),(function(t){return t.getDate()-1})),zy=Uy,Yy=Uy.range,Hy=by((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-t.getMinutes()*Ey)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getHours()})),Vy=Hy,$y=Hy.range,Gy=by((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,e){t.setTime(+t+e*Ey)}),(function(t,e){return(e-t)/Ey}),(function(t){return t.getMinutes()})),Wy=Gy,Ky=Gy.range,Xy=by((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+1e3*e)}),(function(t,e){return(e-t)/1e3}),(function(t){return t.getUTCSeconds()})),Zy=Xy,Jy=Xy.range,Qy=by((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));Qy.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?by((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,n){e.setTime(+e+n*t)}),(function(e,n){return(n-e)/t})):Qy:null};var tb=Qy,eb=Qy.range;function nb(t){return by((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/Ay}))}var rb=nb(0),ib=nb(1),ab=nb(2),ob=nb(3),sb=nb(4),ub=nb(5),cb=nb(6),fb=rb.range,lb=ib.range,hb=ab.range,db=ob.range,pb=sb.range,gb=ub.range,yb=cb.range,bb=by((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/864e5}),(function(t){return t.getUTCDate()-1})),mb=bb,vb=bb.range,_b=by((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));_b.every=function(t){return isFinite(t=Math.floor(t))&&t>0?by((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,n){e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null};var wb=_b,xb=_b.range;function kb(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Eb(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function Ab(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function Sb(t){var e=t.dateTime,n=t.date,r=t.time,i=t.periods,a=t.days,o=t.shortDays,s=t.months,u=t.shortMonths,c=Fb(i),f=qb(i),l=Fb(a),h=qb(a),d=Fb(o),p=qb(o),g=Fb(s),y=qb(s),b=Fb(u),m=qb(u),v={a:function(t){return o[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return u[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:am,e:am,f:fm,H:om,I:sm,j:um,L:cm,m:lm,M:hm,p:function(t){return i[+(t.getHours()>=12)]},Q:jm,s:Um,S:dm,u:pm,U:gm,V:ym,w:bm,W:mm,x:null,X:null,y:vm,Y:_m,Z:wm,"%":qm},_={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return u[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:xm,e:xm,f:Mm,H:km,I:Em,j:Am,L:Sm,m:Tm,M:Dm,p:function(t){return i[+(t.getUTCHours()>=12)]},Q:jm,s:Um,S:Cm,u:Om,U:Rm,V:Nm,w:Im,W:Bm,x:null,X:null,y:Lm,Y:Pm,Z:Fm,"%":qm},w={a:function(t,e,n){var r=d.exec(e.slice(n));return r?(t.w=p[r[0].toLowerCase()],n+r[0].length):-1},A:function(t,e,n){var r=l.exec(e.slice(n));return r?(t.w=h[r[0].toLowerCase()],n+r[0].length):-1},b:function(t,e,n){var r=b.exec(e.slice(n));return r?(t.m=m[r[0].toLowerCase()],n+r[0].length):-1},B:function(t,e,n){var r=g.exec(e.slice(n));return r?(t.m=y[r[0].toLowerCase()],n+r[0].length):-1},c:function(t,n,r){return E(t,e,n,r)},d:Kb,e:Kb,f:em,H:Zb,I:Zb,j:Xb,L:tm,m:Wb,M:Jb,p:function(t,e,n){var r=c.exec(e.slice(n));return r?(t.p=f[r[0].toLowerCase()],n+r[0].length):-1},Q:rm,s:im,S:Qb,u:Ub,U:zb,V:Yb,w:jb,W:Hb,x:function(t,e,r){return E(t,n,e,r)},X:function(t,e,n){return E(t,r,e,n)},y:$b,Y:Vb,Z:Gb,"%":nm};function x(t,e){return function(n){var r,i,a,o=[],s=-1,u=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++s<c;)37===t.charCodeAt(s)&&(o.push(t.slice(u,s)),null!=(i=Rb[r=t.charAt(++s)])?r=t.charAt(++s):i="e"===r?" ":"0",(a=e[r])&&(r=a(n,i)),o.push(r),u=s+1);return o.push(t.slice(u,s)),o.join("")}}function k(t,e){return function(n){var r,i,a=Ab(1900);if(E(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("p"in a&&(a.H=a.H%12+12*a.p),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(i=(r=Eb(Ab(a.y))).getUTCDay(),r=i>4||0===i?ib.ceil(r):ib(r),r=mb.offset(r,7*(a.V-1)),a.y=r.getUTCFullYear(),a.m=r.getUTCMonth(),a.d=r.getUTCDate()+(a.w+6)%7):(i=(r=e(Ab(a.y))).getDay(),r=i>4||0===i?Ty.ceil(r):Ty(r),r=zy.offset(r,7*(a.V-1)),a.y=r.getFullYear(),a.m=r.getMonth(),a.d=r.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),i="Z"in a?Eb(Ab(a.y)).getUTCDay():e(Ab(a.y)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(i+5)%7:a.w+7*a.U-(i+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Eb(a)):e(a)}}function E(t,e,n,r){for(var i,a,o=0,s=e.length,u=n.length;o<s;){if(r>=u)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=w[i in Rb?e.charAt(o++):i])||(r=a(t,n,r))<0)return-1}else if(i!=n.charCodeAt(r++))return-1}return r}return(v.x=x(n,v),v.X=x(r,v),v.c=x(e,v),_.x=x(n,_),_.X=x(r,_),_.c=x(e,_),{format:function(t){var e=x(t+="",v);return e.toString=function(){return t},e},parse:function(t){var e=k(t+="",kb);return e.toString=function(){return t},e},utcFormat:function(t){var e=x(t+="",_);return e.toString=function(){return t},e},utcParse:function(t){var e=k(t,Eb);return e.toString=function(){return t},e}})}var Mb,Tb,Db,Cb,Ob,Rb={"-":"",_:" ",0:"0"},Nb=/^\s*\d+/,Ib=/^%/,Bb=/[\\^$*+?|[\]().{}]/g;function Lb(t,e,n){var r=t<0?"-":"",i=(r?-t:t)+"",a=i.length;return r+(a<n?new Array(n-a+1).join(e)+i:i)}function Pb(t){return t.replace(Bb,"\\$&")}function Fb(t){return new RegExp("^(?:"+t.map(Pb).join("|")+")","i")}function qb(t){for(var e={},n=-1,r=t.length;++n<r;)e[t[n].toLowerCase()]=n;return e}function jb(t,e,n){var r=Nb.exec(e.slice(n,n+1));return r?(t.w=+r[0],n+r[0].length):-1}function Ub(t,e,n){var r=Nb.exec(e.slice(n,n+1));return r?(t.u=+r[0],n+r[0].length):-1}function zb(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.U=+r[0],n+r[0].length):-1}function Yb(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.V=+r[0],n+r[0].length):-1}function Hb(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.W=+r[0],n+r[0].length):-1}function Vb(t,e,n){var r=Nb.exec(e.slice(n,n+4));return r?(t.y=+r[0],n+r[0].length):-1}function $b(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Gb(t,e,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Wb(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.m=r[0]-1,n+r[0].length):-1}function Kb(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.d=+r[0],n+r[0].length):-1}function Xb(t,e,n){var r=Nb.exec(e.slice(n,n+3));return r?(t.m=0,t.d=+r[0],n+r[0].length):-1}function Zb(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.H=+r[0],n+r[0].length):-1}function Jb(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.M=+r[0],n+r[0].length):-1}function Qb(t,e,n){var r=Nb.exec(e.slice(n,n+2));return r?(t.S=+r[0],n+r[0].length):-1}function tm(t,e,n){var r=Nb.exec(e.slice(n,n+3));return r?(t.L=+r[0],n+r[0].length):-1}function em(t,e,n){var r=Nb.exec(e.slice(n,n+6));return r?(t.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function nm(t,e,n){var r=Ib.exec(e.slice(n,n+1));return r?n+r[0].length:-1}function rm(t,e,n){var r=Nb.exec(e.slice(n));return r?(t.Q=+r[0],n+r[0].length):-1}function im(t,e,n){var r=Nb.exec(e.slice(n));return r?(t.Q=1e3*+r[0],n+r[0].length):-1}function am(t,e){return Lb(t.getDate(),e,2)}function om(t,e){return Lb(t.getHours(),e,2)}function sm(t,e){return Lb(t.getHours()%12||12,e,2)}function um(t,e){return Lb(1+zy.count(vy(t),t),e,3)}function cm(t,e){return Lb(t.getMilliseconds(),e,3)}function fm(t,e){return cm(t,e)+"000"}function lm(t,e){return Lb(t.getMonth()+1,e,2)}function hm(t,e){return Lb(t.getMinutes(),e,2)}function dm(t,e){return Lb(t.getSeconds(),e,2)}function pm(t){var e=t.getDay();return 0===e?7:e}function gm(t,e){return Lb(My.count(vy(t),t),e,2)}function ym(t,e){var n=t.getDay();return t=n>=4||0===n?Oy(t):Oy.ceil(t),Lb(Oy.count(vy(t),t)+(4===vy(t).getDay()),e,2)}function bm(t){return t.getDay()}function mm(t,e){return Lb(Ty.count(vy(t),t),e,2)}function vm(t,e){return Lb(t.getFullYear()%100,e,2)}function _m(t,e){return Lb(t.getFullYear()%1e4,e,4)}function wm(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Lb(e/60|0,"0",2)+Lb(e%60,"0",2)}function xm(t,e){return Lb(t.getUTCDate(),e,2)}function km(t,e){return Lb(t.getUTCHours(),e,2)}function Em(t,e){return Lb(t.getUTCHours()%12||12,e,2)}function Am(t,e){return Lb(1+mb.count(wb(t),t),e,3)}function Sm(t,e){return Lb(t.getUTCMilliseconds(),e,3)}function Mm(t,e){return Sm(t,e)+"000"}function Tm(t,e){return Lb(t.getUTCMonth()+1,e,2)}function Dm(t,e){return Lb(t.getUTCMinutes(),e,2)}function Cm(t,e){return Lb(t.getUTCSeconds(),e,2)}function Om(t){var e=t.getUTCDay();return 0===e?7:e}function Rm(t,e){return Lb(rb.count(wb(t),t),e,2)}function Nm(t,e){var n=t.getUTCDay();return t=n>=4||0===n?sb(t):sb.ceil(t),Lb(sb.count(wb(t),t)+(4===wb(t).getUTCDay()),e,2)}function Im(t){return t.getUTCDay()}function Bm(t,e){return Lb(ib.count(wb(t),t),e,2)}function Lm(t,e){return Lb(t.getUTCFullYear()%100,e,2)}function Pm(t,e){return Lb(t.getUTCFullYear()%1e4,e,4)}function Fm(){return"+0000"}function qm(){return"%"}function jm(t){return+t}function Um(t){return Math.floor(+t/1e3)}function zm(t){return Mb=Sb(t),Tb=Mb.format,Db=Mb.parse,Cb=Mb.utcFormat,Ob=Mb.utcParse,Mb}zm({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"]});var Ym=Date.prototype.toISOString?function(t){return t.toISOString()}:Cb("%Y-%m-%dT%H:%M:%S.%LZ");var Hm=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:Ob("%Y-%m-%dT%H:%M:%S.%LZ"),Vm=1e3,$m=60*Vm,Gm=60*$m,Wm=24*Gm,Km=7*Wm,Xm=30*Wm,Zm=365*Wm;function Jm(t){return new Date(t)}function Qm(t){return t instanceof Date?+t:+new Date(+t)}function tv(t,e,n,r,a,o,s,u,c){var f=zg(Bg,Bg),l=f.invert,h=f.domain,d=c(".%L"),p=c(":%S"),g=c("%I:%M"),y=c("%I %p"),b=c("%a %d"),m=c("%b %d"),v=c("%B"),_=c("%Y"),w=[[s,1,Vm],[s,5,5*Vm],[s,15,15*Vm],[s,30,30*Vm],[o,1,$m],[o,5,5*$m],[o,15,15*$m],[o,30,30*$m],[a,1,Gm],[a,3,3*Gm],[a,6,6*Gm],[a,12,12*Gm],[r,1,Wm],[r,2,2*Wm],[n,1,Km],[e,1,Xm],[e,3,3*Xm],[t,1,Zm]];function x(i){return(s(i)<i?d:o(i)<i?p:a(i)<i?g:r(i)<i?y:e(i)<i?n(i)<i?b:m:t(i)<i?v:_)(i)}function k(e,n,r,a){if(null==e&&(e=10),"number"==typeof e){var o=Math.abs(r-n)/e,s=i((function(t){return t[2]})).right(w,o);s===w.length?(a=T(n/Zm,r/Zm,e),e=t):s?(a=(s=w[o/w[s-1][2]<w[s][2]/o?s-1:s])[1],e=s[0]):(a=Math.max(T(n,r,e),1),e=u)}return null==a?e:e.every(a)}return f.invert=function(t){return new Date(l(t))},f.domain=function(t){return arguments.length?h(Sg.call(t,Qm)):h().map(Jm)},f.ticks=function(t,e){var n,r=h(),i=r[0],a=r[r.length-1],o=a<i;return o&&(n=i,i=a,a=n),n=(n=k(t,i,a,e))?n.range(i,a+1):[],o?n.reverse():n},f.tickFormat=function(t,e){return null==e?x:c(e)},f.nice=function(t,e){var n=h();return(t=k(t,n[0],n[n.length-1],e))?h(Gg(n,t)):f},f.copy=function(){return jg(f,tv(t,e,n,r,a,o,s,u,c))},f}var ev=function(){return kg.apply(tv(vy,xy,My,zy,Vy,Wy,Zy,tb,Tb).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},nv=by((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),rv=nv,iv=nv.range,av=by((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+36e5*e)}),(function(t,e){return(e-t)/36e5}),(function(t){return t.getUTCHours()})),ov=av,sv=av.range,uv=by((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*Ey)}),(function(t,e){return(e-t)/Ey}),(function(t){return t.getUTCMinutes()})),cv=uv,fv=uv.range,lv=function(){return kg.apply(tv(wb,rv,rb,mb,ov,cv,Zy,tb,Cb).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)};function hv(){var t,e,n,r,i,a=0,o=1,s=Bg,u=!1;function c(e){return isNaN(e=+e)?i:s(0===n?.5:(e=(r(e)-t)*n,u?Math.max(0,Math.min(1,e)):e))}return c.domain=function(i){return arguments.length?(t=r(a=+i[0]),e=r(o=+i[1]),n=t===e?0:1/(e-t),c):[a,o]},c.clamp=function(t){return arguments.length?(u=!!t,c):u},c.interpolator=function(t){return arguments.length?(s=t,c):s},c.unknown=function(t){return arguments.length?(i=t,c):i},function(i){return r=i,t=i(a),e=i(o),n=t===e?0:1/(e-t),c}}function dv(t,e){return e.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function pv(){var t=Hg(hv()(Bg));return t.copy=function(){return dv(t,pv())},Eg.apply(t,arguments)}function gv(){var t=ty(hv()).domain([1,10]);return t.copy=function(){return dv(t,gv()).base(t.base())},Eg.apply(t,arguments)}function yv(){var t=iy(hv());return t.copy=function(){return dv(t,yv()).constant(t.constant())},Eg.apply(t,arguments)}function bv(){var t=cy(hv());return t.copy=function(){return dv(t,bv()).exponent(t.exponent())},Eg.apply(t,arguments)}function mv(){return bv.apply(null,arguments).exponent(.5)}function vv(){var t=[],e=Bg;function n(n){if(!isNaN(n=+n))return e((u(t,n)-1)/(t.length-1))}return n.domain=function(e){if(!arguments.length)return t.slice();t=[];for(var i,a=0,o=e.length;a<o;++a)null==(i=e[a])||isNaN(i=+i)||t.push(i);return t.sort(r),n},n.interpolator=function(t){return arguments.length?(e=t,n):e},n.copy=function(){return vv(e).domain(t)},Eg.apply(n,arguments)}function _v(){var t,e,n,r,i,a,o,s=0,u=.5,c=1,f=Bg,l=!1;function h(t){return isNaN(t=+t)?o:(t=.5+((t=+a(t))-e)*(t<e?r:i),f(l?Math.max(0,Math.min(1,t)):t))}return h.domain=function(o){return arguments.length?(t=a(s=+o[0]),e=a(u=+o[1]),n=a(c=+o[2]),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),h):[s,u,c]},h.clamp=function(t){return arguments.length?(l=!!t,h):l},h.interpolator=function(t){return arguments.length?(f=t,h):f},h.unknown=function(t){return arguments.length?(o=t,h):o},function(o){return a=o,t=o(s),e=o(u),n=o(c),r=t===e?0:.5/(e-t),i=e===n?0:.5/(n-e),h}}function wv(){var t=Hg(_v()(Bg));return t.copy=function(){return dv(t,wv())},Eg.apply(t,arguments)}function xv(){var t=ty(_v()).domain([.1,1,10]);return t.copy=function(){return dv(t,xv()).base(t.base())},Eg.apply(t,arguments)}function kv(){var t=iy(_v());return t.copy=function(){return dv(t,kv()).constant(t.constant())},Eg.apply(t,arguments)}function Ev(){var t=cy(_v());return t.copy=function(){return dv(t,Ev()).exponent(t.exponent())},Eg.apply(t,arguments)}function Av(){return Ev.apply(null,arguments).exponent(.5)}var Sv=function(t){for(var e=t.length/6|0,n=new Array(e),r=0;r<e;)n[r]="#"+t.slice(6*r,6*++r);return n},Mv=Sv("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),Tv=Sv("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),Dv=Sv("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),Cv=Sv("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),Ov=Sv("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),Rv=Sv("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),Nv=Sv("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),Iv=Sv("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),Bv=Sv("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),Lv=Sv("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),Pv=function(t){return Pn(t[t.length-1])},Fv=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(Sv),qv=Pv(Fv),jv=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(Sv),Uv=Pv(jv),zv=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(Sv),Yv=Pv(zv),Hv=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(Sv),Vv=Pv(Hv),$v=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(Sv),Gv=Pv($v),Wv=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(Sv),Kv=Pv(Wv),Xv=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(Sv),Zv=Pv(Xv),Jv=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Sv),Qv=Pv(Jv),t_=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(Sv),e_=Pv(t_),n_=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(Sv),r_=Pv(n_),i_=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(Sv),a_=Pv(i_),o_=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(Sv),s_=Pv(o_),u_=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(Sv),c_=Pv(u_),f_=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(Sv),l_=Pv(f_),h_=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(Sv),d_=Pv(h_),p_=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(Sv),g_=Pv(p_),y_=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(Sv),b_=Pv(y_),m_=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Sv),v_=Pv(m_),__=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(Sv),w_=Pv(__),x_=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(Sv),k_=Pv(x_),E_=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Sv),A_=Pv(E_),S_=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Sv),M_=Pv(S_),T_=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Sv),D_=Pv(T_),C_=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Sv),O_=Pv(C_),R_=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Sv),N_=Pv(R_),I_=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Sv),B_=Pv(I_),L_=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Sv),P_=Pv(L_),F_=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},q_=Wr(Hr(300,.5,0),Hr(-240,.5,1)),j_=Wr(Hr(-100,.75,.35),Hr(80,1.5,.8)),U_=Wr(Hr(260,.75,.35),Hr(80,1.5,.8)),z_=Hr(),Y_=function(t){(t<0||t>1)&&(t-=Math.floor(t));var e=Math.abs(t-.5);return z_.h=360*t-100,z_.s=1.5-1.5*e,z_.l=.8-.9*e,z_+""},H_=bn(),V_=Math.PI/3,$_=2*Math.PI/3,G_=function(t){var e;return t=(.5-t)*Math.PI,H_.r=255*(e=Math.sin(t))*e,H_.g=255*(e=Math.sin(t+V_))*e,H_.b=255*(e=Math.sin(t+$_))*e,H_+""},W_=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"};function K_(t){var e=t.length;return function(n){return t[Math.max(0,Math.min(e-1,Math.floor(n*e)))]}}var X_=K_(Sv("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),Z_=K_(Sv("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),J_=K_(Sv("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Q_=K_(Sv("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),tw=function(t){return function(){return t}},ew=Math.abs,nw=Math.atan2,rw=Math.cos,iw=Math.max,aw=Math.min,ow=Math.sin,sw=Math.sqrt,uw=1e-12,cw=Math.PI,fw=cw/2,lw=2*cw;function hw(t){return t>=1?fw:t<=-1?-fw:Math.asin(t)}function dw(t){return t.innerRadius}function pw(t){return t.outerRadius}function gw(t){return t.startAngle}function yw(t){return t.endAngle}function bw(t){return t&&t.padAngle}function mw(t,e,n,r,i,a,o){var s=t-n,u=e-r,c=(o?a:-a)/sw(s*s+u*u),f=c*u,l=-c*s,h=t+f,d=e+l,p=n+f,g=r+l,y=(h+p)/2,b=(d+g)/2,m=p-h,v=g-d,_=m*m+v*v,w=i-a,x=h*g-p*d,k=(v<0?-1:1)*sw(iw(0,w*w*_-x*x)),E=(x*v-m*k)/_,A=(-x*m-v*k)/_,S=(x*v+m*k)/_,M=(-x*m+v*k)/_,T=E-y,D=A-b,C=S-y,O=M-b;return T*T+D*D>C*C+O*O&&(E=S,A=M),{cx:E,cy:A,x01:-f,y01:-l,x11:E*(i/w-1),y11:A*(i/w-1)}}var vw=function(){var t=dw,e=pw,n=tw(0),r=null,i=gw,a=yw,o=bw,s=null;function u(){var u,c,f,l=+t.apply(this,arguments),h=+e.apply(this,arguments),d=i.apply(this,arguments)-fw,p=a.apply(this,arguments)-fw,g=ew(p-d),y=p>d;if(s||(s=u=qo()),h<l&&(c=h,h=l,l=c),h>uw)if(g>lw-uw)s.moveTo(h*rw(d),h*ow(d)),s.arc(0,0,h,d,p,!y),l>uw&&(s.moveTo(l*rw(p),l*ow(p)),s.arc(0,0,l,p,d,y));else{var b,m,v=d,_=p,w=d,x=p,k=g,E=g,A=o.apply(this,arguments)/2,S=A>uw&&(r?+r.apply(this,arguments):sw(l*l+h*h)),M=aw(ew(h-l)/2,+n.apply(this,arguments)),T=M,D=M;if(S>uw){var C=hw(S/l*ow(A)),O=hw(S/h*ow(A));(k-=2*C)>uw?(w+=C*=y?1:-1,x-=C):(k=0,w=x=(d+p)/2),(E-=2*O)>uw?(v+=O*=y?1:-1,_-=O):(E=0,v=_=(d+p)/2)}var R=h*rw(v),N=h*ow(v),I=l*rw(x),B=l*ow(x);if(M>uw){var L,P=h*rw(_),F=h*ow(_),q=l*rw(w),j=l*ow(w);if(g<cw&&(L=function(t,e,n,r,i,a,o,s){var u=n-t,c=r-e,f=o-i,l=s-a,h=l*u-f*c;if(!(h*h<uw))return[t+(h=(f*(e-a)-l*(t-i))/h)*u,e+h*c]}(R,N,q,j,P,F,I,B))){var U=R-L[0],z=N-L[1],Y=P-L[0],H=F-L[1],V=1/ow(((f=(U*Y+z*H)/(sw(U*U+z*z)*sw(Y*Y+H*H)))>1?0:f<-1?cw:Math.acos(f))/2),$=sw(L[0]*L[0]+L[1]*L[1]);T=aw(M,(l-$)/(V-1)),D=aw(M,(h-$)/(V+1))}}E>uw?D>uw?(b=mw(q,j,R,N,h,D,y),m=mw(P,F,I,B,h,D,y),s.moveTo(b.cx+b.x01,b.cy+b.y01),D<M?s.arc(b.cx,b.cy,D,nw(b.y01,b.x01),nw(m.y01,m.x01),!y):(s.arc(b.cx,b.cy,D,nw(b.y01,b.x01),nw(b.y11,b.x11),!y),s.arc(0,0,h,nw(b.cy+b.y11,b.cx+b.x11),nw(m.cy+m.y11,m.cx+m.x11),!y),s.arc(m.cx,m.cy,D,nw(m.y11,m.x11),nw(m.y01,m.x01),!y))):(s.moveTo(R,N),s.arc(0,0,h,v,_,!y)):s.moveTo(R,N),l>uw&&k>uw?T>uw?(b=mw(I,B,P,F,l,-T,y),m=mw(R,N,q,j,l,-T,y),s.lineTo(b.cx+b.x01,b.cy+b.y01),T<M?s.arc(b.cx,b.cy,T,nw(b.y01,b.x01),nw(m.y01,m.x01),!y):(s.arc(b.cx,b.cy,T,nw(b.y01,b.x01),nw(b.y11,b.x11),!y),s.arc(0,0,l,nw(b.cy+b.y11,b.cx+b.x11),nw(m.cy+m.y11,m.cx+m.x11),y),s.arc(m.cx,m.cy,T,nw(m.y11,m.x11),nw(m.y01,m.x01),!y))):s.arc(0,0,l,x,w,y):s.lineTo(I,B)}else s.moveTo(0,0);if(s.closePath(),u)return s=null,u+""||null}return u.centroid=function(){var n=(+t.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +a.apply(this,arguments))/2-cw/2;return[rw(r)*n,ow(r)*n]},u.innerRadius=function(e){return arguments.length?(t="function"==typeof e?e:tw(+e),u):t},u.outerRadius=function(t){return arguments.length?(e="function"==typeof t?t:tw(+t),u):e},u.cornerRadius=function(t){return arguments.length?(n="function"==typeof t?t:tw(+t),u):n},u.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:tw(+t),u):r},u.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:tw(+t),u):i},u.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:tw(+t),u):a},u.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:tw(+t),u):o},u.context=function(t){return arguments.length?(s=null==t?null:t,u):s},u};function _w(t){this._context=t}_w.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var ww=function(t){return new _w(t)};function xw(t){return t[0]}function kw(t){return t[1]}var Ew=function(){var t=xw,e=kw,n=tw(!0),r=null,i=ww,a=null;function o(o){var s,u,c,f=o.length,l=!1;for(null==r&&(a=i(c=qo())),s=0;s<=f;++s)!(s<f&&n(u=o[s],s,o))===l&&((l=!l)?a.lineStart():a.lineEnd()),l&&a.point(+t(u,s,o),+e(u,s,o));if(c)return a=null,c+""||null}return o.x=function(e){return arguments.length?(t="function"==typeof e?e:tw(+e),o):t},o.y=function(t){return arguments.length?(e="function"==typeof t?t:tw(+t),o):e},o.defined=function(t){return arguments.length?(n="function"==typeof t?t:tw(!!t),o):n},o.curve=function(t){return arguments.length?(i=t,null!=r&&(a=i(r)),o):i},o.context=function(t){return arguments.length?(null==t?r=a=null:a=i(r=t),o):r},o},Aw=function(){var t=xw,e=null,n=tw(0),r=kw,i=tw(!0),a=null,o=ww,s=null;function u(u){var c,f,l,h,d,p=u.length,g=!1,y=new Array(p),b=new Array(p);for(null==a&&(s=o(d=qo())),c=0;c<=p;++c){if(!(c<p&&i(h=u[c],c,u))===g)if(g=!g)f=c,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),l=c-1;l>=f;--l)s.point(y[l],b[l]);s.lineEnd(),s.areaEnd()}g&&(y[c]=+t(h,c,u),b[c]=+n(h,c,u),s.point(e?+e(h,c,u):y[c],r?+r(h,c,u):b[c]))}if(d)return s=null,d+""||null}function c(){return Ew().defined(i).curve(o).context(a)}return u.x=function(n){return arguments.length?(t="function"==typeof n?n:tw(+n),e=null,u):t},u.x0=function(e){return arguments.length?(t="function"==typeof e?e:tw(+e),u):t},u.x1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:tw(+t),u):e},u.y=function(t){return arguments.length?(n="function"==typeof t?t:tw(+t),r=null,u):n},u.y0=function(t){return arguments.length?(n="function"==typeof t?t:tw(+t),u):n},u.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:tw(+t),u):r},u.lineX0=u.lineY0=function(){return c().x(t).y(n)},u.lineY1=function(){return c().x(t).y(r)},u.lineX1=function(){return c().x(e).y(n)},u.defined=function(t){return arguments.length?(i="function"==typeof t?t:tw(!!t),u):i},u.curve=function(t){return arguments.length?(o=t,null!=a&&(s=o(a)),u):o},u.context=function(t){return arguments.length?(null==t?a=s=null:s=o(a=t),u):a},u},Sw=function(t,e){return e<t?-1:e>t?1:e>=t?0:NaN},Mw=function(t){return t},Tw=function(){var t=Mw,e=Sw,n=null,r=tw(0),i=tw(lw),a=tw(0);function o(o){var s,u,c,f,l,h=o.length,d=0,p=new Array(h),g=new Array(h),y=+r.apply(this,arguments),b=Math.min(lw,Math.max(-lw,i.apply(this,arguments)-y)),m=Math.min(Math.abs(b)/h,a.apply(this,arguments)),v=m*(b<0?-1:1);for(s=0;s<h;++s)(l=g[p[s]=s]=+t(o[s],s,o))>0&&(d+=l);for(null!=e?p.sort((function(t,n){return e(g[t],g[n])})):null!=n&&p.sort((function(t,e){return n(o[t],o[e])})),s=0,c=d?(b-h*v)/d:0;s<h;++s,y=f)u=p[s],f=y+((l=g[u])>0?l*c:0)+v,g[u]={data:o[u],index:s,value:l,startAngle:y,endAngle:f,padAngle:m};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:tw(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,n=null,o):e},o.sort=function(t){return arguments.length?(n=t,e=null,o):n},o.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:tw(+t),o):r},o.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:tw(+t),o):i},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:tw(+t),o):a},o},Dw=Ow(ww);function Cw(t){this._curve=t}function Ow(t){function e(e){return new Cw(t(e))}return e._curve=t,e}function Rw(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(Ow(t)):e()._curve},t}Cw.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var Nw=function(){return Rw(Ew().curve(Dw))},Iw=function(){var t=Aw().curve(Dw),e=t.curve,n=t.lineX0,r=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Rw(n())},delete t.lineX0,t.lineEndAngle=function(){return Rw(r())},delete t.lineX1,t.lineInnerRadius=function(){return Rw(i())},delete t.lineY0,t.lineOuterRadius=function(){return Rw(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(Ow(t)):e()._curve},t},Bw=function(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]},Lw=Array.prototype.slice;function Pw(t){return t.source}function Fw(t){return t.target}function qw(t){var e=Pw,n=Fw,r=xw,i=kw,a=null;function o(){var o,s=Lw.call(arguments),u=e.apply(this,s),c=n.apply(this,s);if(a||(a=o=qo()),t(a,+r.apply(this,(s[0]=u,s)),+i.apply(this,s),+r.apply(this,(s[0]=c,s)),+i.apply(this,s)),o)return a=null,o+""||null}return o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(t){return arguments.length?(n=t,o):n},o.x=function(t){return arguments.length?(r="function"==typeof t?t:tw(+t),o):r},o.y=function(t){return arguments.length?(i="function"==typeof t?t:tw(+t),o):i},o.context=function(t){return arguments.length?(a=null==t?null:t,o):a},o}function jw(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e=(e+r)/2,n,e,i,r,i)}function Uw(t,e,n,r,i){t.moveTo(e,n),t.bezierCurveTo(e,n=(n+i)/2,r,n,r,i)}function zw(t,e,n,r,i){var a=Bw(e,n),o=Bw(e,n=(n+i)/2),s=Bw(r,n),u=Bw(r,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],u[0],u[1])}function Yw(){return qw(jw)}function Hw(){return qw(Uw)}function Vw(){var t=qw(zw);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}var $w={draw:function(t,e){var n=Math.sqrt(e/cw);t.moveTo(n,0),t.arc(0,0,n,0,lw)}},Gw={draw:function(t,e){var n=Math.sqrt(e/5)/2;t.moveTo(-3*n,-n),t.lineTo(-n,-n),t.lineTo(-n,-3*n),t.lineTo(n,-3*n),t.lineTo(n,-n),t.lineTo(3*n,-n),t.lineTo(3*n,n),t.lineTo(n,n),t.lineTo(n,3*n),t.lineTo(-n,3*n),t.lineTo(-n,n),t.lineTo(-3*n,n),t.closePath()}},Ww=Math.sqrt(1/3),Kw=2*Ww,Xw={draw:function(t,e){var n=Math.sqrt(e/Kw),r=n*Ww;t.moveTo(0,-n),t.lineTo(r,0),t.lineTo(0,n),t.lineTo(-r,0),t.closePath()}},Zw=Math.sin(cw/10)/Math.sin(7*cw/10),Jw=Math.sin(lw/10)*Zw,Qw=-Math.cos(lw/10)*Zw,tx={draw:function(t,e){var n=Math.sqrt(.8908130915292852*e),r=Jw*n,i=Qw*n;t.moveTo(0,-n),t.lineTo(r,i);for(var a=1;a<5;++a){var o=lw*a/5,s=Math.cos(o),u=Math.sin(o);t.lineTo(u*n,-s*n),t.lineTo(s*r-u*i,u*r+s*i)}t.closePath()}},ex={draw:function(t,e){var n=Math.sqrt(e),r=-n/2;t.rect(r,r,n,n)}},nx=Math.sqrt(3),rx={draw:function(t,e){var n=-Math.sqrt(e/(3*nx));t.moveTo(0,2*n),t.lineTo(-nx*n,-n),t.lineTo(nx*n,-n),t.closePath()}},ix=Math.sqrt(3)/2,ax=1/Math.sqrt(12),ox=3*(ax/2+1),sx={draw:function(t,e){var n=Math.sqrt(e/ox),r=n/2,i=n*ax,a=r,o=n*ax+n,s=-a,u=o;t.moveTo(r,i),t.lineTo(a,o),t.lineTo(s,u),t.lineTo(-.5*r-ix*i,ix*r+-.5*i),t.lineTo(-.5*a-ix*o,ix*a+-.5*o),t.lineTo(-.5*s-ix*u,ix*s+-.5*u),t.lineTo(-.5*r+ix*i,-.5*i-ix*r),t.lineTo(-.5*a+ix*o,-.5*o-ix*a),t.lineTo(-.5*s+ix*u,-.5*u-ix*s),t.closePath()}},ux=[$w,Gw,Xw,ex,tx,rx,sx],cx=function(){var t=tw($w),e=tw(64),n=null;function r(){var r;if(n||(n=r=qo()),t.apply(this,arguments).draw(n,+e.apply(this,arguments)),r)return n=null,r+""||null}return r.type=function(e){return arguments.length?(t="function"==typeof e?e:tw(e),r):t},r.size=function(t){return arguments.length?(e="function"==typeof t?t:tw(+t),r):e},r.context=function(t){return arguments.length?(n=null==t?null:t,r):n},r},fx=function(){};function lx(t,e,n){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+n)/6)}function hx(t){this._context=t}hx.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:lx(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);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);default:lx(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var dx=function(t){return new hx(t)};function px(t){this._context=t}px.prototype={areaStart:fx,areaEnd:fx,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)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:lx(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var gx=function(t){return new px(t)};function yx(t){this._context=t}yx.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(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:lx(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};var bx=function(t){return new yx(t)};function mx(t,e){this._basis=new hx(t),this._beta=e}mx.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,n=t.length-1;if(n>0)for(var r,i=t[0],a=e[0],o=t[n]-i,s=e[n]-a,u=-1;++u<=n;)r=u/n,this._basis.point(this._beta*t[u]+(1-this._beta)*(i+r*o),this._beta*e[u]+(1-this._beta)*(a+r*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var vx=function t(e){function n(t){return 1===e?new hx(t):new mx(t,e)}return n.beta=function(e){return t(+e)},n}(.85);function _x(t,e,n){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-n),t._x2,t._y2)}function wx(t,e){this._context=t,this._k=(1-e)/6}wx.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:_x(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:_x(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var xx=function t(e){function n(t){return new wx(t,e)}return n.tension=function(e){return t(+e)},n}(0);function kx(t,e){this._context=t,this._k=(1-e)/6}kx.prototype={areaStart:fx,areaEnd:fx,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)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:_x(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ex=function t(e){function n(t){return new kx(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Ax(t,e){this._context=t,this._k=(1-e)/6}Ax.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(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,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;default:_x(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Sx=function t(e){function n(t){return new Ax(t,e)}return n.tension=function(e){return t(+e)},n}(0);function Mx(t,e,n){var r=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>uw){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,u=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/u,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/u}if(t._l23_a>uw){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/f,o=(o*c+t._y1*t._l23_2a-n*t._l12_2a)/f}t._context.bezierCurveTo(r,i,a,o,t._x2,t._y2)}function Tx(t,e){this._context=t,this._alpha=e}Tx.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)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Mx(this,t,e)}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=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Dx=function t(e){function n(t){return e?new Tx(t,e):new wx(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Cx(t,e){this._context=t,this._alpha=e}Cx.prototype={areaStart:fx,areaEnd:fx,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)}},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Mx(this,t,e)}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=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Ox=function t(e){function n(t){return e?new Cx(t,e):new kx(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Rx(t,e){this._context=t,this._alpha=e}Rx.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(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var n=this._x2-t,r=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(n*n+r*r,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;default:Mx(this,t,e)}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=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Nx=function t(e){function n(t){return e?new Rx(t,e):new Ax(t,0)}return n.alpha=function(e){return t(+e)},n}(.5);function Ix(t){this._context=t}Ix.prototype={areaStart:fx,areaEnd:fx,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}};var Bx=function(t){return new Ix(t)};function Lx(t){return t<0?-1:1}function Px(t,e,n){var r=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(r||i<0&&-0),o=(n-t._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(Lx(a)+Lx(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Fx(t,e){var n=t._x1-t._x0;return n?(3*(t._y1-t._y0)/n-e)/2:e}function qx(t,e,n){var r=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-r)/3;t._context.bezierCurveTo(r+s,i+s*e,a-s,o-s*n,a,o)}function jx(t){this._context=t}function Ux(t){this._context=new zx(t)}function zx(t){this._context=t}function Yx(t){return new jx(t)}function Hx(t){return new Ux(t)}function Vx(t){this._context=t}function $x(t){var e,n,r=t.length-1,i=new Array(r),a=new Array(r),o=new Array(r);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e<r-1;++e)i[e]=1,a[e]=4,o[e]=4*t[e]+2*t[e+1];for(i[r-1]=2,a[r-1]=7,o[r-1]=8*t[r-1]+t[r],e=1;e<r;++e)n=i[e]/a[e-1],a[e]-=n,o[e]-=n*o[e-1];for(i[r-1]=o[r-1]/a[r-1],e=r-2;e>=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e<r-1;++e)a[e]=2*t[e+1]-i[e+1];return[i,a]}jx.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:qx(this,this._t0,Fx(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var n=NaN;if(e=+e,(t=+t)!==this._x1||e!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,qx(this,Fx(this,n=Px(this,t,e)),n);break;default:qx(this,this._t0,n=Px(this,t,e))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=n}}},(Ux.prototype=Object.create(jx.prototype)).point=function(t,e){jx.prototype.point.call(this,e,t)},zx.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,n,r,i,a){this._context.bezierCurveTo(e,t,r,n,a,i)}},Vx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,n=t.length;if(n)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),2===n)this._context.lineTo(t[1],e[1]);else for(var r=$x(t),i=$x(e),a=0,o=1;o<n;++a,++o)this._context.bezierCurveTo(r[0][a],i[0][a],r[1][a],i[1][a],t[o],e[o]);(this._line||0!==this._line&&1===n)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var Gx=function(t){return new Vx(t)};function Wx(t,e){this._context=t,this._t=e}Wx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var n=this._x*(1-this._t)+t*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,e)}}this._x=t,this._y=e}};var Kx=function(t){return new Wx(t,.5)};function Xx(t){return new Wx(t,0)}function Zx(t){return new Wx(t,1)}var Jx=function(t,e){if((i=t.length)>1)for(var n,r,i,a=1,o=t[e[0]],s=o.length;a<i;++a)for(r=o,o=t[e[a]],n=0;n<s;++n)o[n][1]+=o[n][0]=isNaN(r[n][1])?r[n][0]:r[n][1]},Qx=function(t){for(var e=t.length,n=new Array(e);--e>=0;)n[e]=e;return n};function tk(t,e){return t[e]}var ek=function(){var t=tw([]),e=Qx,n=Jx,r=tk;function i(i){var a,o,s=t.apply(this,arguments),u=i.length,c=s.length,f=new Array(c);for(a=0;a<c;++a){for(var l,h=s[a],d=f[a]=new Array(u),p=0;p<u;++p)d[p]=l=[0,+r(i[p],h,p,i)],l.data=i[p];d.key=h}for(a=0,o=e(f);a<c;++a)f[o[a]].index=a;return n(f,o),f}return i.keys=function(e){return arguments.length?(t="function"==typeof e?e:tw(Lw.call(e)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:tw(+t),i):r},i.order=function(t){return arguments.length?(e=null==t?Qx:"function"==typeof t?t:tw(Lw.call(t)),i):e},i.offset=function(t){return arguments.length?(n=null==t?Jx:t,i):n},i},nk=function(t,e){if((r=t.length)>0){for(var n,r,i,a=0,o=t[0].length;a<o;++a){for(i=n=0;n<r;++n)i+=t[n][a][1]||0;if(i)for(n=0;n<r;++n)t[n][a][1]/=i}Jx(t,e)}},rk=function(t,e){if((s=t.length)>0)for(var n,r,i,a,o,s,u=0,c=t[e[0]].length;u<c;++u)for(a=o=0,n=0;n<s;++n)(i=(r=t[e[n]][u])[1]-r[0])>=0?(r[0]=a,r[1]=a+=i):i<0?(r[1]=o,r[0]=o+=i):r[0]=a},ik=function(t,e){if((n=t.length)>0){for(var n,r=0,i=t[e[0]],a=i.length;r<a;++r){for(var o=0,s=0;o<n;++o)s+=t[o][r][1]||0;i[r][1]+=i[r][0]=-s/2}Jx(t,e)}},ak=function(t,e){if((i=t.length)>0&&(r=(n=t[e[0]]).length)>0){for(var n,r,i,a=0,o=1;o<r;++o){for(var s=0,u=0,c=0;s<i;++s){for(var f=t[e[s]],l=f[o][1]||0,h=(l-(f[o-1][1]||0))/2,d=0;d<s;++d){var p=t[e[d]];h+=(p[o][1]||0)-(p[o-1][1]||0)}u+=l,c+=h*l}n[o-1][1]+=n[o-1][0]=a,u&&(a-=c/u)}n[o-1][1]+=n[o-1][0]=a,Jx(t,e)}},ok=function(t){var e=t.map(sk);return Qx(t).sort((function(t,n){return e[t]-e[n]}))};function sk(t){for(var e,n=-1,r=0,i=t.length,a=-1/0;++n<i;)(e=+t[n][1])>a&&(a=e,r=n);return r}var uk=function(t){var e=t.map(ck);return Qx(t).sort((function(t,n){return e[t]-e[n]}))};function ck(t){for(var e,n=0,r=-1,i=t.length;++r<i;)(e=+t[r][1])&&(n+=e);return n}var fk=function(t){return uk(t).reverse()},lk=function(t){var e,n,r=t.length,i=t.map(ck),a=ok(t),o=0,s=0,u=[],c=[];for(e=0;e<r;++e)n=a[e],o<s?(o+=i[n],u.push(n)):(s+=i[n],c.push(n));return c.reverse().concat(u)},hk=function(t){return Qx(t).reverse()},dk=function(t){return function(){return t}};function pk(t){return t[0]}function gk(t){return t[1]}function yk(){this._=null}function bk(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function mk(t,e){var n=e,r=e.R,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.R=r.L,n.R&&(n.R.U=n),r.L=n}function vk(t,e){var n=e,r=e.L,i=n.U;i?i.L===n?i.L=r:i.R=r:t._=r,r.U=i,n.U=r,n.L=r.R,n.L&&(n.L.U=n),r.R=n}function _k(t){for(;t.L;)t=t.L;return t}yk.prototype={constructor:yk,insert:function(t,e){var n,r,i;if(t){if(e.P=t,e.N=t.N,t.N&&(t.N.P=e),t.N=e,t.R){for(t=t.R;t.L;)t=t.L;t.L=e}else t.R=e;n=t}else this._?(t=_k(this._),e.P=null,e.N=t,t.P=t.L=e,n=t):(e.P=e.N=null,this._=e,n=null);for(e.L=e.R=null,e.U=n,e.C=!0,t=e;n&&n.C;)n===(r=n.U).L?(i=r.R)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.R&&(mk(this,n),n=(t=n).U),n.C=!1,r.C=!0,vk(this,r)):(i=r.L)&&i.C?(n.C=i.C=!1,r.C=!0,t=r):(t===n.L&&(vk(this,n),n=(t=n).U),n.C=!1,r.C=!0,mk(this,r)),n=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var e,n,r,i=t.U,a=t.L,o=t.R;if(n=a?o?_k(o):a:o,i?i.L===t?i.L=n:i.R=n:this._=n,a&&o?(r=n.C,n.C=t.C,n.L=a,a.U=n,n!==o?(i=n.U,n.U=t.U,t=n.R,i.L=t,n.R=o,o.U=n):(n.U=i,i=n,t=n.R)):(r=t.C,t=n),t&&(t.U=i),!r)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===i.L){if((e=i.R).C&&(e.C=!1,i.C=!0,mk(this,i),e=i.R),e.L&&e.L.C||e.R&&e.R.C){e.R&&e.R.C||(e.L.C=!1,e.C=!0,vk(this,e),e=i.R),e.C=i.C,i.C=e.R.C=!1,mk(this,i),t=this._;break}}else if((e=i.L).C&&(e.C=!1,i.C=!0,vk(this,i),e=i.L),e.L&&e.L.C||e.R&&e.R.C){e.L&&e.L.C||(e.R.C=!1,e.C=!0,mk(this,e),e=i.L),e.C=i.C,i.C=e.L.C=!1,vk(this,i),t=this._;break}e.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var wk=yk;function xk(t,e,n,r){var i=[null,null],a=$k.push(i)-1;return i.left=t,i.right=e,n&&Ek(i,t,e,n),r&&Ek(i,e,t,r),Hk[t.index].halfedges.push(a),Hk[e.index].halfedges.push(a),i}function kk(t,e,n){var r=[e,n];return r.left=t,r}function Ek(t,e,n,r){t[0]||t[1]?t.left===n?t[1]=r:t[0]=r:(t[0]=r,t.left=e,t.right=n)}function Ak(t,e,n,r,i){var a,o=t[0],s=t[1],u=o[0],c=o[1],f=0,l=1,h=s[0]-u,d=s[1]-c;if(a=e-u,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<l&&(l=a)}else if(h>0){if(a>l)return;a>f&&(f=a)}if(a=r-u,h||!(a<0)){if(a/=h,h<0){if(a>l)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<l&&(l=a)}if(a=n-c,d||!(a>0)){if(a/=d,d<0){if(a<f)return;a<l&&(l=a)}else if(d>0){if(a>l)return;a>f&&(f=a)}if(a=i-c,d||!(a<0)){if(a/=d,d<0){if(a>l)return;a>f&&(f=a)}else if(d>0){if(a<f)return;a<l&&(l=a)}return!(f>0||l<1)||(f>0&&(t[0]=[u+f*h,c+f*d]),l<1&&(t[1]=[u+l*h,c+l*d]),!0)}}}}}function Sk(t,e,n,r,i){var a=t[1];if(a)return!0;var o,s,u=t[0],c=t.left,f=t.right,l=c[0],h=c[1],d=f[0],p=f[1],g=(l+d)/2,y=(h+p)/2;if(p===h){if(g<e||g>=r)return;if(l>d){if(u){if(u[1]>=i)return}else u=[g,n];a=[g,i]}else{if(u){if(u[1]<n)return}else u=[g,i];a=[g,n]}}else if(s=y-(o=(l-d)/(p-h))*g,o<-1||o>1)if(l>d){if(u){if(u[1]>=i)return}else u=[(n-s)/o,n];a=[(i-s)/o,i]}else{if(u){if(u[1]<n)return}else u=[(i-s)/o,i];a=[(n-s)/o,n]}else if(h<p){if(u){if(u[0]>=r)return}else u=[e,o*e+s];a=[r,o*r+s]}else{if(u){if(u[0]<e)return}else u=[r,o*r+s];a=[e,o*e+s]}return t[0]=u,t[1]=a,!0}function Mk(t,e){var n=t.site,r=e.left,i=e.right;return n===i&&(i=r,r=n),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(n===r?(r=e[1],i=e[0]):(r=e[0],i=e[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function Tk(t,e){return e[+(e.left!==t.site)]}function Dk(t,e){return e[+(e.left===t.site)]}var Ck,Ok=[];function Rk(){bk(this),this.x=this.y=this.arc=this.site=this.cy=null}function Nk(t){var e=t.P,n=t.N;if(e&&n){var r=e.site,i=t.site,a=n.site;if(r!==a){var o=i[0],s=i[1],u=r[0]-o,c=r[1]-s,f=a[0]-o,l=a[1]-s,h=2*(u*l-c*f);if(!(h>=-Wk)){var d=u*u+c*c,p=f*f+l*l,g=(l*d-c*p)/h,y=(u*p-f*d)/h,b=Ok.pop()||new Rk;b.arc=t,b.site=i,b.x=g+o,b.y=(b.cy=y+s)+Math.sqrt(g*g+y*y),t.circle=b;for(var m=null,v=Vk._;v;)if(b.y<v.y||b.y===v.y&&b.x<=v.x){if(!v.L){m=v.P;break}v=v.L}else{if(!v.R){m=v;break}v=v.R}Vk.insert(m,b),m||(Ck=b)}}}}function Ik(t){var e=t.circle;e&&(e.P||(Ck=e.N),Vk.remove(e),Ok.push(e),bk(e),t.circle=null)}var Bk=[];function Lk(){bk(this),this.edge=this.site=this.circle=null}function Pk(t){var e=Bk.pop()||new Lk;return e.site=t,e}function Fk(t){Ik(t),Yk.remove(t),Bk.push(t),bk(t)}function qk(t){var e=t.circle,n=e.x,r=e.cy,i=[n,r],a=t.P,o=t.N,s=[t];Fk(t);for(var u=a;u.circle&&Math.abs(n-u.circle.x)<Gk&&Math.abs(r-u.circle.cy)<Gk;)a=u.P,s.unshift(u),Fk(u),u=a;s.unshift(u),Ik(u);for(var c=o;c.circle&&Math.abs(n-c.circle.x)<Gk&&Math.abs(r-c.circle.cy)<Gk;)o=c.N,s.push(c),Fk(c),c=o;s.push(c),Ik(c);var f,l=s.length;for(f=1;f<l;++f)c=s[f],u=s[f-1],Ek(c.edge,u.site,c.site,i);u=s[0],(c=s[l-1]).edge=xk(u.site,c.site,null,i),Nk(u),Nk(c)}function jk(t){for(var e,n,r,i,a=t[0],o=t[1],s=Yk._;s;)if((r=Uk(s,o)-a)>Gk)s=s.L;else{if(!((i=a-zk(s,o))>Gk)){r>-Gk?(e=s.P,n=s):i>-Gk?(e=s,n=s.N):e=n=s;break}if(!s.R){e=s;break}s=s.R}!function(t){Hk[t.index]={site:t,halfedges:[]}}(t);var u=Pk(t);if(Yk.insert(e,u),e||n){if(e===n)return Ik(e),n=Pk(e.site),Yk.insert(u,n),u.edge=n.edge=xk(e.site,u.site),Nk(e),void Nk(n);if(n){Ik(e),Ik(n);var c=e.site,f=c[0],l=c[1],h=t[0]-f,d=t[1]-l,p=n.site,g=p[0]-f,y=p[1]-l,b=2*(h*y-d*g),m=h*h+d*d,v=g*g+y*y,_=[(y*m-d*v)/b+f,(h*v-g*m)/b+l];Ek(n.edge,c,p,_),u.edge=xk(c,t,null,_),n.edge=xk(t,p,null,_),Nk(e),Nk(n)}else u.edge=xk(e.site,u.site)}}function Uk(t,e){var n=t.site,r=n[0],i=n[1],a=i-e;if(!a)return r;var o=t.P;if(!o)return-1/0;var s=(n=o.site)[0],u=n[1],c=u-e;if(!c)return s;var f=s-r,l=1/a-1/c,h=f/c;return l?(-h+Math.sqrt(h*h-2*l*(f*f/(-2*c)-u+c/2+i-a/2)))/l+r:(r+s)/2}function zk(t,e){var n=t.N;if(n)return Uk(n,e);var r=t.site;return r[1]===e?r[0]:1/0}var Yk,Hk,Vk,$k,Gk=1e-6,Wk=1e-12;function Kk(t,e){return e[1]-t[1]||e[0]-t[0]}function Xk(t,e){var n,r,i,a=t.sort(Kk).pop();for($k=[],Hk=new Array(t.length),Yk=new wk,Vk=new wk;;)if(i=Ck,a&&(!i||a[1]<i.y||a[1]===i.y&&a[0]<i.x))a[0]===n&&a[1]===r||(jk(a),n=a[0],r=a[1]),a=t.pop();else{if(!i)break;qk(i.arc)}if(function(){for(var t,e,n,r,i=0,a=Hk.length;i<a;++i)if((t=Hk[i])&&(r=(e=t.halfedges).length)){var o=new Array(r),s=new Array(r);for(n=0;n<r;++n)o[n]=n,s[n]=Mk(t,$k[e[n]]);for(o.sort((function(t,e){return s[e]-s[t]})),n=0;n<r;++n)s[n]=e[o[n]];for(n=0;n<r;++n)e[n]=s[n]}}(),e){var o=+e[0][0],s=+e[0][1],u=+e[1][0],c=+e[1][1];!function(t,e,n,r){for(var i,a=$k.length;a--;)Sk(i=$k[a],t,e,n,r)&&Ak(i,t,e,n,r)&&(Math.abs(i[0][0]-i[1][0])>Gk||Math.abs(i[0][1]-i[1][1])>Gk)||delete $k[a]}(o,s,u,c),function(t,e,n,r){var i,a,o,s,u,c,f,l,h,d,p,g,y=Hk.length,b=!0;for(i=0;i<y;++i)if(a=Hk[i]){for(o=a.site,s=(u=a.halfedges).length;s--;)$k[u[s]]||u.splice(s,1);for(s=0,c=u.length;s<c;)p=(d=Dk(a,$k[u[s]]))[0],g=d[1],l=(f=Tk(a,$k[u[++s%c]]))[0],h=f[1],(Math.abs(p-l)>Gk||Math.abs(g-h)>Gk)&&(u.splice(s,0,$k.push(kk(o,d,Math.abs(p-t)<Gk&&r-g>Gk?[t,Math.abs(l-t)<Gk?h:r]:Math.abs(g-r)<Gk&&n-p>Gk?[Math.abs(h-r)<Gk?l:n,r]:Math.abs(p-n)<Gk&&g-e>Gk?[n,Math.abs(l-n)<Gk?h:e]:Math.abs(g-e)<Gk&&p-t>Gk?[Math.abs(h-e)<Gk?l:t,e]:null))-1),++c);c&&(b=!1)}if(b){var m,v,_,w=1/0;for(i=0,b=null;i<y;++i)(a=Hk[i])&&(_=(m=(o=a.site)[0]-t)*m+(v=o[1]-e)*v)<w&&(w=_,b=a);if(b){var x=[t,e],k=[t,r],E=[n,r],A=[n,e];b.halfedges.push($k.push(kk(o=b.site,x,k))-1,$k.push(kk(o,k,E))-1,$k.push(kk(o,E,A))-1,$k.push(kk(o,A,x))-1)}}for(i=0;i<y;++i)(a=Hk[i])&&(a.halfedges.length||delete Hk[i])}(o,s,u,c)}this.edges=$k,this.cells=Hk,Yk=Vk=$k=Hk=null}Xk.prototype={constructor:Xk,polygons:function(){var t=this.edges;return this.cells.map((function(e){var n=e.halfedges.map((function(n){return Tk(e,t[n])}));return n.data=e.site.data,n}))},triangles:function(){var t=[],e=this.edges;return this.cells.forEach((function(n,r){if(a=(i=n.halfedges).length)for(var i,a,o,s,u,c,f=n.site,l=-1,h=e[i[a-1]],d=h.left===f?h.right:h.left;++l<a;)o=d,d=(h=e[i[l]]).left===f?h.right:h.left,o&&d&&r<o.index&&r<d.index&&(u=o,c=d,((s=f)[0]-c[0])*(u[1]-s[1])-(s[0]-u[0])*(c[1]-s[1])<0)&&t.push([f.data,o.data,d.data])})),t},links:function(){return this.edges.filter((function(t){return t.right})).map((function(t){return{source:t.left.data,target:t.right.data}}))},find:function(t,e,n){for(var r,i,a=this,o=a._found||0,s=a.cells.length;!(i=a.cells[o]);)if(++o>=s)return null;var u=t-i.site[0],c=e-i.site[1],f=u*u+c*c;do{i=a.cells[r=o],o=null,i.halfedges.forEach((function(n){var r=a.edges[n],s=r.left;if(s!==i.site&&s||(s=r.right)){var u=t-s[0],c=e-s[1],l=u*u+c*c;l<f&&(f=l,o=s.index)}}))}while(null!==o);return a._found=r,null==n||f<=n*n?i.site:null}};var Zk=function(){var t=pk,e=gk,n=null;function r(r){return new Xk(r.map((function(n,i){var a=[Math.round(t(n,i,r)/Gk)*Gk,Math.round(e(n,i,r)/Gk)*Gk];return a.index=i,a.data=n,a})),n)}return r.polygons=function(t){return r(t).polygons()},r.links=function(t){return r(t).links()},r.triangles=function(t){return r(t).triangles()},r.x=function(e){return arguments.length?(t="function"==typeof e?e:dk(+e),r):t},r.y=function(t){return arguments.length?(e="function"==typeof t?t:dk(+t),r):e},r.extent=function(t){return arguments.length?(n=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],r):n&&[[n[0][0],n[0][1]],[n[1][0],n[1][1]]]},r.size=function(t){return arguments.length?(n=null==t?null:[[0,0],[+t[0],+t[1]]],r):n&&[n[1][0]-n[0][0],n[1][1]-n[0][1]]},r},Jk=function(t){return function(){return t}};function Qk(t,e,n){this.target=t,this.type=e,this.transform=n}function tE(t,e,n){this.k=t,this.x=e,this.y=n}tE.prototype={constructor:tE,scale:function(t){return 1===t?this:new tE(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new tE(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var eE=new tE(1,0,0);function nE(t){for(;!t.__zoom;)if(!(t=t.parentNode))return eE;return t.__zoom}function rE(){pe.stopImmediatePropagation()}nE.prototype=tE.prototype;var iE=function(){pe.preventDefault(),pe.stopImmediatePropagation()};function aE(){return!pe.ctrlKey&&!pe.button}function oE(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function sE(){return this.__zoom||eE}function uE(){return-pe.deltaY*(1===pe.deltaMode?.05:pe.deltaMode?1:.002)}function cE(){return navigator.maxTouchPoints||"ontouchstart"in this}function fE(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],a=t.invertY(e[0][1])-n[0][1],o=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}var lE=function(){var t,e,n=aE,r=oE,i=fE,a=uE,o=cE,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],c=250,f=ur,l=gt("start","zoom","end"),h=500,d=150,p=0;function g(t){t.property("__zoom",sE).on("wheel.zoom",x).on("mousedown.zoom",k).on("dblclick.zoom",E).filter(o).on("touchstart.zoom",A).on("touchmove.zoom",S).on("touchend.zoom touchcancel.zoom",M).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(t,e){return(e=Math.max(s[0],Math.min(s[1],e)))===t.k?t:new tE(e,t.x,t.y)}function b(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new tE(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function v(t,e,n){t.on("start.zoom",(function(){_(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){_(this,arguments).end()})).tween("zoom",(function(){var t=this,i=arguments,a=_(t,i),o=r.apply(t,i),s=null==n?m(o):"function"==typeof n?n.apply(t,i):n,u=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),c=t.__zoom,l="function"==typeof e?e.apply(t,i):e,h=f(c.invert(s).concat(u/c.k),l.invert(s).concat(u/l.k));return function(t){if(1===t)t=l;else{var e=h(t),n=u/e[2];t=new tE(n,s[0]-e[0]*n,s[1]-e[1]*n)}a.zoom(null,t)}}))}function _(t,e,n){return!n&&t.__zooming||new w(t,e)}function w(t,e){this.that=t,this.args=e,this.active=0,this.extent=r.apply(t,e),this.taps=0}function x(){if(n.apply(this,arguments)){var t=_(this,arguments),e=this.__zoom,r=Math.max(s[0],Math.min(s[1],e.k*Math.pow(2,a.apply(this,arguments)))),o=Be(this);if(t.wheel)t.mouse[0][0]===o[0]&&t.mouse[0][1]===o[1]||(t.mouse[1]=e.invert(t.mouse[0]=o)),clearTimeout(t.wheel);else{if(e.k===r)return;t.mouse=[o,e.invert(o)],Oi(this),t.start()}iE(),t.wheel=setTimeout((function(){t.wheel=null,t.end()}),d),t.zoom("mouse",i(b(y(e,r),t.mouse[0],t.mouse[1]),t.extent,u))}}function k(){if(!e&&n.apply(this,arguments)){var t=_(this,arguments,!0),r=Te(pe.view).on("mousemove.zoom",(function(){if(iE(),!t.moved){var e=pe.clientX-o,n=pe.clientY-s;t.moved=e*e+n*n>p}t.zoom("mouse",i(b(t.that.__zoom,t.mouse[0]=Be(t.that),t.mouse[1]),t.extent,u))}),!0).on("mouseup.zoom",(function(){r.on("mousemove.zoom mouseup.zoom",null),ze(pe.view,t.moved),iE(),t.end()}),!0),a=Be(this),o=pe.clientX,s=pe.clientY;Ue(pe.view),rE(),t.mouse=[a,this.__zoom.invert(a)],Oi(this),t.start()}}function E(){if(n.apply(this,arguments)){var t=this.__zoom,e=Be(this),a=t.invert(e),o=t.k*(pe.shiftKey?.5:2),s=i(b(y(t,o),e,a),r.apply(this,arguments),u);iE(),c>0?Te(this).transition().duration(c).call(v,s,e):Te(this).call(g.transform,s)}}function A(){if(n.apply(this,arguments)){var e,r,i,a,o=pe.touches,s=o.length,u=_(this,arguments,pe.changedTouches.length===s);for(rE(),r=0;r<s;++r)i=o[r],a=[a=Pe(this,o,i.identifier),this.__zoom.invert(a),i.identifier],u.touch0?u.touch1||u.touch0[2]===a[2]||(u.touch1=a,u.taps=0):(u.touch0=a,e=!0,u.taps=1+!!t);t&&(t=clearTimeout(t)),e&&(u.taps<2&&(t=setTimeout((function(){t=null}),h)),Oi(this),u.start())}}function S(){if(this.__zooming){var e,n,r,a,o=_(this,arguments),s=pe.changedTouches,c=s.length;for(iE(),t&&(t=clearTimeout(t)),o.taps=0,e=0;e<c;++e)n=s[e],r=Pe(this,s,n.identifier),o.touch0&&o.touch0[2]===n.identifier?o.touch0[0]=r:o.touch1&&o.touch1[2]===n.identifier&&(o.touch1[0]=r);if(n=o.that.__zoom,o.touch1){var f=o.touch0[0],l=o.touch0[1],h=o.touch1[0],d=o.touch1[1],p=(p=h[0]-f[0])*p+(p=h[1]-f[1])*p,g=(g=d[0]-l[0])*g+(g=d[1]-l[1])*g;n=y(n,Math.sqrt(p/g)),r=[(f[0]+h[0])/2,(f[1]+h[1])/2],a=[(l[0]+d[0])/2,(l[1]+d[1])/2]}else{if(!o.touch0)return;r=o.touch0[0],a=o.touch0[1]}o.zoom("touch",i(b(n,r,a),o.extent,u))}}function M(){if(this.__zooming){var t,n,r=_(this,arguments),i=pe.changedTouches,a=i.length;for(rE(),e&&clearTimeout(e),e=setTimeout((function(){e=null}),h),t=0;t<a;++t)n=i[t],r.touch0&&r.touch0[2]===n.identifier?delete r.touch0:r.touch1&&r.touch1[2]===n.identifier&&delete r.touch1;if(r.touch1&&!r.touch0&&(r.touch0=r.touch1,delete r.touch1),r.touch0)r.touch0[1]=this.__zoom.invert(r.touch0[0]);else if(r.end(),2===r.taps){var o=Te(this).on("dblclick.zoom");o&&o.apply(this,arguments)}}}return g.transform=function(t,e,n){var r=t.selection?t.selection():t;r.property("__zoom",sE),t!==r?v(t,e,n):r.interrupt().each((function(){_(this,arguments).start().zoom(null,"function"==typeof e?e.apply(this,arguments):e).end()}))},g.scaleBy=function(t,e,n){g.scaleTo(t,(function(){var t=this.__zoom.k,n="function"==typeof e?e.apply(this,arguments):e;return t*n}),n)},g.scaleTo=function(t,e,n){g.transform(t,(function(){var t=r.apply(this,arguments),a=this.__zoom,o=null==n?m(t):"function"==typeof n?n.apply(this,arguments):n,s=a.invert(o),c="function"==typeof e?e.apply(this,arguments):e;return i(b(y(a,c),o,s),t,u)}),n)},g.translateBy=function(t,e,n){g.transform(t,(function(){return i(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof n?n.apply(this,arguments):n),r.apply(this,arguments),u)}))},g.translateTo=function(t,e,n,a){g.transform(t,(function(){var t=r.apply(this,arguments),o=this.__zoom,s=null==a?m(t):"function"==typeof a?a.apply(this,arguments):a;return i(eE.translate(s[0],s[1]).scale(o.k).translate("function"==typeof e?-e.apply(this,arguments):-e,"function"==typeof n?-n.apply(this,arguments):-n),t,u)}),a)},w.prototype={start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,e){return this.mouse&&"mouse"!==t&&(this.mouse[1]=e.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=e.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=e.invert(this.touch1[0])),this.that.__zoom=e,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){_e(new Qk(g,t,this.that.__zoom),l.apply,l,[t,this.that,this.args])}},g.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:Jk(+t),g):a},g.filter=function(t){return arguments.length?(n="function"==typeof t?t:Jk(!!t),g):n},g.touchable=function(t){return arguments.length?(o="function"==typeof t?t:Jk(!!t),g):o},g.extent=function(t){return arguments.length?(r="function"==typeof t?t:Jk([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),g):r},g.scaleExtent=function(t){return arguments.length?(s[0]=+t[0],s[1]=+t[1],g):[s[0],s[1]]},g.translateExtent=function(t){return arguments.length?(u[0][0]=+t[0][0],u[1][0]=+t[1][0],u[0][1]=+t[0][1],u[1][1]=+t[1][1],g):[[u[0][0],u[0][1]],[u[1][0],u[1][1]]]},g.constrain=function(t){return arguments.length?(i=t,g):i},g.duration=function(t){return arguments.length?(c=+t,g):c},g.interpolate=function(t){return arguments.length?(f=t,g):f},g.on=function(){var t=l.on.apply(l,arguments);return t===l?g:t},g.clickDistance=function(t){return arguments.length?(p=(t=+t)*t,g):Math.sqrt(p)},g};n.d(e,"version",(function(){return"5.12.0"})),n.d(e,"bisect",(function(){return u})),n.d(e,"bisectRight",(function(){return o})),n.d(e,"bisectLeft",(function(){return s})),n.d(e,"ascending",(function(){return r})),n.d(e,"bisector",(function(){return i})),n.d(e,"cross",(function(){return l})),n.d(e,"descending",(function(){return h})),n.d(e,"deviation",(function(){return g})),n.d(e,"extent",(function(){return y})),n.d(e,"histogram",(function(){return C})),n.d(e,"thresholdFreedmanDiaconis",(function(){return R})),n.d(e,"thresholdScott",(function(){return N})),n.d(e,"thresholdSturges",(function(){return D})),n.d(e,"max",(function(){return I})),n.d(e,"mean",(function(){return B})),n.d(e,"median",(function(){return L})),n.d(e,"merge",(function(){return P})),n.d(e,"min",(function(){return F})),n.d(e,"pairs",(function(){return c})),n.d(e,"permute",(function(){return q})),n.d(e,"quantile",(function(){return O})),n.d(e,"range",(function(){return x})),n.d(e,"scan",(function(){return j})),n.d(e,"shuffle",(function(){return U})),n.d(e,"sum",(function(){return z})),n.d(e,"ticks",(function(){return S})),n.d(e,"tickIncrement",(function(){return M})),n.d(e,"tickStep",(function(){return T})),n.d(e,"transpose",(function(){return Y})),n.d(e,"variance",(function(){return p})),n.d(e,"zip",(function(){return V})),n.d(e,"axisTop",(function(){return at})),n.d(e,"axisRight",(function(){return ot})),n.d(e,"axisBottom",(function(){return st})),n.d(e,"axisLeft",(function(){return ut})),n.d(e,"brush",(function(){return xo})),n.d(e,"brushX",(function(){return _o})),n.d(e,"brushY",(function(){return wo})),n.d(e,"brushSelection",(function(){return vo})),n.d(e,"chord",(function(){return Oo})),n.d(e,"ribbon",(function(){return Vo})),n.d(e,"nest",(function(){return Ko})),n.d(e,"set",(function(){return rs})),n.d(e,"map",(function(){return Wo})),n.d(e,"keys",(function(){return is})),n.d(e,"values",(function(){return as})),n.d(e,"entries",(function(){return os})),n.d(e,"color",(function(){return dn})),n.d(e,"rgb",(function(){return bn})),n.d(e,"hsl",(function(){return En})),n.d(e,"lab",(function(){return kr})),n.d(e,"hcl",(function(){return Or})),n.d(e,"lch",(function(){return Cr})),n.d(e,"gray",(function(){return xr})),n.d(e,"cubehelix",(function(){return Hr})),n.d(e,"contours",(function(){return ys})),n.d(e,"contourDensity",(function(){return xs})),n.d(e,"dispatch",(function(){return gt})),n.d(e,"drag",(function(){return Ke})),n.d(e,"dragDisable",(function(){return Ue})),n.d(e,"dragEnable",(function(){return ze})),n.d(e,"dsvFormat",(function(){return Rs})),n.d(e,"csvParse",(function(){return Is})),n.d(e,"csvParseRows",(function(){return Bs})),n.d(e,"csvFormat",(function(){return Ls})),n.d(e,"csvFormatBody",(function(){return Ps})),n.d(e,"csvFormatRows",(function(){return Fs})),n.d(e,"tsvParse",(function(){return js})),n.d(e,"tsvParseRows",(function(){return Us})),n.d(e,"tsvFormat",(function(){return zs})),n.d(e,"tsvFormatBody",(function(){return Ys})),n.d(e,"tsvFormatRows",(function(){return Hs})),n.d(e,"autoType",(function(){return Vs})),n.d(e,"easeLinear",(function(){return ia})),n.d(e,"easeQuad",(function(){return sa})),n.d(e,"easeQuadIn",(function(){return aa})),n.d(e,"easeQuadOut",(function(){return oa})),n.d(e,"easeQuadInOut",(function(){return sa})),n.d(e,"easeCubic",(function(){return fa})),n.d(e,"easeCubicIn",(function(){return ua})),n.d(e,"easeCubicOut",(function(){return ca})),n.d(e,"easeCubicInOut",(function(){return fa})),n.d(e,"easePoly",(function(){return da})),n.d(e,"easePolyIn",(function(){return la})),n.d(e,"easePolyOut",(function(){return ha})),n.d(e,"easePolyInOut",(function(){return da})),n.d(e,"easeSin",(function(){return ma})),n.d(e,"easeSinIn",(function(){return ya})),n.d(e,"easeSinOut",(function(){return ba})),n.d(e,"easeSinInOut",(function(){return ma})),n.d(e,"easeExp",(function(){return wa})),n.d(e,"easeExpIn",(function(){return va})),n.d(e,"easeExpOut",(function(){return _a})),n.d(e,"easeExpInOut",(function(){return wa})),n.d(e,"easeCircle",(function(){return Ea})),n.d(e,"easeCircleIn",(function(){return xa})),n.d(e,"easeCircleOut",(function(){return ka})),n.d(e,"easeCircleInOut",(function(){return Ea})),n.d(e,"easeBounce",(function(){return La})),n.d(e,"easeBounceIn",(function(){return Ba})),n.d(e,"easeBounceOut",(function(){return La})),n.d(e,"easeBounceInOut",(function(){return Pa})),n.d(e,"easeBack",(function(){return ja})),n.d(e,"easeBackIn",(function(){return Fa})),n.d(e,"easeBackOut",(function(){return qa})),n.d(e,"easeBackInOut",(function(){return ja})),n.d(e,"easeElastic",(function(){return Ya})),n.d(e,"easeElasticIn",(function(){return za})),n.d(e,"easeElasticOut",(function(){return Ya})),n.d(e,"easeElasticInOut",(function(){return Ha})),n.d(e,"blob",(function(){return Gs})),n.d(e,"buffer",(function(){return Ks})),n.d(e,"dsv",(function(){return Qs})),n.d(e,"csv",(function(){return tu})),n.d(e,"tsv",(function(){return eu})),n.d(e,"image",(function(){return nu})),n.d(e,"json",(function(){return iu})),n.d(e,"text",(function(){return Zs})),n.d(e,"xml",(function(){return ou})),n.d(e,"html",(function(){return su})),n.d(e,"svg",(function(){return uu})),n.d(e,"forceCenter",(function(){return cu})),n.d(e,"forceCollide",(function(){return xu})),n.d(e,"forceLink",(function(){return Au})),n.d(e,"forceManyBody",(function(){return Ou})),n.d(e,"forceRadial",(function(){return Ru})),n.d(e,"forceSimulation",(function(){return Cu})),n.d(e,"forceX",(function(){return Nu})),n.d(e,"forceY",(function(){return Iu})),n.d(e,"formatDefaultLocale",(function(){return Zu})),n.d(e,"format",(function(){return zu})),n.d(e,"formatPrefix",(function(){return Yu})),n.d(e,"formatLocale",(function(){return Xu})),n.d(e,"formatSpecifier",(function(){return Fu})),n.d(e,"FormatSpecifier",(function(){return qu})),n.d(e,"precisionFixed",(function(){return Ju})),n.d(e,"precisionPrefix",(function(){return Qu})),n.d(e,"precisionRound",(function(){return tc})),n.d(e,"geoArea",(function(){return Gc})),n.d(e,"geoBounds",(function(){return jf})),n.d(e,"geoCentroid",(function(){return Jf})),n.d(e,"geoCircle",(function(){return cl})),n.d(e,"geoClipAntimeridian",(function(){return wl})),n.d(e,"geoClipCircle",(function(){return xl})),n.d(e,"geoClipExtent",(function(){return Cl})),n.d(e,"geoClipRectangle",(function(){return Sl})),n.d(e,"geoContains",(function(){return Wl})),n.d(e,"geoDistance",(function(){return ql})),n.d(e,"geoGraticule",(function(){return Zl})),n.d(e,"geoGraticule10",(function(){return Jl})),n.d(e,"geoInterpolate",(function(){return rh})),n.d(e,"geoLength",(function(){return Ll})),n.d(e,"geoPath",(function(){return ed})),n.d(e,"geoAlbers",(function(){return wd})),n.d(e,"geoAlbersUsa",(function(){return xd})),n.d(e,"geoAzimuthalEqualArea",(function(){return Sd})),n.d(e,"geoAzimuthalEqualAreaRaw",(function(){return Ad})),n.d(e,"geoAzimuthalEquidistant",(function(){return Td})),n.d(e,"geoAzimuthalEquidistantRaw",(function(){return Md})),n.d(e,"geoConicConformal",(function(){return Id})),n.d(e,"geoConicConformalRaw",(function(){return Nd})),n.d(e,"geoConicEqualArea",(function(){return _d})),n.d(e,"geoConicEqualAreaRaw",(function(){return vd})),n.d(e,"geoConicEquidistant",(function(){return Fd})),n.d(e,"geoConicEquidistantRaw",(function(){return Pd})),n.d(e,"geoEqualEarth",(function(){return Vd})),n.d(e,"geoEqualEarthRaw",(function(){return Hd})),n.d(e,"geoEquirectangular",(function(){return Ld})),n.d(e,"geoEquirectangularRaw",(function(){return Bd})),n.d(e,"geoGnomonic",(function(){return Gd})),n.d(e,"geoGnomonicRaw",(function(){return $d})),n.d(e,"geoIdentity",(function(){return Kd})),n.d(e,"geoProjection",(function(){return yd})),n.d(e,"geoProjectionMutator",(function(){return bd})),n.d(e,"geoMercator",(function(){return Cd})),n.d(e,"geoMercatorRaw",(function(){return Dd})),n.d(e,"geoNaturalEarth1",(function(){return Zd})),n.d(e,"geoNaturalEarth1Raw",(function(){return Xd})),n.d(e,"geoOrthographic",(function(){return Qd})),n.d(e,"geoOrthographicRaw",(function(){return Jd})),n.d(e,"geoStereographic",(function(){return ep})),n.d(e,"geoStereographicRaw",(function(){return tp})),n.d(e,"geoTransverseMercator",(function(){return rp})),n.d(e,"geoTransverseMercatorRaw",(function(){return np})),n.d(e,"geoRotation",(function(){return ol})),n.d(e,"geoStream",(function(){return qc})),n.d(e,"geoTransform",(function(){return nd})),n.d(e,"cluster",(function(){return sp})),n.d(e,"hierarchy",(function(){return cp})),n.d(e,"pack",(function(){return Ip})),n.d(e,"packSiblings",(function(){return Tp})),n.d(e,"packEnclose",(function(){return gp})),n.d(e,"partition",(function(){return jp})),n.d(e,"stratify",(function(){return $p})),n.d(e,"tree",(function(){return Qp})),n.d(e,"treemap",(function(){return ig})),n.d(e,"treemapBinary",(function(){return ag})),n.d(e,"treemapDice",(function(){return qp})),n.d(e,"treemapSlice",(function(){return tg})),n.d(e,"treemapSliceDice",(function(){return og})),n.d(e,"treemapSquarify",(function(){return rg})),n.d(e,"treemapResquarify",(function(){return sg})),n.d(e,"interpolate",(function(){return Xn})),n.d(e,"interpolateArray",(function(){return qn})),n.d(e,"interpolateBasis",(function(){return Tn})),n.d(e,"interpolateBasisClosed",(function(){return Dn})),n.d(e,"interpolateDate",(function(){return jn})),n.d(e,"interpolateDiscrete",(function(){return Zn})),n.d(e,"interpolateHue",(function(){return Jn})),n.d(e,"interpolateNumber",(function(){return Un})),n.d(e,"interpolateObject",(function(){return zn})),n.d(e,"interpolateRound",(function(){return Qn})),n.d(e,"interpolateString",(function(){return Kn})),n.d(e,"interpolateTransformCss",(function(){return ir})),n.d(e,"interpolateTransformSvg",(function(){return ar})),n.d(e,"interpolateZoom",(function(){return ur})),n.d(e,"interpolateRgb",(function(){return Bn})),n.d(e,"interpolateRgbBasis",(function(){return Pn})),n.d(e,"interpolateRgbBasisClosed",(function(){return Fn})),n.d(e,"interpolateHsl",(function(){return fr})),n.d(e,"interpolateHslLong",(function(){return lr})),n.d(e,"interpolateLab",(function(){return Ir})),n.d(e,"interpolateHcl",(function(){return Lr})),n.d(e,"interpolateHclLong",(function(){return Pr})),n.d(e,"interpolateCubehelix",(function(){return Gr})),n.d(e,"interpolateCubehelixLong",(function(){return Wr})),n.d(e,"piecewise",(function(){return Kr})),n.d(e,"quantize",(function(){return Jr})),n.d(e,"path",(function(){return qo})),n.d(e,"polygonArea",(function(){return ug})),n.d(e,"polygonCentroid",(function(){return cg})),n.d(e,"polygonHull",(function(){return dg})),n.d(e,"polygonContains",(function(){return pg})),n.d(e,"polygonLength",(function(){return gg})),n.d(e,"quadtree",(function(){return yu})),n.d(e,"randomUniform",(function(){return bg})),n.d(e,"randomNormal",(function(){return mg})),n.d(e,"randomLogNormal",(function(){return vg})),n.d(e,"randomBates",(function(){return wg})),n.d(e,"randomIrwinHall",(function(){return _g})),n.d(e,"randomExponential",(function(){return xg})),n.d(e,"scaleBand",(function(){return Cg})),n.d(e,"scalePoint",(function(){return Og})),n.d(e,"scaleIdentity",(function(){return $g})),n.d(e,"scaleLinear",(function(){return Vg})),n.d(e,"scaleLog",(function(){return ey})),n.d(e,"scaleSymlog",(function(){return ay})),n.d(e,"scaleOrdinal",(function(){return Dg})),n.d(e,"scaleImplicit",(function(){return Tg})),n.d(e,"scalePow",(function(){return fy})),n.d(e,"scaleSqrt",(function(){return ly})),n.d(e,"scaleQuantile",(function(){return hy})),n.d(e,"scaleQuantize",(function(){return dy})),n.d(e,"scaleThreshold",(function(){return py})),n.d(e,"scaleTime",(function(){return ev})),n.d(e,"scaleUtc",(function(){return lv})),n.d(e,"scaleSequential",(function(){return pv})),n.d(e,"scaleSequentialLog",(function(){return gv})),n.d(e,"scaleSequentialPow",(function(){return bv})),n.d(e,"scaleSequentialSqrt",(function(){return mv})),n.d(e,"scaleSequentialSymlog",(function(){return yv})),n.d(e,"scaleSequentialQuantile",(function(){return vv})),n.d(e,"scaleDiverging",(function(){return wv})),n.d(e,"scaleDivergingLog",(function(){return xv})),n.d(e,"scaleDivergingPow",(function(){return Ev})),n.d(e,"scaleDivergingSqrt",(function(){return Av})),n.d(e,"scaleDivergingSymlog",(function(){return kv})),n.d(e,"tickFormat",(function(){return Yg})),n.d(e,"schemeCategory10",(function(){return Mv})),n.d(e,"schemeAccent",(function(){return Tv})),n.d(e,"schemeDark2",(function(){return Dv})),n.d(e,"schemePaired",(function(){return Cv})),n.d(e,"schemePastel1",(function(){return Ov})),n.d(e,"schemePastel2",(function(){return Rv})),n.d(e,"schemeSet1",(function(){return Nv})),n.d(e,"schemeSet2",(function(){return Iv})),n.d(e,"schemeSet3",(function(){return Bv})),n.d(e,"schemeTableau10",(function(){return Lv})),n.d(e,"interpolateBrBG",(function(){return qv})),n.d(e,"schemeBrBG",(function(){return Fv})),n.d(e,"interpolatePRGn",(function(){return Uv})),n.d(e,"schemePRGn",(function(){return jv})),n.d(e,"interpolatePiYG",(function(){return Yv})),n.d(e,"schemePiYG",(function(){return zv})),n.d(e,"interpolatePuOr",(function(){return Vv})),n.d(e,"schemePuOr",(function(){return Hv})),n.d(e,"interpolateRdBu",(function(){return Gv})),n.d(e,"schemeRdBu",(function(){return $v})),n.d(e,"interpolateRdGy",(function(){return Kv})),n.d(e,"schemeRdGy",(function(){return Wv})),n.d(e,"interpolateRdYlBu",(function(){return Zv})),n.d(e,"schemeRdYlBu",(function(){return Xv})),n.d(e,"interpolateRdYlGn",(function(){return Qv})),n.d(e,"schemeRdYlGn",(function(){return Jv})),n.d(e,"interpolateSpectral",(function(){return e_})),n.d(e,"schemeSpectral",(function(){return t_})),n.d(e,"interpolateBuGn",(function(){return r_})),n.d(e,"schemeBuGn",(function(){return n_})),n.d(e,"interpolateBuPu",(function(){return a_})),n.d(e,"schemeBuPu",(function(){return i_})),n.d(e,"interpolateGnBu",(function(){return s_})),n.d(e,"schemeGnBu",(function(){return o_})),n.d(e,"interpolateOrRd",(function(){return c_})),n.d(e,"schemeOrRd",(function(){return u_})),n.d(e,"interpolatePuBuGn",(function(){return l_})),n.d(e,"schemePuBuGn",(function(){return f_})),n.d(e,"interpolatePuBu",(function(){return d_})),n.d(e,"schemePuBu",(function(){return h_})),n.d(e,"interpolatePuRd",(function(){return g_})),n.d(e,"schemePuRd",(function(){return p_})),n.d(e,"interpolateRdPu",(function(){return b_})),n.d(e,"schemeRdPu",(function(){return y_})),n.d(e,"interpolateYlGnBu",(function(){return v_})),n.d(e,"schemeYlGnBu",(function(){return m_})),n.d(e,"interpolateYlGn",(function(){return w_})),n.d(e,"schemeYlGn",(function(){return __})),n.d(e,"interpolateYlOrBr",(function(){return k_})),n.d(e,"schemeYlOrBr",(function(){return x_})),n.d(e,"interpolateYlOrRd",(function(){return A_})),n.d(e,"schemeYlOrRd",(function(){return E_})),n.d(e,"interpolateBlues",(function(){return M_})),n.d(e,"schemeBlues",(function(){return S_})),n.d(e,"interpolateGreens",(function(){return D_})),n.d(e,"schemeGreens",(function(){return T_})),n.d(e,"interpolateGreys",(function(){return O_})),n.d(e,"schemeGreys",(function(){return C_})),n.d(e,"interpolatePurples",(function(){return N_})),n.d(e,"schemePurples",(function(){return R_})),n.d(e,"interpolateReds",(function(){return B_})),n.d(e,"schemeReds",(function(){return I_})),n.d(e,"interpolateOranges",(function(){return P_})),n.d(e,"schemeOranges",(function(){return L_})),n.d(e,"interpolateCividis",(function(){return F_})),n.d(e,"interpolateCubehelixDefault",(function(){return q_})),n.d(e,"interpolateRainbow",(function(){return Y_})),n.d(e,"interpolateWarm",(function(){return j_})),n.d(e,"interpolateCool",(function(){return U_})),n.d(e,"interpolateSinebow",(function(){return G_})),n.d(e,"interpolateTurbo",(function(){return W_})),n.d(e,"interpolateViridis",(function(){return X_})),n.d(e,"interpolateMagma",(function(){return Z_})),n.d(e,"interpolateInferno",(function(){return J_})),n.d(e,"interpolatePlasma",(function(){return Q_})),n.d(e,"create",(function(){return De})),n.d(e,"creator",(function(){return wt})),n.d(e,"local",(function(){return Oe})),n.d(e,"matcher",(function(){return St})),n.d(e,"mouse",(function(){return Be})),n.d(e,"namespace",(function(){return mt})),n.d(e,"namespaces",(function(){return bt})),n.d(e,"clientPoint",(function(){return Ie})),n.d(e,"select",(function(){return Te})),n.d(e,"selectAll",(function(){return Le})),n.d(e,"selection",(function(){return Me})),n.d(e,"selector",(function(){return kt})),n.d(e,"selectorAll",(function(){return At})),n.d(e,"style",(function(){return Yt})),n.d(e,"touch",(function(){return Pe})),n.d(e,"touches",(function(){return Fe})),n.d(e,"window",(function(){return qt})),n.d(e,"event",(function(){return pe})),n.d(e,"customEvent",(function(){return _e})),n.d(e,"arc",(function(){return vw})),n.d(e,"area",(function(){return Aw})),n.d(e,"line",(function(){return Ew})),n.d(e,"pie",(function(){return Tw})),n.d(e,"areaRadial",(function(){return Iw})),n.d(e,"radialArea",(function(){return Iw})),n.d(e,"lineRadial",(function(){return Nw})),n.d(e,"radialLine",(function(){return Nw})),n.d(e,"pointRadial",(function(){return Bw})),n.d(e,"linkHorizontal",(function(){return Yw})),n.d(e,"linkVertical",(function(){return Hw})),n.d(e,"linkRadial",(function(){return Vw})),n.d(e,"symbol",(function(){return cx})),n.d(e,"symbols",(function(){return ux})),n.d(e,"symbolCircle",(function(){return $w})),n.d(e,"symbolCross",(function(){return Gw})),n.d(e,"symbolDiamond",(function(){return Xw})),n.d(e,"symbolSquare",(function(){return ex})),n.d(e,"symbolStar",(function(){return tx})),n.d(e,"symbolTriangle",(function(){return rx})),n.d(e,"symbolWye",(function(){return sx})),n.d(e,"curveBasisClosed",(function(){return gx})),n.d(e,"curveBasisOpen",(function(){return bx})),n.d(e,"curveBasis",(function(){return dx})),n.d(e,"curveBundle",(function(){return vx})),n.d(e,"curveCardinalClosed",(function(){return Ex})),n.d(e,"curveCardinalOpen",(function(){return Sx})),n.d(e,"curveCardinal",(function(){return xx})),n.d(e,"curveCatmullRomClosed",(function(){return Ox})),n.d(e,"curveCatmullRomOpen",(function(){return Nx})),n.d(e,"curveCatmullRom",(function(){return Dx})),n.d(e,"curveLinearClosed",(function(){return Bx})),n.d(e,"curveLinear",(function(){return ww})),n.d(e,"curveMonotoneX",(function(){return Yx})),n.d(e,"curveMonotoneY",(function(){return Hx})),n.d(e,"curveNatural",(function(){return Gx})),n.d(e,"curveStep",(function(){return Kx})),n.d(e,"curveStepAfter",(function(){return Zx})),n.d(e,"curveStepBefore",(function(){return Xx})),n.d(e,"stack",(function(){return ek})),n.d(e,"stackOffsetExpand",(function(){return nk})),n.d(e,"stackOffsetDiverging",(function(){return rk})),n.d(e,"stackOffsetNone",(function(){return Jx})),n.d(e,"stackOffsetSilhouette",(function(){return ik})),n.d(e,"stackOffsetWiggle",(function(){return ak})),n.d(e,"stackOrderAppearance",(function(){return ok})),n.d(e,"stackOrderAscending",(function(){return uk})),n.d(e,"stackOrderDescending",(function(){return fk})),n.d(e,"stackOrderInsideOut",(function(){return lk})),n.d(e,"stackOrderNone",(function(){return Qx})),n.d(e,"stackOrderReverse",(function(){return hk})),n.d(e,"timeInterval",(function(){return by})),n.d(e,"timeMillisecond",(function(){return tb})),n.d(e,"timeMilliseconds",(function(){return eb})),n.d(e,"utcMillisecond",(function(){return tb})),n.d(e,"utcMilliseconds",(function(){return eb})),n.d(e,"timeSecond",(function(){return Zy})),n.d(e,"timeSeconds",(function(){return Jy})),n.d(e,"utcSecond",(function(){return Zy})),n.d(e,"utcSeconds",(function(){return Jy})),n.d(e,"timeMinute",(function(){return Wy})),n.d(e,"timeMinutes",(function(){return Ky})),n.d(e,"timeHour",(function(){return Vy})),n.d(e,"timeHours",(function(){return $y})),n.d(e,"timeDay",(function(){return zy})),n.d(e,"timeDays",(function(){return Yy})),n.d(e,"timeWeek",(function(){return My})),n.d(e,"timeWeeks",(function(){return Iy})),n.d(e,"timeSunday",(function(){return My})),n.d(e,"timeSundays",(function(){return Iy})),n.d(e,"timeMonday",(function(){return Ty})),n.d(e,"timeMondays",(function(){return By})),n.d(e,"timeTuesday",(function(){return Dy})),n.d(e,"timeTuesdays",(function(){return Ly})),n.d(e,"timeWednesday",(function(){return Cy})),n.d(e,"timeWednesdays",(function(){return Py})),n.d(e,"timeThursday",(function(){return Oy})),n.d(e,"timeThursdays",(function(){return Fy})),n.d(e,"timeFriday",(function(){return Ry})),n.d(e,"timeFridays",(function(){return qy})),n.d(e,"timeSaturday",(function(){return Ny})),n.d(e,"timeSaturdays",(function(){return jy})),n.d(e,"timeMonth",(function(){return xy})),n.d(e,"timeMonths",(function(){return ky})),n.d(e,"timeYear",(function(){return vy})),n.d(e,"timeYears",(function(){return _y})),n.d(e,"utcMinute",(function(){return cv})),n.d(e,"utcMinutes",(function(){return fv})),n.d(e,"utcHour",(function(){return ov})),n.d(e,"utcHours",(function(){return sv})),n.d(e,"utcDay",(function(){return mb})),n.d(e,"utcDays",(function(){return vb})),n.d(e,"utcWeek",(function(){return rb})),n.d(e,"utcWeeks",(function(){return fb})),n.d(e,"utcSunday",(function(){return rb})),n.d(e,"utcSundays",(function(){return fb})),n.d(e,"utcMonday",(function(){return ib})),n.d(e,"utcMondays",(function(){return lb})),n.d(e,"utcTuesday",(function(){return ab})),n.d(e,"utcTuesdays",(function(){return hb})),n.d(e,"utcWednesday",(function(){return ob})),n.d(e,"utcWednesdays",(function(){return db})),n.d(e,"utcThursday",(function(){return sb})),n.d(e,"utcThursdays",(function(){return pb})),n.d(e,"utcFriday",(function(){return ub})),n.d(e,"utcFridays",(function(){return gb})),n.d(e,"utcSaturday",(function(){return cb})),n.d(e,"utcSaturdays",(function(){return yb})),n.d(e,"utcMonth",(function(){return rv})),n.d(e,"utcMonths",(function(){return iv})),n.d(e,"utcYear",(function(){return wb})),n.d(e,"utcYears",(function(){return xb})),n.d(e,"timeFormatDefaultLocale",(function(){return zm})),n.d(e,"timeFormat",(function(){return Tb})),n.d(e,"timeParse",(function(){return Db})),n.d(e,"utcFormat",(function(){return Cb})),n.d(e,"utcParse",(function(){return Ob})),n.d(e,"timeFormatLocale",(function(){return Sb})),n.d(e,"isoFormat",(function(){return Ym})),n.d(e,"isoParse",(function(){return Hm})),n.d(e,"now",(function(){return ui})),n.d(e,"timer",(function(){return li})),n.d(e,"timerFlush",(function(){return hi})),n.d(e,"timeout",(function(){return yi})),n.d(e,"interval",(function(){return bi})),n.d(e,"transition",(function(){return ea})),n.d(e,"active",(function(){return Wa})),n.d(e,"interrupt",(function(){return Oi})),n.d(e,"voronoi",(function(){return Zk})),n.d(e,"zoom",(function(){return lE})),n.d(e,"zoomTransform",(function(){return nE})),n.d(e,"zoomIdentity",(function(){return eE}))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,4],i=[2,4],a=[1,9],o=[1,11],s=[1,12],u=[1,14],c=[1,15],f=[1,17],l=[1,18],h=[1,19],d=[1,20],p=[1,21],g=[1,22],y=[1,24],b=[1,25],m=[1,4,5,10,15,16,18,20,21,22,23,24,26,28,29,30,41],v=[1,33],_=[4,5,10,15,16,18,20,21,22,23,24,26,30,41],w=[4,5,10,15,16,18,20,21,22,23,24,26,29,30,41],x=[4,5,10,15,16,18,20,21,22,23,24,26,28,30,41],k=[39,40,41],E={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,participant:10,actor:11,AS:12,restOfLine:13,signal:14,activate:15,deactivate:16,note_statement:17,title:18,text2:19,loop:20,end:21,rect:22,opt:23,alt:24,else_sections:25,par:26,par_sections:27,and:28,else:29,note:30,placement:31,over:32,actor_pair:33,spaceList:34,",":35,left_of:36,right_of:37,signaltype:38,"+":39,"-":40,ACTOR:41,SOLID_OPEN_ARROW:42,DOTTED_OPEN_ARROW:43,SOLID_ARROW:44,DOTTED_ARROW:45,SOLID_CROSS:46,DOTTED_CROSS:47,TXT:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",10:"participant",12:"AS",13:"restOfLine",15:"activate",16:"deactivate",18:"title",20:"loop",21:"end",22:"rect",23:"opt",24:"alt",26:"par",28:"and",29:"else",30:"note",32:"over",35:",",36:"left_of",37:"right_of",39:"+",40:"-",41:"ACTOR",42:"SOLID_OPEN_ARROW",43:"DOTTED_OPEN_ARROW",44:"SOLID_ARROW",45:"DOTTED_ARROW",46:"SOLID_CROSS",47:"DOTTED_CROSS",48:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,5],[9,3],[9,2],[9,3],[9,3],[9,2],[9,3],[9,4],[9,4],[9,4],[9,4],[9,4],[27,1],[27,4],[25,1],[25,4],[17,4],[17,4],[34,2],[34,1],[33,3],[33,1],[31,1],[31,1],[14,5],[14,5],[14,4],[11,1],[38,1],[38,1],[38,1],[38,1],[38,1],[38,1],[19,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.apply(a[s]),a[s];case 4:this.$=[];break;case 5:a[s-1].push(a[s]),this.$=a[s-1];break;case 6:case 7:this.$=a[s];break;case 8:this.$=[];break;case 9:a[s-3].description=a[s-1],this.$=a[s-3];break;case 10:this.$=a[s-1];break;case 12:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[s-1]};break;case 13:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[s-1]};break;case 15:this.$=[{type:"setTitle",text:a[s-1]}];break;case 16:a[s-1].unshift({type:"loopStart",loopText:a[s-2],signalType:r.LINETYPE.LOOP_START}),a[s-1].push({type:"loopEnd",loopText:a[s-2],signalType:r.LINETYPE.LOOP_END}),this.$=a[s-1];break;case 17:a[s-1].unshift({type:"rectStart",color:a[s-2],signalType:r.LINETYPE.RECT_START}),a[s-1].push({type:"rectEnd",color:a[s-2],signalType:r.LINETYPE.RECT_END}),this.$=a[s-1];break;case 18:a[s-1].unshift({type:"optStart",optText:a[s-2],signalType:r.LINETYPE.OPT_START}),a[s-1].push({type:"optEnd",optText:a[s-2],signalType:r.LINETYPE.OPT_END}),this.$=a[s-1];break;case 19:a[s-1].unshift({type:"altStart",altText:a[s-2],signalType:r.LINETYPE.ALT_START}),a[s-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=a[s-1];break;case 20:a[s-1].unshift({type:"parStart",parText:a[s-2],signalType:r.LINETYPE.PAR_START}),a[s-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=a[s-1];break;case 22:this.$=a[s-3].concat([{type:"and",parText:a[s-1],signalType:r.LINETYPE.PAR_AND},a[s]]);break;case 24:this.$=a[s-3].concat([{type:"else",altText:a[s-1],signalType:r.LINETYPE.ALT_ELSE},a[s]]);break;case 25:this.$=[a[s-1],{type:"addNote",placement:a[s-2],actor:a[s-1].actor,text:a[s]}];break;case 26:a[s-2]=[].concat(a[s-1],a[s-1]).slice(0,2),a[s-2][0]=a[s-2][0].actor,a[s-2][1]=a[s-2][1].actor,this.$=[a[s-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:a[s-2].slice(0,2),text:a[s]}];break;case 29:this.$=[a[s-2],a[s]];break;case 30:this.$=a[s];break;case 31:this.$=r.PLACEMENT.LEFTOF;break;case 32:this.$=r.PLACEMENT.RIGHTOF;break;case 33:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:a[s-1]}];break;case 34:this.$=[a[s-4],a[s-1],{type:"addMessage",from:a[s-4].actor,to:a[s-1].actor,signalType:a[s-3],msg:a[s]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:a[s-4]}];break;case 35:this.$=[a[s-3],a[s-1],{type:"addMessage",from:a[s-3].actor,to:a[s-1].actor,signalType:a[s-2],msg:a[s]}];break;case 36:this.$={type:"addActor",actor:a[s]};break;case 37:this.$=r.LINETYPE.SOLID_OPEN;break;case 38:this.$=r.LINETYPE.DOTTED_OPEN;break;case 39:this.$=r.LINETYPE.SOLID;break;case 40:this.$=r.LINETYPE.DOTTED;break;case 41:this.$=r.LINETYPE.SOLID_CROSS;break;case 42:this.$=r.LINETYPE.DOTTED_CROSS;break;case 43:this.$=a[s].substring(1).trim().replace(/\\n/gm,"\n")}},table:[{3:1,4:e,5:n,6:r},{1:[3]},{3:5,4:e,5:n,6:r},{3:6,4:e,5:n,6:r},t([1,4,5,10,15,16,18,20,22,23,24,26,30,41],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:o,8:8,9:10,10:s,11:23,14:13,15:u,16:c,17:16,18:f,20:l,22:h,23:d,24:p,26:g,30:y,41:b},t(m,[2,5]),{9:26,10:s,11:23,14:13,15:u,16:c,17:16,18:f,20:l,22:h,23:d,24:p,26:g,30:y,41:b},t(m,[2,7]),t(m,[2,8]),{11:27,41:b},{5:[1,28]},{11:29,41:b},{11:30,41:b},{5:[1,31]},{19:32,48:v},{13:[1,34]},{13:[1,35]},{13:[1,36]},{13:[1,37]},{13:[1,38]},{38:39,42:[1,40],43:[1,41],44:[1,42],45:[1,43],46:[1,44],47:[1,45]},{31:46,32:[1,47],36:[1,48],37:[1,49]},t([5,12,35,42,43,44,45,46,47,48],[2,36]),t(m,[2,6]),{5:[1,51],12:[1,50]},t(m,[2,11]),{5:[1,52]},{5:[1,53]},t(m,[2,14]),{5:[1,54]},{5:[2,43]},t(_,i,{7:55}),t(_,i,{7:56}),t(_,i,{7:57}),t(w,i,{25:58,7:59}),t(x,i,{27:60,7:61}),{11:64,39:[1,62],40:[1,63],41:b},t(k,[2,37]),t(k,[2,38]),t(k,[2,39]),t(k,[2,40]),t(k,[2,41]),t(k,[2,42]),{11:65,41:b},{11:67,33:66,41:b},{41:[2,31]},{41:[2,32]},{13:[1,68]},t(m,[2,10]),t(m,[2,12]),t(m,[2,13]),t(m,[2,15]),{4:a,5:o,8:8,9:10,10:s,11:23,14:13,15:u,16:c,17:16,18:f,20:l,21:[1,69],22:h,23:d,24:p,26:g,30:y,41:b},{4:a,5:o,8:8,9:10,10:s,11:23,14:13,15:u,16:c,17:16,18:f,20:l,21:[1,70],22:h,23:d,24:p,26:g,30:y,41:b},{4:a,5:o,8:8,9:10,10:s,11:23,14:13,15:u,16:c,17:16,18:f,20:l,21:[1,71],22:h,23:d,24:p,26:g,30:y,41:b},{21:[1,72]},{4:a,5:o,8:8,9:10,10:s,11:23,14:13,15:u,16:c,17:16,18:f,20:l,21:[2,23],22:h,23:d,24:p,26:g,29:[1,73],30:y,41:b},{21:[1,74]},{4:a,5:o,8:8,9:10,10:s,11:23,14:13,15:u,16:c,17:16,18:f,20:l,21:[2,21],22:h,23:d,24:p,26:g,28:[1,75],30:y,41:b},{11:76,41:b},{11:77,41:b},{19:78,48:v},{19:79,48:v},{19:80,48:v},{35:[1,81],48:[2,30]},{5:[1,82]},t(m,[2,16]),t(m,[2,17]),t(m,[2,18]),t(m,[2,19]),{13:[1,83]},t(m,[2,20]),{13:[1,84]},{19:85,48:v},{19:86,48:v},{5:[2,35]},{5:[2,25]},{5:[2,26]},{11:87,41:b},t(m,[2,9]),t(w,i,{7:59,25:88}),t(x,i,{7:61,27:89}),{5:[2,33]},{5:[2,34]},{48:[2,29]},{21:[2,24]},{21:[2,22]}],defaultActions:{5:[2,1],6:[2,2],33:[2,43],48:[2,31],49:[2,32],78:[2,35],79:[2,25],80:[2,26],85:[2,33],86:[2,34],87:[2,29],88:[2,24],89:[2,22]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,f=0,l=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;a.push(b);var m=p.options&&p.options.ranges;function v(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,w,x,k,E,A,S,M,T,D={};;){if(x=n[n.length-1],this.defaultActions[x]?k=this.defaultActions[x]:(null==_&&(_=v()),k=o[x]&&o[x][_]),void 0===k||!k.length||!k[0]){var C="";for(A in T=[],o[x])this.terminals_[A]&&A>l&&T.push("'"+this.terminals_[A]+"'");C=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(u+1)+": Unexpected "+(_==h?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:b,expected:T})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,w?(_=w,w=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,b=p.yylloc,f>0&&f--);break;case 2:if(S=this.productions_[k[1]][1],D.$=i[i.length-S],D._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(D._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(D,[s,c,u,g.yy,k[1],i,a].concat(d))))return E;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[k[1]][0]),i.push(D.$),a.push(D._$),M=o[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},A={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,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},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={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},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 5;case 1:case 2:case 3:case 4:break;case 5:return this.begin("ID"),10;case 6:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),41;case 7:return this.popState(),this.popState(),this.begin("LINE"),12;case 8:return this.popState(),this.popState(),5;case 9:return this.begin("LINE"),20;case 10:return this.begin("LINE"),22;case 11:return this.begin("LINE"),23;case 12:return this.begin("LINE"),24;case 13:return this.begin("LINE"),29;case 14:return this.begin("LINE"),26;case 15:return this.begin("LINE"),28;case 16:return this.popState(),13;case 17:return 21;case 18:return 36;case 19:return 37;case 20:return 32;case 21:return 30;case 22:return this.begin("ID"),15;case 23:return this.begin("ID"),16;case 24:return 18;case 25:return 6;case 26:return 35;case 27:return 5;case 28:return e.yytext=e.yytext.trim(),41;case 29:return 44;case 30:return 45;case 31:return 42;case 32:return 43;case 33:return 46;case 34:return 47;case 35:return 48;case 36:return 39;case 37:return 40;case 38:return 5;case 39:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/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,/^(?:[^#\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,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?::[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[2,3,16],inclusive:!1},ALIAS:{rules:[2,3,7,8],inclusive:!1},ID:{rules:[2,3,6],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],inclusive:!0}}};function S(){this.yy={}}return E.lexer=A,S.prototype=E,E.Parser=S,new S}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(17).readFileSync(n(18).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(5),n(7)(t))},function(t,e){"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}}},function(t,e,n){var r=n(6),i=r.Buffer;function a(t,e){for(var n in t)e[n]=t[n]}function o(t,e,n){return i(t,e,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=r:(a(r,e),e.Buffer=o),o.prototype=Object.create(i.prototype),a(i,o),o.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return i(t,e,n)},o.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=i(t);return void 0!==e?"string"==typeof n?r.fill(e,n):r.fill(e):r.fill(0),r},o.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i(t)},o.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r.SlowBuffer(t)}},function(t,e,n){(function(t){!function(t,e){"use strict";function r(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var n=function(){};n.prototype=e.prototype,t.prototype=new n,t.prototype.constructor=t}function a(t,e,n){if(a.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(n=e,e=10),this._init(t||0,e||10,n||"be"))}var o;"object"==typeof t?t.exports=a:e.BN=a,a.BN=a,a.wordSize=26;try{o=n(161).Buffer}catch(t){}function s(t,e,n){for(var r=0,i=Math.min(t.length,n),a=e;a<i;a++){var o=t.charCodeAt(a)-48;r<<=4,r|=o>=49&&o<=54?o-49+10:o>=17&&o<=22?o-17+10:15&o}return r}function u(t,e,n,r){for(var i=0,a=Math.min(t.length,n),o=e;o<a;o++){var s=t.charCodeAt(o)-48;i*=r,i+=s>=49?s-49+10:s>=17?s-17+10:s}return i}a.isBN=function(t){return t instanceof a||null!==t&&"object"==typeof t&&t.constructor.wordSize===a.wordSize&&Array.isArray(t.words)},a.max=function(t,e){return t.cmp(e)>0?t:e},a.min=function(t,e){return t.cmp(e)<0?t:e},a.prototype._init=function(t,e,n){if("number"==typeof t)return this._initNumber(t,e,n);if("object"==typeof t)return this._initArray(t,e,n);"hex"===e&&(e=16),r(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),"-"===t[0]&&(this.negative=1),this.strip(),"le"===n&&this._initArray(this.toArray(),e,n)},a.prototype._initNumber=function(t,e,n){t<0&&(this.negative=1,t=-t),t<67108864?(this.words=[67108863&t],this.length=1):t<4503599627370496?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(t<9007199254740992),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),e,n)},a.prototype._initArray=function(t,e,n){if(r("number"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var a,o,s=0;if("be"===n)for(i=t.length-1,a=0;i>=0;i-=3)o=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[a]|=o<<s&67108863,this.words[a+1]=o>>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===n)for(i=0,a=0;i<t.length;i+=3)o=t[i]|t[i+1]<<8|t[i+2]<<16,this.words[a]|=o<<s&67108863,this.words[a+1]=o>>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var r,i,a=0;for(n=t.length-6,r=0;n>=e;n-=6)i=s(t,n,n+6),this.words[r]|=i<<a&67108863,this.words[r+1]|=i>>>26-a&4194303,(a+=24)>=26&&(a-=26,r++);n+6!==e&&(i=s(t,e,n+6),this.words[r]|=i<<a&67108863,this.words[r+1]|=i>>>26-a&4194303),this.strip()},a.prototype._parseBase=function(t,e,n){this.words=[0],this.length=1;for(var r=0,i=1;i<=67108863;i*=e)r++;r--,i=i/e|0;for(var a=t.length-n,o=a%r,s=Math.min(a,a-o)+n,c=0,f=n;f<s;f+=r)c=u(t,f,f+r,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==o){var l=1;for(c=u(t,f,t.length,e),f=0;f<o;f++)l*=e;this.imuln(l),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}},a.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e<this.length;e++)t.words[e]=this.words[e];t.length=this.length,t.negative=this.negative,t.red=this.red},a.prototype.clone=function(){var t=new a(null);return this.copy(t),t},a.prototype._expand=function(t){for(;this.length<t;)this.words[this.length++]=0;return this},a.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],l=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(t,e,n){n.negative=e.negative^t.negative;var r=t.length+e.length|0;n.length=r,r=r-1|0;var i=0|t.words[0],a=0|e.words[0],o=i*a,s=67108863&o,u=o/67108864|0;n.words[0]=s;for(var c=1;c<r;c++){for(var f=u>>>26,l=67108863&u,h=Math.min(c,e.length-1),d=Math.max(0,c-t.length+1);d<=h;d++){var p=c-d|0;f+=(o=(i=0|t.words[p])*(a=0|e.words[d])+l)/67108864|0,l=67108863&o}n.words[c]=0|l,u=0|f}return 0!==u?n.words[c]=0|u:n.length--,n.strip()}a.prototype.toString=function(t,e){var n;if(e=0|e||1,16===(t=t||10)||"hex"===t){n="";for(var i=0,a=0,o=0;o<this.length;o++){var s=this.words[o],u=(16777215&(s<<i|a)).toString(16);n=0!==(a=s>>>24-i&16777215)||o!==this.length-1?c[6-u.length]+u+n:u+n,(i+=2)>=26&&(i-=26,o--)}for(0!==a&&(n=a.toString(16)+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(t===(0|t)&&t>=2&&t<=36){var h=f[t],d=l[t];n="";var p=this.clone();for(p.negative=0;!p.isZero();){var g=p.modn(d).toString(t);n=(p=p.idivn(d)).isZero()?g+n:c[h-g.length]+g+n}for(this.isZero()&&(n="0"+n);n.length%e!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}r(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&r(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(t,e){return r(void 0!==o),this.toArrayLike(o,t,e)},a.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},a.prototype.toArrayLike=function(t,e,n){var i=this.byteLength(),a=n||Math.max(1,i);r(i<=a,"byte array longer than desired length"),r(a>0,"Requested array length <= 0"),this.strip();var o,s,u="le"===e,c=new t(a),f=this.clone();if(u){for(s=0;!f.isZero();s++)o=f.andln(255),f.iushrn(8),c[s]=o;for(;s<a;s++)c[s]=0}else{for(s=0;s<a-i;s++)c[s]=0;for(s=0;!f.isZero();s++)o=f.andln(255),f.iushrn(8),c[a-s-1]=o}return c},Math.clz32?a.prototype._countBits=function(t){return 32-Math.clz32(t)}:a.prototype._countBits=function(t){var e=t,n=0;return e>=4096&&(n+=13,e>>>=13),e>=64&&(n+=7,e>>>=7),e>=8&&(n+=4,e>>>=4),e>=2&&(n+=2,e>>>=2),n+e},a.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,n=0;return 0==(8191&e)&&(n+=13,e>>>=13),0==(127&e)&&(n+=7,e>>>=7),0==(15&e)&&(n+=4,e>>>=4),0==(3&e)&&(n+=2,e>>>=2),0==(1&e)&&n++,n},a.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;e<this.length;e++){var n=this._zeroBits(this.words[e]);if(t+=n,26!==n)break}return t},a.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},a.prototype.toTwos=function(t){return 0!==this.negative?this.abs().inotn(t).iaddn(1):this.clone()},a.prototype.fromTwos=function(t){return this.testn(t-1)?this.notn(t).iaddn(1).ineg():this.clone()},a.prototype.isNeg=function(){return 0!==this.negative},a.prototype.neg=function(){return this.clone().ineg()},a.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},a.prototype.iuor=function(t){for(;this.length<t.length;)this.words[this.length++]=0;for(var e=0;e<t.length;e++)this.words[e]=this.words[e]|t.words[e];return this.strip()},a.prototype.ior=function(t){return r(0==(this.negative|t.negative)),this.iuor(t)},a.prototype.or=function(t){return this.length>t.length?this.clone().ior(t):t.clone().ior(this)},a.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},a.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var n=0;n<e.length;n++)this.words[n]=this.words[n]&t.words[n];return this.length=e.length,this.strip()},a.prototype.iand=function(t){return r(0==(this.negative|t.negative)),this.iuand(t)},a.prototype.and=function(t){return this.length>t.length?this.clone().iand(t):t.clone().iand(this)},a.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},a.prototype.iuxor=function(t){var e,n;this.length>t.length?(e=this,n=t):(e=t,n=this);for(var r=0;r<n.length;r++)this.words[r]=e.words[r]^n.words[r];if(this!==e)for(;r<e.length;r++)this.words[r]=e.words[r];return this.length=e.length,this.strip()},a.prototype.ixor=function(t){return r(0==(this.negative|t.negative)),this.iuxor(t)},a.prototype.xor=function(t){return this.length>t.length?this.clone().ixor(t):t.clone().ixor(this)},a.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},a.prototype.inotn=function(t){r("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),n=t%26;this._expand(e),n>0&&e--;for(var i=0;i<e;i++)this.words[i]=67108863&~this.words[i];return n>0&&(this.words[i]=~this.words[i]&67108863>>26-n),this.strip()},a.prototype.notn=function(t){return this.clone().inotn(t)},a.prototype.setn=function(t,e){r("number"==typeof t&&t>=0);var n=t/26|0,i=t%26;return this._expand(n+1),this.words[n]=e?this.words[n]|1<<i:this.words[n]&~(1<<i),this.strip()},a.prototype.iadd=function(t){var e,n,r;if(0!==this.negative&&0===t.negative)return this.negative=0,e=this.isub(t),this.negative^=1,this._normSign();if(0===this.negative&&0!==t.negative)return t.negative=0,e=this.isub(t),t.negative=1,e._normSign();this.length>t.length?(n=this,r=t):(n=t,r=this);for(var i=0,a=0;a<r.length;a++)e=(0|n.words[a])+(0|r.words[a])+i,this.words[a]=67108863&e,i=e>>>26;for(;0!==i&&a<n.length;a++)e=(0|n.words[a])+i,this.words[a]=67108863&e,i=e>>>26;if(this.length=n.length,0!==i)this.words[this.length]=i,this.length++;else if(n!==this)for(;a<n.length;a++)this.words[a]=n.words[a];return this},a.prototype.add=function(t){var e;return 0!==t.negative&&0===this.negative?(t.negative=0,e=this.sub(t),t.negative^=1,e):0===t.negative&&0!==this.negative?(this.negative=0,e=t.sub(this),this.negative=1,e):this.length>t.length?this.clone().iadd(t):t.clone().iadd(this)},a.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var n,r,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(n=this,r=t):(n=t,r=this);for(var a=0,o=0;o<r.length;o++)a=(e=(0|n.words[o])-(0|r.words[o])+a)>>26,this.words[o]=67108863&e;for(;0!==a&&o<n.length;o++)a=(e=(0|n.words[o])+a)>>26,this.words[o]=67108863&e;if(0===a&&o<n.length&&n!==this)for(;o<n.length;o++)this.words[o]=n.words[o];return this.length=Math.max(this.length,o),n!==this&&(this.negative=1),this.strip()},a.prototype.sub=function(t){return this.clone().isub(t)};var d=function(t,e,n){var r,i,a,o=t.words,s=e.words,u=n.words,c=0,f=0|o[0],l=8191&f,h=f>>>13,d=0|o[1],p=8191&d,g=d>>>13,y=0|o[2],b=8191&y,m=y>>>13,v=0|o[3],_=8191&v,w=v>>>13,x=0|o[4],k=8191&x,E=x>>>13,A=0|o[5],S=8191&A,M=A>>>13,T=0|o[6],D=8191&T,C=T>>>13,O=0|o[7],R=8191&O,N=O>>>13,I=0|o[8],B=8191&I,L=I>>>13,P=0|o[9],F=8191&P,q=P>>>13,j=0|s[0],U=8191&j,z=j>>>13,Y=0|s[1],H=8191&Y,V=Y>>>13,$=0|s[2],G=8191&$,W=$>>>13,K=0|s[3],X=8191&K,Z=K>>>13,J=0|s[4],Q=8191&J,tt=J>>>13,et=0|s[5],nt=8191&et,rt=et>>>13,it=0|s[6],at=8191&it,ot=it>>>13,st=0|s[7],ut=8191&st,ct=st>>>13,ft=0|s[8],lt=8191&ft,ht=ft>>>13,dt=0|s[9],pt=8191&dt,gt=dt>>>13;n.negative=t.negative^e.negative,n.length=19;var yt=(c+(r=Math.imul(l,U))|0)+((8191&(i=(i=Math.imul(l,z))+Math.imul(h,U)|0))<<13)|0;c=((a=Math.imul(h,z))+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,r=Math.imul(p,U),i=(i=Math.imul(p,z))+Math.imul(g,U)|0,a=Math.imul(g,z);var bt=(c+(r=r+Math.imul(l,H)|0)|0)+((8191&(i=(i=i+Math.imul(l,V)|0)+Math.imul(h,H)|0))<<13)|0;c=((a=a+Math.imul(h,V)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,r=Math.imul(b,U),i=(i=Math.imul(b,z))+Math.imul(m,U)|0,a=Math.imul(m,z),r=r+Math.imul(p,H)|0,i=(i=i+Math.imul(p,V)|0)+Math.imul(g,H)|0,a=a+Math.imul(g,V)|0;var mt=(c+(r=r+Math.imul(l,G)|0)|0)+((8191&(i=(i=i+Math.imul(l,W)|0)+Math.imul(h,G)|0))<<13)|0;c=((a=a+Math.imul(h,W)|0)+(i>>>13)|0)+(mt>>>26)|0,mt&=67108863,r=Math.imul(_,U),i=(i=Math.imul(_,z))+Math.imul(w,U)|0,a=Math.imul(w,z),r=r+Math.imul(b,H)|0,i=(i=i+Math.imul(b,V)|0)+Math.imul(m,H)|0,a=a+Math.imul(m,V)|0,r=r+Math.imul(p,G)|0,i=(i=i+Math.imul(p,W)|0)+Math.imul(g,G)|0,a=a+Math.imul(g,W)|0;var vt=(c+(r=r+Math.imul(l,X)|0)|0)+((8191&(i=(i=i+Math.imul(l,Z)|0)+Math.imul(h,X)|0))<<13)|0;c=((a=a+Math.imul(h,Z)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,r=Math.imul(k,U),i=(i=Math.imul(k,z))+Math.imul(E,U)|0,a=Math.imul(E,z),r=r+Math.imul(_,H)|0,i=(i=i+Math.imul(_,V)|0)+Math.imul(w,H)|0,a=a+Math.imul(w,V)|0,r=r+Math.imul(b,G)|0,i=(i=i+Math.imul(b,W)|0)+Math.imul(m,G)|0,a=a+Math.imul(m,W)|0,r=r+Math.imul(p,X)|0,i=(i=i+Math.imul(p,Z)|0)+Math.imul(g,X)|0,a=a+Math.imul(g,Z)|0;var _t=(c+(r=r+Math.imul(l,Q)|0)|0)+((8191&(i=(i=i+Math.imul(l,tt)|0)+Math.imul(h,Q)|0))<<13)|0;c=((a=a+Math.imul(h,tt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,r=Math.imul(S,U),i=(i=Math.imul(S,z))+Math.imul(M,U)|0,a=Math.imul(M,z),r=r+Math.imul(k,H)|0,i=(i=i+Math.imul(k,V)|0)+Math.imul(E,H)|0,a=a+Math.imul(E,V)|0,r=r+Math.imul(_,G)|0,i=(i=i+Math.imul(_,W)|0)+Math.imul(w,G)|0,a=a+Math.imul(w,W)|0,r=r+Math.imul(b,X)|0,i=(i=i+Math.imul(b,Z)|0)+Math.imul(m,X)|0,a=a+Math.imul(m,Z)|0,r=r+Math.imul(p,Q)|0,i=(i=i+Math.imul(p,tt)|0)+Math.imul(g,Q)|0,a=a+Math.imul(g,tt)|0;var wt=(c+(r=r+Math.imul(l,nt)|0)|0)+((8191&(i=(i=i+Math.imul(l,rt)|0)+Math.imul(h,nt)|0))<<13)|0;c=((a=a+Math.imul(h,rt)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,r=Math.imul(D,U),i=(i=Math.imul(D,z))+Math.imul(C,U)|0,a=Math.imul(C,z),r=r+Math.imul(S,H)|0,i=(i=i+Math.imul(S,V)|0)+Math.imul(M,H)|0,a=a+Math.imul(M,V)|0,r=r+Math.imul(k,G)|0,i=(i=i+Math.imul(k,W)|0)+Math.imul(E,G)|0,a=a+Math.imul(E,W)|0,r=r+Math.imul(_,X)|0,i=(i=i+Math.imul(_,Z)|0)+Math.imul(w,X)|0,a=a+Math.imul(w,Z)|0,r=r+Math.imul(b,Q)|0,i=(i=i+Math.imul(b,tt)|0)+Math.imul(m,Q)|0,a=a+Math.imul(m,tt)|0,r=r+Math.imul(p,nt)|0,i=(i=i+Math.imul(p,rt)|0)+Math.imul(g,nt)|0,a=a+Math.imul(g,rt)|0;var xt=(c+(r=r+Math.imul(l,at)|0)|0)+((8191&(i=(i=i+Math.imul(l,ot)|0)+Math.imul(h,at)|0))<<13)|0;c=((a=a+Math.imul(h,ot)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,r=Math.imul(R,U),i=(i=Math.imul(R,z))+Math.imul(N,U)|0,a=Math.imul(N,z),r=r+Math.imul(D,H)|0,i=(i=i+Math.imul(D,V)|0)+Math.imul(C,H)|0,a=a+Math.imul(C,V)|0,r=r+Math.imul(S,G)|0,i=(i=i+Math.imul(S,W)|0)+Math.imul(M,G)|0,a=a+Math.imul(M,W)|0,r=r+Math.imul(k,X)|0,i=(i=i+Math.imul(k,Z)|0)+Math.imul(E,X)|0,a=a+Math.imul(E,Z)|0,r=r+Math.imul(_,Q)|0,i=(i=i+Math.imul(_,tt)|0)+Math.imul(w,Q)|0,a=a+Math.imul(w,tt)|0,r=r+Math.imul(b,nt)|0,i=(i=i+Math.imul(b,rt)|0)+Math.imul(m,nt)|0,a=a+Math.imul(m,rt)|0,r=r+Math.imul(p,at)|0,i=(i=i+Math.imul(p,ot)|0)+Math.imul(g,at)|0,a=a+Math.imul(g,ot)|0;var kt=(c+(r=r+Math.imul(l,ut)|0)|0)+((8191&(i=(i=i+Math.imul(l,ct)|0)+Math.imul(h,ut)|0))<<13)|0;c=((a=a+Math.imul(h,ct)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,r=Math.imul(B,U),i=(i=Math.imul(B,z))+Math.imul(L,U)|0,a=Math.imul(L,z),r=r+Math.imul(R,H)|0,i=(i=i+Math.imul(R,V)|0)+Math.imul(N,H)|0,a=a+Math.imul(N,V)|0,r=r+Math.imul(D,G)|0,i=(i=i+Math.imul(D,W)|0)+Math.imul(C,G)|0,a=a+Math.imul(C,W)|0,r=r+Math.imul(S,X)|0,i=(i=i+Math.imul(S,Z)|0)+Math.imul(M,X)|0,a=a+Math.imul(M,Z)|0,r=r+Math.imul(k,Q)|0,i=(i=i+Math.imul(k,tt)|0)+Math.imul(E,Q)|0,a=a+Math.imul(E,tt)|0,r=r+Math.imul(_,nt)|0,i=(i=i+Math.imul(_,rt)|0)+Math.imul(w,nt)|0,a=a+Math.imul(w,rt)|0,r=r+Math.imul(b,at)|0,i=(i=i+Math.imul(b,ot)|0)+Math.imul(m,at)|0,a=a+Math.imul(m,ot)|0,r=r+Math.imul(p,ut)|0,i=(i=i+Math.imul(p,ct)|0)+Math.imul(g,ut)|0,a=a+Math.imul(g,ct)|0;var Et=(c+(r=r+Math.imul(l,lt)|0)|0)+((8191&(i=(i=i+Math.imul(l,ht)|0)+Math.imul(h,lt)|0))<<13)|0;c=((a=a+Math.imul(h,ht)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,r=Math.imul(F,U),i=(i=Math.imul(F,z))+Math.imul(q,U)|0,a=Math.imul(q,z),r=r+Math.imul(B,H)|0,i=(i=i+Math.imul(B,V)|0)+Math.imul(L,H)|0,a=a+Math.imul(L,V)|0,r=r+Math.imul(R,G)|0,i=(i=i+Math.imul(R,W)|0)+Math.imul(N,G)|0,a=a+Math.imul(N,W)|0,r=r+Math.imul(D,X)|0,i=(i=i+Math.imul(D,Z)|0)+Math.imul(C,X)|0,a=a+Math.imul(C,Z)|0,r=r+Math.imul(S,Q)|0,i=(i=i+Math.imul(S,tt)|0)+Math.imul(M,Q)|0,a=a+Math.imul(M,tt)|0,r=r+Math.imul(k,nt)|0,i=(i=i+Math.imul(k,rt)|0)+Math.imul(E,nt)|0,a=a+Math.imul(E,rt)|0,r=r+Math.imul(_,at)|0,i=(i=i+Math.imul(_,ot)|0)+Math.imul(w,at)|0,a=a+Math.imul(w,ot)|0,r=r+Math.imul(b,ut)|0,i=(i=i+Math.imul(b,ct)|0)+Math.imul(m,ut)|0,a=a+Math.imul(m,ct)|0,r=r+Math.imul(p,lt)|0,i=(i=i+Math.imul(p,ht)|0)+Math.imul(g,lt)|0,a=a+Math.imul(g,ht)|0;var At=(c+(r=r+Math.imul(l,pt)|0)|0)+((8191&(i=(i=i+Math.imul(l,gt)|0)+Math.imul(h,pt)|0))<<13)|0;c=((a=a+Math.imul(h,gt)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,r=Math.imul(F,H),i=(i=Math.imul(F,V))+Math.imul(q,H)|0,a=Math.imul(q,V),r=r+Math.imul(B,G)|0,i=(i=i+Math.imul(B,W)|0)+Math.imul(L,G)|0,a=a+Math.imul(L,W)|0,r=r+Math.imul(R,X)|0,i=(i=i+Math.imul(R,Z)|0)+Math.imul(N,X)|0,a=a+Math.imul(N,Z)|0,r=r+Math.imul(D,Q)|0,i=(i=i+Math.imul(D,tt)|0)+Math.imul(C,Q)|0,a=a+Math.imul(C,tt)|0,r=r+Math.imul(S,nt)|0,i=(i=i+Math.imul(S,rt)|0)+Math.imul(M,nt)|0,a=a+Math.imul(M,rt)|0,r=r+Math.imul(k,at)|0,i=(i=i+Math.imul(k,ot)|0)+Math.imul(E,at)|0,a=a+Math.imul(E,ot)|0,r=r+Math.imul(_,ut)|0,i=(i=i+Math.imul(_,ct)|0)+Math.imul(w,ut)|0,a=a+Math.imul(w,ct)|0,r=r+Math.imul(b,lt)|0,i=(i=i+Math.imul(b,ht)|0)+Math.imul(m,lt)|0,a=a+Math.imul(m,ht)|0;var St=(c+(r=r+Math.imul(p,pt)|0)|0)+((8191&(i=(i=i+Math.imul(p,gt)|0)+Math.imul(g,pt)|0))<<13)|0;c=((a=a+Math.imul(g,gt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,r=Math.imul(F,G),i=(i=Math.imul(F,W))+Math.imul(q,G)|0,a=Math.imul(q,W),r=r+Math.imul(B,X)|0,i=(i=i+Math.imul(B,Z)|0)+Math.imul(L,X)|0,a=a+Math.imul(L,Z)|0,r=r+Math.imul(R,Q)|0,i=(i=i+Math.imul(R,tt)|0)+Math.imul(N,Q)|0,a=a+Math.imul(N,tt)|0,r=r+Math.imul(D,nt)|0,i=(i=i+Math.imul(D,rt)|0)+Math.imul(C,nt)|0,a=a+Math.imul(C,rt)|0,r=r+Math.imul(S,at)|0,i=(i=i+Math.imul(S,ot)|0)+Math.imul(M,at)|0,a=a+Math.imul(M,ot)|0,r=r+Math.imul(k,ut)|0,i=(i=i+Math.imul(k,ct)|0)+Math.imul(E,ut)|0,a=a+Math.imul(E,ct)|0,r=r+Math.imul(_,lt)|0,i=(i=i+Math.imul(_,ht)|0)+Math.imul(w,lt)|0,a=a+Math.imul(w,ht)|0;var Mt=(c+(r=r+Math.imul(b,pt)|0)|0)+((8191&(i=(i=i+Math.imul(b,gt)|0)+Math.imul(m,pt)|0))<<13)|0;c=((a=a+Math.imul(m,gt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,r=Math.imul(F,X),i=(i=Math.imul(F,Z))+Math.imul(q,X)|0,a=Math.imul(q,Z),r=r+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,tt)|0)+Math.imul(L,Q)|0,a=a+Math.imul(L,tt)|0,r=r+Math.imul(R,nt)|0,i=(i=i+Math.imul(R,rt)|0)+Math.imul(N,nt)|0,a=a+Math.imul(N,rt)|0,r=r+Math.imul(D,at)|0,i=(i=i+Math.imul(D,ot)|0)+Math.imul(C,at)|0,a=a+Math.imul(C,ot)|0,r=r+Math.imul(S,ut)|0,i=(i=i+Math.imul(S,ct)|0)+Math.imul(M,ut)|0,a=a+Math.imul(M,ct)|0,r=r+Math.imul(k,lt)|0,i=(i=i+Math.imul(k,ht)|0)+Math.imul(E,lt)|0,a=a+Math.imul(E,ht)|0;var Tt=(c+(r=r+Math.imul(_,pt)|0)|0)+((8191&(i=(i=i+Math.imul(_,gt)|0)+Math.imul(w,pt)|0))<<13)|0;c=((a=a+Math.imul(w,gt)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,r=Math.imul(F,Q),i=(i=Math.imul(F,tt))+Math.imul(q,Q)|0,a=Math.imul(q,tt),r=r+Math.imul(B,nt)|0,i=(i=i+Math.imul(B,rt)|0)+Math.imul(L,nt)|0,a=a+Math.imul(L,rt)|0,r=r+Math.imul(R,at)|0,i=(i=i+Math.imul(R,ot)|0)+Math.imul(N,at)|0,a=a+Math.imul(N,ot)|0,r=r+Math.imul(D,ut)|0,i=(i=i+Math.imul(D,ct)|0)+Math.imul(C,ut)|0,a=a+Math.imul(C,ct)|0,r=r+Math.imul(S,lt)|0,i=(i=i+Math.imul(S,ht)|0)+Math.imul(M,lt)|0,a=a+Math.imul(M,ht)|0;var Dt=(c+(r=r+Math.imul(k,pt)|0)|0)+((8191&(i=(i=i+Math.imul(k,gt)|0)+Math.imul(E,pt)|0))<<13)|0;c=((a=a+Math.imul(E,gt)|0)+(i>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,r=Math.imul(F,nt),i=(i=Math.imul(F,rt))+Math.imul(q,nt)|0,a=Math.imul(q,rt),r=r+Math.imul(B,at)|0,i=(i=i+Math.imul(B,ot)|0)+Math.imul(L,at)|0,a=a+Math.imul(L,ot)|0,r=r+Math.imul(R,ut)|0,i=(i=i+Math.imul(R,ct)|0)+Math.imul(N,ut)|0,a=a+Math.imul(N,ct)|0,r=r+Math.imul(D,lt)|0,i=(i=i+Math.imul(D,ht)|0)+Math.imul(C,lt)|0,a=a+Math.imul(C,ht)|0;var Ct=(c+(r=r+Math.imul(S,pt)|0)|0)+((8191&(i=(i=i+Math.imul(S,gt)|0)+Math.imul(M,pt)|0))<<13)|0;c=((a=a+Math.imul(M,gt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,r=Math.imul(F,at),i=(i=Math.imul(F,ot))+Math.imul(q,at)|0,a=Math.imul(q,ot),r=r+Math.imul(B,ut)|0,i=(i=i+Math.imul(B,ct)|0)+Math.imul(L,ut)|0,a=a+Math.imul(L,ct)|0,r=r+Math.imul(R,lt)|0,i=(i=i+Math.imul(R,ht)|0)+Math.imul(N,lt)|0,a=a+Math.imul(N,ht)|0;var Ot=(c+(r=r+Math.imul(D,pt)|0)|0)+((8191&(i=(i=i+Math.imul(D,gt)|0)+Math.imul(C,pt)|0))<<13)|0;c=((a=a+Math.imul(C,gt)|0)+(i>>>13)|0)+(Ot>>>26)|0,Ot&=67108863,r=Math.imul(F,ut),i=(i=Math.imul(F,ct))+Math.imul(q,ut)|0,a=Math.imul(q,ct),r=r+Math.imul(B,lt)|0,i=(i=i+Math.imul(B,ht)|0)+Math.imul(L,lt)|0,a=a+Math.imul(L,ht)|0;var Rt=(c+(r=r+Math.imul(R,pt)|0)|0)+((8191&(i=(i=i+Math.imul(R,gt)|0)+Math.imul(N,pt)|0))<<13)|0;c=((a=a+Math.imul(N,gt)|0)+(i>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,r=Math.imul(F,lt),i=(i=Math.imul(F,ht))+Math.imul(q,lt)|0,a=Math.imul(q,ht);var Nt=(c+(r=r+Math.imul(B,pt)|0)|0)+((8191&(i=(i=i+Math.imul(B,gt)|0)+Math.imul(L,pt)|0))<<13)|0;c=((a=a+Math.imul(L,gt)|0)+(i>>>13)|0)+(Nt>>>26)|0,Nt&=67108863;var It=(c+(r=Math.imul(F,pt))|0)+((8191&(i=(i=Math.imul(F,gt))+Math.imul(q,pt)|0))<<13)|0;return c=((a=Math.imul(q,gt))+(i>>>13)|0)+(It>>>26)|0,It&=67108863,u[0]=yt,u[1]=bt,u[2]=mt,u[3]=vt,u[4]=_t,u[5]=wt,u[6]=xt,u[7]=kt,u[8]=Et,u[9]=At,u[10]=St,u[11]=Mt,u[12]=Tt,u[13]=Dt,u[14]=Ct,u[15]=Ot,u[16]=Rt,u[17]=Nt,u[18]=It,0!==c&&(u[19]=c,n.length++),n};function p(t,e,n){return(new g).mulp(t,e,n)}function g(t,e){this.x=t,this.y=e}Math.imul||(d=h),a.prototype.mulTo=function(t,e){var n=this.length+t.length;return 10===this.length&&10===t.length?d(this,t,e):n<63?h(this,t,e):n<1024?function(t,e,n){n.negative=e.negative^t.negative,n.length=t.length+e.length;for(var r=0,i=0,a=0;a<n.length-1;a++){var o=i;i=0;for(var s=67108863&r,u=Math.min(a,e.length-1),c=Math.max(0,a-t.length+1);c<=u;c++){var f=a-c,l=(0|t.words[f])*(0|e.words[c]),h=67108863&l;s=67108863&(h=h+s|0),i+=(o=(o=o+(l/67108864|0)|0)+(h>>>26)|0)>>>26,o&=67108863}n.words[a]=s,r=o,o=i}return 0!==r?n.words[a]=r:n.length--,n.strip()}(this,t,e):p(this,t,e)},g.prototype.makeRBT=function(t){for(var e=new Array(t),n=a.prototype._countBits(t)-1,r=0;r<t;r++)e[r]=this.revBin(r,n,t);return e},g.prototype.revBin=function(t,e,n){if(0===t||t===n-1)return t;for(var r=0,i=0;i<e;i++)r|=(1&t)<<e-i-1,t>>=1;return r},g.prototype.permute=function(t,e,n,r,i,a){for(var o=0;o<a;o++)r[o]=e[t[o]],i[o]=n[t[o]]},g.prototype.transform=function(t,e,n,r,i,a){this.permute(a,t,e,n,r,i);for(var o=1;o<i;o<<=1)for(var s=o<<1,u=Math.cos(2*Math.PI/s),c=Math.sin(2*Math.PI/s),f=0;f<i;f+=s)for(var l=u,h=c,d=0;d<o;d++){var p=n[f+d],g=r[f+d],y=n[f+d+o],b=r[f+d+o],m=l*y-h*b;b=l*b+h*y,y=m,n[f+d]=p+y,r[f+d]=g+b,n[f+d+o]=p-y,r[f+d+o]=g-b,d!==s&&(m=u*l-c*h,h=u*h+c*l,l=m)}},g.prototype.guessLen13b=function(t,e){var n=1|Math.max(e,t),r=1&n,i=0;for(n=n/2|0;n;n>>>=1)i++;return 1<<i+1+r},g.prototype.conjugate=function(t,e,n){if(!(n<=1))for(var r=0;r<n/2;r++){var i=t[r];t[r]=t[n-r-1],t[n-r-1]=i,i=e[r],e[r]=-e[n-r-1],e[n-r-1]=-i}},g.prototype.normalize13b=function(t,e){for(var n=0,r=0;r<e/2;r++){var i=8192*Math.round(t[2*r+1]/e)+Math.round(t[2*r]/e)+n;t[r]=67108863&i,n=i<67108864?0:i/67108864|0}return t},g.prototype.convert13b=function(t,e,n,i){for(var a=0,o=0;o<e;o++)a+=0|t[o],n[2*o]=8191&a,a>>>=13,n[2*o+1]=8191&a,a>>>=13;for(o=2*e;o<i;++o)n[o]=0;r(0===a),r(0==(-8192&a))},g.prototype.stub=function(t){for(var e=new Array(t),n=0;n<t;n++)e[n]=0;return e},g.prototype.mulp=function(t,e,n){var r=2*this.guessLen13b(t.length,e.length),i=this.makeRBT(r),a=this.stub(r),o=new Array(r),s=new Array(r),u=new Array(r),c=new Array(r),f=new Array(r),l=new Array(r),h=n.words;h.length=r,this.convert13b(t.words,t.length,o,r),this.convert13b(e.words,e.length,c,r),this.transform(o,a,s,u,r,i),this.transform(c,a,f,l,r,i);for(var d=0;d<r;d++){var p=s[d]*f[d]-u[d]*l[d];u[d]=s[d]*l[d]+u[d]*f[d],s[d]=p}return this.conjugate(s,u,r),this.transform(s,u,h,a,r,i),this.conjugate(h,a,r),this.normalize13b(h,r),n.negative=t.negative^e.negative,n.length=t.length+e.length,n.strip()},a.prototype.mul=function(t){var e=new a(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},a.prototype.mulf=function(t){var e=new a(null);return e.words=new Array(this.length+t.length),p(this,t,e)},a.prototype.imul=function(t){return this.clone().mulTo(t,this)},a.prototype.imuln=function(t){r("number"==typeof t),r(t<67108864);for(var e=0,n=0;n<this.length;n++){var i=(0|this.words[n])*t,a=(67108863&i)+(67108863&e);e>>=26,e+=i/67108864|0,e+=a>>>26,this.words[n]=67108863&a}return 0!==e&&(this.words[n]=e,this.length++),this},a.prototype.muln=function(t){return this.clone().imuln(t)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),n=0;n<e.length;n++){var r=n/26|0,i=n%26;e[n]=(t.words[r]&1<<i)>>>i}return e}(t);if(0===e.length)return new a(1);for(var n=this,r=0;r<e.length&&0===e[r];r++,n=n.sqr());if(++r<e.length)for(var i=n.sqr();r<e.length;r++,i=i.sqr())0!==e[r]&&(n=n.mul(i));return n},a.prototype.iushln=function(t){r("number"==typeof t&&t>=0);var e,n=t%26,i=(t-n)/26,a=67108863>>>26-n<<26-n;if(0!==n){var o=0;for(e=0;e<this.length;e++){var s=this.words[e]&a,u=(0|this.words[e])-s<<n;this.words[e]=u|o,o=s>>>26-n}o&&(this.words[e]=o,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e<i;e++)this.words[e]=0;this.length+=i}return this.strip()},a.prototype.ishln=function(t){return r(0===this.negative),this.iushln(t)},a.prototype.iushrn=function(t,e,n){var i;r("number"==typeof t&&t>=0),i=e?(e-e%26)/26:0;var a=t%26,o=Math.min((t-a)/26,this.length),s=67108863^67108863>>>a<<a,u=n;if(i-=o,i=Math.max(0,i),u){for(var c=0;c<o;c++)u.words[c]=this.words[c];u.length=o}if(0===o);else if(this.length>o)for(this.length-=o,c=0;c<this.length;c++)this.words[c]=this.words[c+o];else this.words[0]=0,this.length=1;var f=0;for(c=this.length-1;c>=0&&(0!==f||c>=i);c--){var l=0|this.words[c];this.words[c]=f<<26-a|l>>>a,f=l&s}return u&&0!==f&&(u.words[u.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(t,e,n){return r(0===this.negative),this.iushrn(t,e,n)},a.prototype.shln=function(t){return this.clone().ishln(t)},a.prototype.ushln=function(t){return this.clone().iushln(t)},a.prototype.shrn=function(t){return this.clone().ishrn(t)},a.prototype.ushrn=function(t){return this.clone().iushrn(t)},a.prototype.testn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=1<<e;return!(this.length<=n)&&!!(this.words[n]&i)},a.prototype.imaskn=function(t){r("number"==typeof t&&t>=0);var e=t%26,n=(t-e)/26;if(r(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var i=67108863^67108863>>>e<<e;this.words[this.length-1]&=i}return this.strip()},a.prototype.maskn=function(t){return this.clone().imaskn(t)},a.prototype.iaddn=function(t){return r("number"==typeof t),r(t<67108864),t<0?this.isubn(-t):0!==this.negative?1===this.length&&(0|this.words[0])<t?(this.words[0]=t-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(t),this.negative=1,this):this._iaddn(t)},a.prototype._iaddn=function(t){this.words[0]+=t;for(var e=0;e<this.length&&this.words[e]>=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},a.prototype.isubn=function(t){if(r("number"==typeof t),r(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e<this.length&&this.words[e]<0;e++)this.words[e]+=67108864,this.words[e+1]-=1;return this.strip()},a.prototype.addn=function(t){return this.clone().iaddn(t)},a.prototype.subn=function(t){return this.clone().isubn(t)},a.prototype.iabs=function(){return this.negative=0,this},a.prototype.abs=function(){return this.clone().iabs()},a.prototype._ishlnsubmul=function(t,e,n){var i,a,o=t.length+n;this._expand(o);var s=0;for(i=0;i<t.length;i++){a=(0|this.words[i+n])+s;var u=(0|t.words[i])*e;s=((a-=67108863&u)>>26)-(u/67108864|0),this.words[i+n]=67108863&a}for(;i<this.length-n;i++)s=(a=(0|this.words[i+n])+s)>>26,this.words[i+n]=67108863&a;if(0===s)return this.strip();for(r(-1===s),s=0,i=0;i<this.length;i++)s=(a=-(0|this.words[i])+s)>>26,this.words[i]=67108863&a;return this.negative=1,this.strip()},a.prototype._wordDiv=function(t,e){var n=(this.length,t.length),r=this.clone(),i=t,o=0|i.words[i.length-1];0!==(n=26-this._countBits(o))&&(i=i.ushln(n),r.iushln(n),o=0|i.words[i.length-1]);var s,u=r.length-i.length;if("mod"!==e){(s=new a(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c<s.length;c++)s.words[c]=0}var f=r.clone()._ishlnsubmul(i,1,u);0===f.negative&&(r=f,s&&(s.words[u]=1));for(var l=u-1;l>=0;l--){var h=67108864*(0|r.words[i.length+l])+(0|r.words[i.length+l-1]);for(h=Math.min(h/o|0,67108863),r._ishlnsubmul(i,h,l);0!==r.negative;)h--,r.negative=0,r._ishlnsubmul(i,1,l),r.isZero()||(r.negative^=1);s&&(s.words[l]=h)}return s&&s.strip(),r.strip(),"div"!==e&&0!==n&&r.iushrn(n),{div:s||null,mod:r}},a.prototype.divmod=function(t,e,n){return r(!t.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(i=s.div.neg()),"div"!==e&&(o=s.mod.neg(),n&&0!==o.negative&&o.iadd(t)),{div:i,mod:o}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(i=s.div.neg()),{div:i,mod:s.mod}):0!=(this.negative&t.negative)?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(o=s.mod.neg(),n&&0!==o.negative&&o.isub(t)),{div:s.div,mod:o}):t.length>this.length||this.cmp(t)<0?{div:new a(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new a(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new a(this.modn(t.words[0]))}:this._wordDiv(t,e);var i,o,s},a.prototype.div=function(t){return this.divmod(t,"div",!1).div},a.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},a.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},a.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var n=0!==e.div.negative?e.mod.isub(t):e.mod,r=t.ushrn(1),i=t.andln(1),a=n.cmp(r);return a<0||1===i&&0===a?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},a.prototype.modn=function(t){r(t<=67108863);for(var e=(1<<26)%t,n=0,i=this.length-1;i>=0;i--)n=(e*n+(0|this.words[i]))%t;return n},a.prototype.idivn=function(t){r(t<=67108863);for(var e=0,n=this.length-1;n>=0;n--){var i=(0|this.words[n])+67108864*e;this.words[n]=i/t|0,e=i%t}return this.strip()},a.prototype.divn=function(t){return this.clone().idivn(t)},a.prototype.egcd=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new a(1),o=new a(0),s=new a(0),u=new a(1),c=0;e.isEven()&&n.isEven();)e.iushrn(1),n.iushrn(1),++c;for(var f=n.clone(),l=e.clone();!e.isZero();){for(var h=0,d=1;0==(e.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(e.iushrn(h);h-- >0;)(i.isOdd()||o.isOdd())&&(i.iadd(f),o.isub(l)),i.iushrn(1),o.iushrn(1);for(var p=0,g=1;0==(n.words[0]&g)&&p<26;++p,g<<=1);if(p>0)for(n.iushrn(p);p-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(l)),s.iushrn(1),u.iushrn(1);e.cmp(n)>=0?(e.isub(n),i.isub(s),o.isub(u)):(n.isub(e),s.isub(i),u.isub(o))}return{a:s,b:u,gcd:n.iushln(c)}},a.prototype._invmp=function(t){r(0===t.negative),r(!t.isZero());var e=this,n=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i,o=new a(1),s=new a(0),u=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,f=1;0==(e.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(e.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(u),o.iushrn(1);for(var l=0,h=1;0==(n.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(n.iushrn(l);l-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);e.cmp(n)>=0?(e.isub(n),o.isub(s)):(n.isub(e),s.isub(o))}return(i=0===e.cmpn(1)?o:s).cmpn(0)<0&&i.iadd(t),i},a.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),n=t.clone();e.negative=0,n.negative=0;for(var r=0;e.isEven()&&n.isEven();r++)e.iushrn(1),n.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;n.isEven();)n.iushrn(1);var i=e.cmp(n);if(i<0){var a=e;e=n,n=a}else if(0===i||0===n.cmpn(1))break;e.isub(n)}return n.iushln(r)},a.prototype.invm=function(t){return this.egcd(t).a.umod(t)},a.prototype.isEven=function(){return 0==(1&this.words[0])},a.prototype.isOdd=function(){return 1==(1&this.words[0])},a.prototype.andln=function(t){return this.words[0]&t},a.prototype.bincn=function(t){r("number"==typeof t);var e=t%26,n=(t-e)/26,i=1<<e;if(this.length<=n)return this._expand(n+1),this.words[n]|=i,this;for(var a=i,o=n;0!==a&&o<this.length;o++){var s=0|this.words[o];a=(s+=a)>>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(t){var e,n=t<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)e=1;else{n&&(t=-t),r(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:i<t?-1:1}return 0!==this.negative?0|-e:e},a.prototype.cmp=function(t){if(0!==this.negative&&0===t.negative)return-1;if(0===this.negative&&0!==t.negative)return 1;var e=this.ucmp(t);return 0!==this.negative?0|-e:e},a.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length<t.length)return-1;for(var e=0,n=this.length-1;n>=0;n--){var r=0|this.words[n],i=0|t.words[n];if(r!==i){r<i?e=-1:r>i&&(e=1);break}}return e},a.prototype.gtn=function(t){return 1===this.cmpn(t)},a.prototype.gt=function(t){return 1===this.cmp(t)},a.prototype.gten=function(t){return this.cmpn(t)>=0},a.prototype.gte=function(t){return this.cmp(t)>=0},a.prototype.ltn=function(t){return-1===this.cmpn(t)},a.prototype.lt=function(t){return-1===this.cmp(t)},a.prototype.lten=function(t){return this.cmpn(t)<=0},a.prototype.lte=function(t){return this.cmp(t)<=0},a.prototype.eqn=function(t){return 0===this.cmpn(t)},a.prototype.eq=function(t){return 0===this.cmp(t)},a.red=function(t){return new x(t)},a.prototype.toRed=function(t){return r(!this.red,"Already a number in reduction context"),r(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},a.prototype.fromRed=function(){return r(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(t){return this.red=t,this},a.prototype.forceRed=function(t){return r(!this.red,"Already a number in reduction context"),this._forceRed(t)},a.prototype.redAdd=function(t){return r(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},a.prototype.redIAdd=function(t){return r(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},a.prototype.redSub=function(t){return r(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},a.prototype.redISub=function(t){return r(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},a.prototype.redShl=function(t){return r(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},a.prototype.redMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},a.prototype.redIMul=function(t){return r(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},a.prototype.redSqr=function(){return r(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return r(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return r(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return r(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return r(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(t){return r(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var y={k256:null,p224:null,p192:null,p25519:null};function b(t,e){this.name=t,this.p=new a(e,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function m(){b.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function v(){b.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function _(){b.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function w(){b.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function x(t){if("string"==typeof t){var e=a._prime(t);this.m=e.p,this.prime=e}else r(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function k(t){x.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var t=new a(null);return t.words=new Array(Math.ceil(this.n/13)),t},b.prototype.ireduce=function(t){var e,n=t;do{this.split(n,this.tmp),e=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(e>this.n);var r=e<this.n?-1:n.ucmp(this.p);return 0===r?(n.words[0]=0,n.length=1):r>0?n.isub(this.p):n.strip(),n},b.prototype.split=function(t,e){t.iushrn(this.n,0,e)},b.prototype.imulK=function(t){return t.imul(this.k)},i(m,b),m.prototype.split=function(t,e){for(var n=Math.min(t.length,9),r=0;r<n;r++)e.words[r]=t.words[r];if(e.length=n,t.length<=9)return t.words[0]=0,void(t.length=1);var i=t.words[9];for(e.words[e.length++]=4194303&i,r=10;r<t.length;r++){var a=0|t.words[r];t.words[r-10]=(4194303&a)<<4|i>>>22,i=a}i>>>=22,t.words[r-10]=i,0===i&&t.length>10?t.length-=10:t.length-=9},m.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,n=0;n<t.length;n++){var r=0|t.words[n];e+=977*r,t.words[n]=67108863&e,e=64*r+(e/67108864|0)}return 0===t.words[t.length-1]&&(t.length--,0===t.words[t.length-1]&&t.length--),t},i(v,b),i(_,b),i(w,b),w.prototype.imulK=function(t){for(var e=0,n=0;n<t.length;n++){var r=19*(0|t.words[n])+e,i=67108863&r;r>>>=26,t.words[n]=i,e=r}return 0!==e&&(t.words[t.length++]=e),t},a._prime=function(t){if(y[t])return y[t];var e;if("k256"===t)e=new m;else if("p224"===t)e=new v;else if("p192"===t)e=new _;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new w}return y[t]=e,e},x.prototype._verify1=function(t){r(0===t.negative,"red works only with positives"),r(t.red,"red works only with red numbers")},x.prototype._verify2=function(t,e){r(0==(t.negative|e.negative),"red works only with positives"),r(t.red&&t.red===e.red,"red works only with red numbers")},x.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},x.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},x.prototype.add=function(t,e){this._verify2(t,e);var n=t.add(e);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},x.prototype.iadd=function(t,e){this._verify2(t,e);var n=t.iadd(e);return n.cmp(this.m)>=0&&n.isub(this.m),n},x.prototype.sub=function(t,e){this._verify2(t,e);var n=t.sub(e);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},x.prototype.isub=function(t,e){this._verify2(t,e);var n=t.isub(e);return n.cmpn(0)<0&&n.iadd(this.m),n},x.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},x.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},x.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},x.prototype.isqr=function(t){return this.imul(t,t.clone())},x.prototype.sqr=function(t){return this.mul(t,t)},x.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(r(e%2==1),3===e){var n=this.m.add(new a(1)).iushrn(2);return this.pow(t,n)}for(var i=this.m.subn(1),o=0;!i.isZero()&&0===i.andln(1);)o++,i.iushrn(1);r(!i.isZero());var s=new a(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new a(2*f*f).toRed(this);0!==this.pow(f,c).cmp(u);)f.redIAdd(u);for(var l=this.pow(f,i),h=this.pow(t,i.addn(1).iushrn(1)),d=this.pow(t,i),p=o;0!==d.cmp(s);){for(var g=d,y=0;0!==g.cmp(s);y++)g=g.redSqr();r(y<p);var b=this.pow(l,new a(1).iushln(p-y-1));h=h.redMul(b),l=b.redSqr(),d=d.redMul(l),p=y}return h},x.prototype.invm=function(t){var e=t._invmp(this.m);return 0!==e.negative?(e.negative=0,this.imod(e).redNeg()):this.imod(e)},x.prototype.pow=function(t,e){if(e.isZero())return new a(1).toRed(this);if(0===e.cmpn(1))return t.clone();var n=new Array(16);n[0]=new a(1).toRed(this),n[1]=t;for(var r=2;r<n.length;r++)n[r]=this.mul(n[r-1],t);var i=n[0],o=0,s=0,u=e.bitLength()%26;for(0===u&&(u=26),r=e.length-1;r>=0;r--){for(var c=e.words[r],f=u-1;f>=0;f--){var l=c>>f&1;i!==n[0]&&(i=this.sqr(i)),0!==l||0!==o?(o<<=1,o|=l,(4===++s||0===r&&0===f)&&(i=this.mul(i,n[o]),s=0,o=0)):s=0}u=26}return i},x.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},x.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},a.mont=function(t){return new k(t)},i(k,x),k.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},k.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},k.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var n=t.imul(e),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},k.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new a(0)._forceRed(this);var n=t.mul(e),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=n.isub(r).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},k.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t,this)}).call(this,n(7)(t))},function(t,e){var n,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(t){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var u,c=[],f=!1,l=-1;function h(){f&&u&&(f=!1,u.length?c=u.concat(c):l=-1,c.length&&d())}function d(){if(!f){var t=s(h);f=!0;for(var e=c.length;e;){for(u=c,c=[];++l<e;)u&&u[l].run();l=-1,e=c.length}u=null,f=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===o||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function g(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];c.push(new p(t,e)),1!==c.length||f||s(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(t,e,n){"use strict";(function(t){
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license  MIT
+ */
+var r=n(123),i=n(124),a=n(69);function o(){return u.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(o()<e)throw new RangeError("Invalid typed array length");return u.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=u.prototype:(null===t&&(t=new u(e)),t.length=e),t}function u(t,e,n){if(!(u.TYPED_ARRAY_SUPPORT||this instanceof u))return new u(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return l(this,t)}return c(this,t,e,n)}function c(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);u.TYPED_ARRAY_SUPPORT?(t=e).__proto__=u.prototype:t=h(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!u.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|p(e,n),i=(t=s(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(u.isBuffer(e)){var n=0|d(e.length);return 0===(t=s(t,n)).length?t:(e.copy(t,0,0,n),t)}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?s(t,0):h(t,e);if("Buffer"===e.type&&a(e.data))return h(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function f(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function l(t,e){if(f(e),t=s(t,e<0?0:0|d(e)),!u.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function h(t,e){var n=e.length<0?0:0|d(e.length);t=s(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function d(t){if(t>=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function p(t,e){if(u.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return U(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return z(t).length;default:if(r)return U(t).length;e=(""+e).toLowerCase(),r=!0}}function g(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,n);case"utf8":case"utf-8":return S(this,e,n);case"ascii":return T(this,e,n);case"latin1":case"binary":return D(this,e,n);case"base64":return A(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function y(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function b(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=u.from(e,r)),u.isBuffer(e))return 0===e.length?-1:m(t,e,n,r,i);if("number"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):m(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function m(t,e,n,r,i){var a,o=1,s=t.length,u=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;o=2,s/=2,u/=2,n/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var f=-1;for(a=n;a<s;a++)if(c(t,a)===c(e,-1===f?0:a-f)){if(-1===f&&(f=a),a-f+1===u)return f*o}else-1!==f&&(a-=a-f),f=-1}else for(n+u>s&&(n=s-u),a=n;a>=0;a--){for(var l=!0,h=0;h<u;h++)if(c(t,a+h)!==c(e,h)){l=!1;break}if(l)return a}return-1}function v(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var a=e.length;if(a%2!=0)throw new TypeError("Invalid hex string");r>a/2&&(r=a/2);for(var o=0;o<r;++o){var s=parseInt(e.substr(2*o,2),16);if(isNaN(s))return o;t[n+o]=s}return o}function _(t,e,n,r){return Y(U(e,t.length-n),t,n,r)}function w(t,e,n,r){return Y(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function x(t,e,n,r){return w(t,e,n,r)}function k(t,e,n,r){return Y(z(e),t,n,r)}function E(t,e,n,r){return Y(function(t,e){for(var n,r,i,a=[],o=0;o<t.length&&!((e-=2)<0);++o)n=t.charCodeAt(o),r=n>>8,i=n%256,a.push(i),a.push(r);return a}(e,t.length-n),t,n,r)}function A(t,e,n){return 0===e&&n===t.length?r.fromByteArray(t):r.fromByteArray(t.slice(e,n))}function S(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var a,o,s,u,c=t[i],f=null,l=c>239?4:c>223?3:c>191?2:1;if(i+l<=n)switch(l){case 1:c<128&&(f=c);break;case 2:128==(192&(a=t[i+1]))&&(u=(31&c)<<6|63&a)>127&&(f=u);break;case 3:a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&(u=(15&c)<<12|(63&a)<<6|63&o)>2047&&(u<55296||u>57343)&&(f=u);break;case 4:a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(u=(15&c)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&u<1114112&&(f=u)}null===f?(f=65533,l=1):f>65535&&(f-=65536,r.push(f>>>10&1023|55296),f=56320|1023&f),r.push(f),i+=l}return function(t){var e=t.length;if(e<=M)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=M));return n}(r)}e.Buffer=u,e.SlowBuffer=function(t){+t!=t&&(t=0);return u.alloc(+t)},e.INSPECT_MAX_BYTES=50,u.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:function(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(t){return!1}}(),e.kMaxLength=o(),u.poolSize=8192,u._augment=function(t){return t.__proto__=u.prototype,t},u.from=function(t,e,n){return c(null,t,e,n)},u.TYPED_ARRAY_SUPPORT&&(u.prototype.__proto__=Uint8Array.prototype,u.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&u[Symbol.species]===u&&Object.defineProperty(u,Symbol.species,{value:null,configurable:!0})),u.alloc=function(t,e,n){return function(t,e,n,r){return f(e),e<=0?s(t,e):void 0!==n?"string"==typeof r?s(t,e).fill(n,r):s(t,e).fill(n):s(t,e)}(null,t,e,n)},u.allocUnsafe=function(t){return l(null,t)},u.allocUnsafeSlow=function(t){return l(null,t)},u.isBuffer=function(t){return!(null==t||!t._isBuffer)},u.compare=function(t,e){if(!u.isBuffer(t)||!u.isBuffer(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,a=Math.min(n,r);i<a;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},u.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},u.concat=function(t,e){if(!a(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return u.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=u.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var o=t[n];if(!u.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(r,i),i+=o.length}return r},u.byteLength=p,u.prototype._isBuffer=!0,u.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)y(this,e,e+1);return this},u.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)y(this,e,e+3),y(this,e+1,e+2);return this},u.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)y(this,e,e+7),y(this,e+1,e+6),y(this,e+2,e+5),y(this,e+3,e+4);return this},u.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?S(this,0,t):g.apply(this,arguments)},u.prototype.equals=function(t){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===u.compare(this,t)},u.prototype.inspect=function(){var t="",n=e.INSPECT_MAX_BYTES;return this.length>0&&(t=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(t+=" ... ")),"<Buffer "+t+">"},u.prototype.compare=function(t,e,n,r,i){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var a=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(e>>>=0),s=Math.min(a,o),c=this.slice(r,i),f=t.slice(e,n),l=0;l<s;++l)if(c[l]!==f[l]){a=c[l],o=f[l];break}return a<o?-1:o<a?1:0},u.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},u.prototype.indexOf=function(t,e,n){return b(this,t,e,n,!0)},u.prototype.lastIndexOf=function(t,e,n){return b(this,t,e,n,!1)},u.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return v(this,t,e,n);case"utf8":case"utf-8":return _(this,t,e,n);case"ascii":return w(this,t,e,n);case"latin1":case"binary":return x(this,t,e,n);case"base64":return k(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var M=4096;function T(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function D(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function C(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",a=e;a<n;++a)i+=j(t[a]);return i}function O(t,e,n){for(var r=t.slice(e,n),i="",a=0;a<r.length;a+=2)i+=String.fromCharCode(r[a]+256*r[a+1]);return i}function R(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function N(t,e,n,r,i,a){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<a)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function I(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,a=Math.min(t.length-n,2);i<a;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function B(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,a=Math.min(t.length-n,4);i<a;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function L(t,e,n,r,i,a){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function P(t,e,n,r,a){return a||L(t,0,n,4),i.write(t,e,n,r,23,4),n+4}function F(t,e,n,r,a){return a||L(t,0,n,8),i.write(t,e,n,r,52,8),n+8}u.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),u.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=u.prototype;else{var i=e-t;n=new u(i,void 0);for(var a=0;a<i;++a)n[a]=this[a+t]}return n},u.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||R(t,e,this.length);for(var r=this[t],i=1,a=0;++a<e&&(i*=256);)r+=this[t+a]*i;return r},u.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||R(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},u.prototype.readUInt8=function(t,e){return e||R(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||R(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||R(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||R(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||R(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||R(t,e,this.length);for(var r=this[t],i=1,a=0;++a<e&&(i*=256);)r+=this[t+a]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},u.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||R(t,e,this.length);for(var r=e,i=1,a=this[t+--r];r>0&&(i*=256);)a+=this[t+--r]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},u.prototype.readInt8=function(t,e){return e||R(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||R(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt16BE=function(t,e){e||R(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},u.prototype.readInt32LE=function(t,e){return e||R(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||R(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||R(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||R(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||R(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||R(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||N(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,a=0;for(this[e]=255&t;++a<n&&(i*=256);)this[e+a]=t/i&255;return e+n},u.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||N(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+n},u.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):I(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):I(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):B(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):B(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);N(this,t,e,n,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a<n&&(o*=256);)t<0&&0===s&&0!==this[e+a-1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},u.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);N(this,t,e,n,i-1,-i)}var a=n-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o>>0)-s&255;return e+n},u.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):I(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):I(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):B(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||N(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):B(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,n){return P(this,t,e,!0,n)},u.prototype.writeFloatBE=function(t,e,n){return P(this,t,e,!1,n)},u.prototype.writeDoubleLE=function(t,e,n){return F(this,t,e,!0,n)},u.prototype.writeDoubleBE=function(t,e,n){return F(this,t,e,!1,n)},u.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,a=r-n;if(this===t&&n<e&&e<r)for(i=a-1;i>=0;--i)t[i+e]=this[i+n];else if(a<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i<a;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+a),e);return a},u.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!u.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var a;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(a=e;a<n;++a)this[a]=t;else{var o=u.isBuffer(t)?t:U(new u(t,r).toString()),s=o.length;for(a=0;a<n-e;++a)this[a+e]=o[a%s]}return this};var q=/[^+\/0-9A-Za-z-_]/g;function j(t){return t<16?"0"+t.toString(16):t.toString(16)}function U(t,e){var n;e=e||1/0;for(var r=t.length,i=null,a=[],o=0;o<r;++o){if((n=t.charCodeAt(o))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===r){(e-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&a.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;a.push(n)}else if(n<2048){if((e-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function z(t){return r.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(q,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function Y(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}}).call(this,n(13))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){var r;try{r=n(11)}catch(t){}r||(r=window._),t.exports=r},function(t,e){function n(t,e){if(!t)throw new Error(e||"Assertion failed")}t.exports=n,n.equal=function(t,e,n){if(t!=e)throw new Error(n||"Assertion failed: "+t+" != "+e)}},function(t,e,n){"use strict";var r=e,i=n(4),a=n(9),o=n(91);r.assert=a,r.toArray=o.toArray,r.zero2=o.zero2,r.toHex=o.toHex,r.encode=o.encode,r.getNAF=function(t,e){for(var n=[],r=1<<e+1,i=t.clone();i.cmpn(1)>=0;){var a;if(i.isOdd()){var o=i.andln(r-1);a=o>(r>>1)-1?(r>>1)-o:o,i.isubn(a)}else a=0;n.push(a);for(var s=0!==i.cmpn(0)&&0===i.andln(r-1)?e+1:1,u=1;u<s;u++)n.push(0);i.iushrn(s)}return n},r.getJSF=function(t,e){var n=[[],[]];t=t.clone(),e=e.clone();for(var r=0,i=0;t.cmpn(-r)>0||e.cmpn(-i)>0;){var a,o,s,u=t.andln(3)+r&3,c=e.andln(3)+i&3;if(3===u&&(u=-1),3===c&&(c=-1),0==(1&u))a=0;else a=3!==(s=t.andln(7)+r&7)&&5!==s||2!==c?u:-u;if(n[0].push(a),0==(1&c))o=0;else o=3!==(s=e.andln(7)+i&7)&&5!==s||2!==u?c:-c;n[1].push(o),2*r===a+1&&(r=1-r),2*i===o+1&&(i=1-i),t.iushrn(1),e.iushrn(1)}return n},r.cachedProperty=function(t,e,n){var r="_"+e;t.prototype[e]=function(){return void 0!==this[r]?this[r]:this[r]=n.call(this)}},r.parseBytes=function(t){return"string"==typeof t?r.toArray(t,"hex"):t},r.intFromLE=function(t){return new i(t,"hex","le")}},function(t,e,n){(function(t,n){(function(){var r,i=200,a="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",o="Expected a function",s="__lodash_hash_undefined__",u=500,c="__lodash_placeholder__",f=1,l=2,h=4,d=1,p=2,g=1,y=2,b=4,m=8,v=16,_=32,w=64,x=128,k=256,E=512,A=30,S="...",M=800,T=16,D=1,C=2,O=1/0,R=9007199254740991,N=17976931348623157e292,I=NaN,B=4294967295,L=B-1,P=B>>>1,F=[["ary",x],["bind",g],["bindKey",y],["curry",m],["curryRight",v],["flip",E],["partial",_],["partialRight",w],["rearg",k]],q="[object Arguments]",j="[object Array]",U="[object AsyncFunction]",z="[object Boolean]",Y="[object Date]",H="[object DOMException]",V="[object Error]",$="[object Function]",G="[object GeneratorFunction]",W="[object Map]",K="[object Number]",X="[object Null]",Z="[object Object]",J="[object Proxy]",Q="[object RegExp]",tt="[object Set]",et="[object String]",nt="[object Symbol]",rt="[object Undefined]",it="[object WeakMap]",at="[object WeakSet]",ot="[object ArrayBuffer]",st="[object DataView]",ut="[object Float32Array]",ct="[object Float64Array]",ft="[object Int8Array]",lt="[object Int16Array]",ht="[object Int32Array]",dt="[object Uint8Array]",pt="[object Uint8ClampedArray]",gt="[object Uint16Array]",yt="[object Uint32Array]",bt=/\b__p \+= '';/g,mt=/\b(__p \+=) '' \+/g,vt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,_t=/&(?:amp|lt|gt|quot|#39);/g,wt=/[&<>"']/g,xt=RegExp(_t.source),kt=RegExp(wt.source),Et=/<%-([\s\S]+?)%>/g,At=/<%([\s\S]+?)%>/g,St=/<%=([\s\S]+?)%>/g,Mt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Tt=/^\w*$/,Dt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ct=/[\\^$.*+?()[\]{}|]/g,Ot=RegExp(Ct.source),Rt=/^\s+|\s+$/g,Nt=/^\s+/,It=/\s+$/,Bt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Lt=/\{\n\/\* \[wrapped with (.+)\] \*/,Pt=/,? & /,Ft=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,qt=/\\(\\)?/g,jt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ut=/\w*$/,zt=/^[-+]0x[0-9a-f]+$/i,Yt=/^0b[01]+$/i,Ht=/^\[object .+?Constructor\]$/,Vt=/^0o[0-7]+$/i,$t=/^(?:0|[1-9]\d*)$/,Gt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Wt=/($^)/,Kt=/['\n\r\u2028\u2029\\]/g,Xt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Zt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Jt="[\\ud800-\\udfff]",Qt="["+Zt+"]",te="["+Xt+"]",ee="\\d+",ne="[\\u2700-\\u27bf]",re="[a-z\\xdf-\\xf6\\xf8-\\xff]",ie="[^\\ud800-\\udfff"+Zt+ee+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",ae="\\ud83c[\\udffb-\\udfff]",oe="[^\\ud800-\\udfff]",se="(?:\\ud83c[\\udde6-\\uddff]){2}",ue="[\\ud800-\\udbff][\\udc00-\\udfff]",ce="[A-Z\\xc0-\\xd6\\xd8-\\xde]",fe="(?:"+re+"|"+ie+")",le="(?:"+ce+"|"+ie+")",he="(?:"+te+"|"+ae+")"+"?",de="[\\ufe0e\\ufe0f]?"+he+("(?:\\u200d(?:"+[oe,se,ue].join("|")+")[\\ufe0e\\ufe0f]?"+he+")*"),pe="(?:"+[ne,se,ue].join("|")+")"+de,ge="(?:"+[oe+te+"?",te,se,ue,Jt].join("|")+")",ye=RegExp("['’]","g"),be=RegExp(te,"g"),me=RegExp(ae+"(?="+ae+")|"+ge+de,"g"),ve=RegExp([ce+"?"+re+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[Qt,ce,"$"].join("|")+")",le+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[Qt,ce+fe,"$"].join("|")+")",ce+"?"+fe+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ce+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ee,pe].join("|"),"g"),_e=RegExp("[\\u200d\\ud800-\\udfff"+Xt+"\\ufe0e\\ufe0f]"),we=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,xe=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ke=-1,Ee={};Ee[ut]=Ee[ct]=Ee[ft]=Ee[lt]=Ee[ht]=Ee[dt]=Ee[pt]=Ee[gt]=Ee[yt]=!0,Ee[q]=Ee[j]=Ee[ot]=Ee[z]=Ee[st]=Ee[Y]=Ee[V]=Ee[$]=Ee[W]=Ee[K]=Ee[Z]=Ee[Q]=Ee[tt]=Ee[et]=Ee[it]=!1;var Ae={};Ae[q]=Ae[j]=Ae[ot]=Ae[st]=Ae[z]=Ae[Y]=Ae[ut]=Ae[ct]=Ae[ft]=Ae[lt]=Ae[ht]=Ae[W]=Ae[K]=Ae[Z]=Ae[Q]=Ae[tt]=Ae[et]=Ae[nt]=Ae[dt]=Ae[pt]=Ae[gt]=Ae[yt]=!0,Ae[V]=Ae[$]=Ae[it]=!1;var Se={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Me=parseFloat,Te=parseInt,De="object"==typeof t&&t&&t.Object===Object&&t,Ce="object"==typeof self&&self&&self.Object===Object&&self,Oe=De||Ce||Function("return this")(),Re=e&&!e.nodeType&&e,Ne=Re&&"object"==typeof n&&n&&!n.nodeType&&n,Ie=Ne&&Ne.exports===Re,Be=Ie&&De.process,Le=function(){try{var t=Ne&&Ne.require&&Ne.require("util").types;return t||Be&&Be.binding&&Be.binding("util")}catch(t){}}(),Pe=Le&&Le.isArrayBuffer,Fe=Le&&Le.isDate,qe=Le&&Le.isMap,je=Le&&Le.isRegExp,Ue=Le&&Le.isSet,ze=Le&&Le.isTypedArray;function Ye(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function He(t,e,n,r){for(var i=-1,a=null==t?0:t.length;++i<a;){var o=t[i];e(r,o,n(o),t)}return r}function Ve(t,e){for(var n=-1,r=null==t?0:t.length;++n<r&&!1!==e(t[n],n,t););return t}function $e(t,e){for(var n=null==t?0:t.length;n--&&!1!==e(t[n],n,t););return t}function Ge(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(!e(t[n],n,t))return!1;return!0}function We(t,e){for(var n=-1,r=null==t?0:t.length,i=0,a=[];++n<r;){var o=t[n];e(o,n,t)&&(a[i++]=o)}return a}function Ke(t,e){return!!(null==t?0:t.length)&&on(t,e,0)>-1}function Xe(t,e,n){for(var r=-1,i=null==t?0:t.length;++r<i;)if(n(e,t[r]))return!0;return!1}function Ze(t,e){for(var n=-1,r=null==t?0:t.length,i=Array(r);++n<r;)i[n]=e(t[n],n,t);return i}function Je(t,e){for(var n=-1,r=e.length,i=t.length;++n<r;)t[i+n]=e[n];return t}function Qe(t,e,n,r){var i=-1,a=null==t?0:t.length;for(r&&a&&(n=t[++i]);++i<a;)n=e(n,t[i],i,t);return n}function tn(t,e,n,r){var i=null==t?0:t.length;for(r&&i&&(n=t[--i]);i--;)n=e(n,t[i],i,t);return n}function en(t,e){for(var n=-1,r=null==t?0:t.length;++n<r;)if(e(t[n],n,t))return!0;return!1}var nn=fn("length");function rn(t,e,n){var r;return n(t,(function(t,n,i){if(e(t,n,i))return r=n,!1})),r}function an(t,e,n,r){for(var i=t.length,a=n+(r?1:-1);r?a--:++a<i;)if(e(t[a],a,t))return a;return-1}function on(t,e,n){return e==e?function(t,e,n){var r=n-1,i=t.length;for(;++r<i;)if(t[r]===e)return r;return-1}(t,e,n):an(t,un,n)}function sn(t,e,n,r){for(var i=n-1,a=t.length;++i<a;)if(r(t[i],e))return i;return-1}function un(t){return t!=t}function cn(t,e){var n=null==t?0:t.length;return n?dn(t,e)/n:I}function fn(t){return function(e){return null==e?r:e[t]}}function ln(t){return function(e){return null==t?r:t[e]}}function hn(t,e,n,r,i){return i(t,(function(t,i,a){n=r?(r=!1,t):e(n,t,i,a)})),n}function dn(t,e){for(var n,i=-1,a=t.length;++i<a;){var o=e(t[i]);o!==r&&(n=n===r?o:n+o)}return n}function pn(t,e){for(var n=-1,r=Array(t);++n<t;)r[n]=e(n);return r}function gn(t){return function(e){return t(e)}}function yn(t,e){return Ze(e,(function(e){return t[e]}))}function bn(t,e){return t.has(e)}function mn(t,e){for(var n=-1,r=t.length;++n<r&&on(e,t[n],0)>-1;);return n}function vn(t,e){for(var n=t.length;n--&&on(e,t[n],0)>-1;);return n}var _n=ln({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","Ĳ":"IJ","ĳ":"ij","Œ":"Oe","œ":"oe","ŉ":"'n","ſ":"s"}),wn=ln({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});function xn(t){return"\\"+Se[t]}function kn(t){return _e.test(t)}function En(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function An(t,e){return function(n){return t(e(n))}}function Sn(t,e){for(var n=-1,r=t.length,i=0,a=[];++n<r;){var o=t[n];o!==e&&o!==c||(t[n]=c,a[i++]=n)}return a}function Mn(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=t})),n}function Tn(t){var e=-1,n=Array(t.size);return t.forEach((function(t){n[++e]=[t,t]})),n}function Dn(t){return kn(t)?function(t){var e=me.lastIndex=0;for(;me.test(t);)++e;return e}(t):nn(t)}function Cn(t){return kn(t)?function(t){return t.match(me)||[]}(t):function(t){return t.split("")}(t)}var On=ln({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"});var Rn=function t(e){var n,Xt=(e=null==e?Oe:Rn.defaults(Oe.Object(),e,Rn.pick(Oe,xe))).Array,Zt=e.Date,Jt=e.Error,Qt=e.Function,te=e.Math,ee=e.Object,ne=e.RegExp,re=e.String,ie=e.TypeError,ae=Xt.prototype,oe=Qt.prototype,se=ee.prototype,ue=e["__core-js_shared__"],ce=oe.toString,fe=se.hasOwnProperty,le=0,he=(n=/[^.]+$/.exec(ue&&ue.keys&&ue.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",de=se.toString,pe=ce.call(ee),ge=Oe._,me=ne("^"+ce.call(fe).replace(Ct,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),_e=Ie?e.Buffer:r,Se=e.Symbol,De=e.Uint8Array,Ce=_e?_e.allocUnsafe:r,Re=An(ee.getPrototypeOf,ee),Ne=ee.create,Be=se.propertyIsEnumerable,Le=ae.splice,nn=Se?Se.isConcatSpreadable:r,ln=Se?Se.iterator:r,Nn=Se?Se.toStringTag:r,In=function(){try{var t=Fa(ee,"defineProperty");return t({},"",{}),t}catch(t){}}(),Bn=e.clearTimeout!==Oe.clearTimeout&&e.clearTimeout,Ln=Zt&&Zt.now!==Oe.Date.now&&Zt.now,Pn=e.setTimeout!==Oe.setTimeout&&e.setTimeout,Fn=te.ceil,qn=te.floor,jn=ee.getOwnPropertySymbols,Un=_e?_e.isBuffer:r,zn=e.isFinite,Yn=ae.join,Hn=An(ee.keys,ee),Vn=te.max,$n=te.min,Gn=Zt.now,Wn=e.parseInt,Kn=te.random,Xn=ae.reverse,Zn=Fa(e,"DataView"),Jn=Fa(e,"Map"),Qn=Fa(e,"Promise"),tr=Fa(e,"Set"),er=Fa(e,"WeakMap"),nr=Fa(ee,"create"),rr=er&&new er,ir={},ar=fo(Zn),or=fo(Jn),sr=fo(Qn),ur=fo(tr),cr=fo(er),fr=Se?Se.prototype:r,lr=fr?fr.valueOf:r,hr=fr?fr.toString:r;function dr(t){if(Ts(t)&&!bs(t)&&!(t instanceof br)){if(t instanceof yr)return t;if(fe.call(t,"__wrapped__"))return lo(t)}return new yr(t)}var pr=function(){function t(){}return function(e){if(!Ms(e))return{};if(Ne)return Ne(e);t.prototype=e;var n=new t;return t.prototype=r,n}}();function gr(){}function yr(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=r}function br(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=B,this.__views__=[]}function mr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function vr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function _r(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e<n;){var r=t[e];this.set(r[0],r[1])}}function wr(t){var e=-1,n=null==t?0:t.length;for(this.__data__=new _r;++e<n;)this.add(t[e])}function xr(t){var e=this.__data__=new vr(t);this.size=e.size}function kr(t,e){var n=bs(t),r=!n&&ys(t),i=!n&&!r&&ws(t),a=!n&&!r&&!i&&Ls(t),o=n||r||i||a,s=o?pn(t.length,re):[],u=s.length;for(var c in t)!e&&!fe.call(t,c)||o&&("length"==c||i&&("offset"==c||"parent"==c)||a&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||Va(c,u))||s.push(c);return s}function Er(t){var e=t.length;return e?t[wi(0,e-1)]:r}function Ar(t,e){return so(na(t),Ir(e,0,t.length))}function Sr(t){return so(na(t))}function Mr(t,e,n){(n===r||ds(t[e],n))&&(n!==r||e in t)||Rr(t,e,n)}function Tr(t,e,n){var i=t[e];fe.call(t,e)&&ds(i,n)&&(n!==r||e in t)||Rr(t,e,n)}function Dr(t,e){for(var n=t.length;n--;)if(ds(t[n][0],e))return n;return-1}function Cr(t,e,n,r){return qr(t,(function(t,i,a){e(r,t,n(t),a)})),r}function Or(t,e){return t&&ra(e,iu(e),t)}function Rr(t,e,n){"__proto__"==e&&In?In(t,e,{configurable:!0,enumerable:!0,value:n,writable:!0}):t[e]=n}function Nr(t,e){for(var n=-1,i=e.length,a=Xt(i),o=null==t;++n<i;)a[n]=o?r:Qs(t,e[n]);return a}function Ir(t,e,n){return t==t&&(n!==r&&(t=t<=n?t:n),e!==r&&(t=t>=e?t:e)),t}function Br(t,e,n,i,a,o){var s,u=e&f,c=e&l,d=e&h;if(n&&(s=a?n(t,i,a,o):n(t)),s!==r)return s;if(!Ms(t))return t;var p=bs(t);if(p){if(s=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&fe.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!u)return na(t,s)}else{var g=Ua(t),y=g==$||g==G;if(ws(t))return Xi(t,u);if(g==Z||g==q||y&&!a){if(s=c||y?{}:Ya(t),!u)return c?function(t,e){return ra(t,ja(t),e)}(t,function(t,e){return t&&ra(e,au(e),t)}(s,t)):function(t,e){return ra(t,qa(t),e)}(t,Or(s,t))}else{if(!Ae[g])return a?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case ot:return Zi(t);case z:case Y:return new r(+t);case st:return function(t,e){var n=e?Zi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case ut:case ct:case ft:case lt:case ht:case dt:case pt:case gt:case yt:return Ji(t,n);case W:return new r;case K:case et:return new r(t);case Q:return function(t){var e=new t.constructor(t.source,Ut.exec(t));return e.lastIndex=t.lastIndex,e}(t);case tt:return new r;case nt:return i=t,lr?ee(lr.call(i)):{}}var i}(t,g,u)}}o||(o=new xr);var b=o.get(t);if(b)return b;o.set(t,s),Ns(t)?t.forEach((function(r){s.add(Br(r,e,n,r,t,o))})):Ds(t)&&t.forEach((function(r,i){s.set(i,Br(r,e,n,i,t,o))}));var m=p?r:(d?c?Oa:Ca:c?au:iu)(t);return Ve(m||t,(function(r,i){m&&(r=t[i=r]),Tr(s,i,Br(r,e,n,i,t,o))})),s}function Lr(t,e,n){var i=n.length;if(null==t)return!i;for(t=ee(t);i--;){var a=n[i],o=e[a],s=t[a];if(s===r&&!(a in t)||!o(s))return!1}return!0}function Pr(t,e,n){if("function"!=typeof t)throw new ie(o);return ro((function(){t.apply(r,n)}),e)}function Fr(t,e,n,r){var a=-1,o=Ke,s=!0,u=t.length,c=[],f=e.length;if(!u)return c;n&&(e=Ze(e,gn(n))),r?(o=Xe,s=!1):e.length>=i&&(o=bn,s=!1,e=new wr(e));t:for(;++a<u;){var l=t[a],h=null==n?l:n(l);if(l=r||0!==l?l:0,s&&h==h){for(var d=f;d--;)if(e[d]===h)continue t;c.push(l)}else o(e,h,r)||c.push(l)}return c}dr.templateSettings={escape:Et,evaluate:At,interpolate:St,variable:"",imports:{_:dr}},dr.prototype=gr.prototype,dr.prototype.constructor=dr,yr.prototype=pr(gr.prototype),yr.prototype.constructor=yr,br.prototype=pr(gr.prototype),br.prototype.constructor=br,mr.prototype.clear=function(){this.__data__=nr?nr(null):{},this.size=0},mr.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},mr.prototype.get=function(t){var e=this.__data__;if(nr){var n=e[t];return n===s?r:n}return fe.call(e,t)?e[t]:r},mr.prototype.has=function(t){var e=this.__data__;return nr?e[t]!==r:fe.call(e,t)},mr.prototype.set=function(t,e){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=nr&&e===r?s:e,this},vr.prototype.clear=function(){this.__data__=[],this.size=0},vr.prototype.delete=function(t){var e=this.__data__,n=Dr(e,t);return!(n<0)&&(n==e.length-1?e.pop():Le.call(e,n,1),--this.size,!0)},vr.prototype.get=function(t){var e=this.__data__,n=Dr(e,t);return n<0?r:e[n][1]},vr.prototype.has=function(t){return Dr(this.__data__,t)>-1},vr.prototype.set=function(t,e){var n=this.__data__,r=Dr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},_r.prototype.clear=function(){this.size=0,this.__data__={hash:new mr,map:new(Jn||vr),string:new mr}},_r.prototype.delete=function(t){var e=La(this,t).delete(t);return this.size-=e?1:0,e},_r.prototype.get=function(t){return La(this,t).get(t)},_r.prototype.has=function(t){return La(this,t).has(t)},_r.prototype.set=function(t,e){var n=La(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},wr.prototype.add=wr.prototype.push=function(t){return this.__data__.set(t,s),this},wr.prototype.has=function(t){return this.__data__.has(t)},xr.prototype.clear=function(){this.__data__=new vr,this.size=0},xr.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},xr.prototype.get=function(t){return this.__data__.get(t)},xr.prototype.has=function(t){return this.__data__.has(t)},xr.prototype.set=function(t,e){var n=this.__data__;if(n instanceof vr){var r=n.__data__;if(!Jn||r.length<i-1)return r.push([t,e]),this.size=++n.size,this;n=this.__data__=new _r(r)}return n.set(t,e),this.size=n.size,this};var qr=oa(Gr),jr=oa(Wr,!0);function Ur(t,e){var n=!0;return qr(t,(function(t,r,i){return n=!!e(t,r,i)})),n}function zr(t,e,n){for(var i=-1,a=t.length;++i<a;){var o=t[i],s=e(o);if(null!=s&&(u===r?s==s&&!Bs(s):n(s,u)))var u=s,c=o}return c}function Yr(t,e){var n=[];return qr(t,(function(t,r,i){e(t,r,i)&&n.push(t)})),n}function Hr(t,e,n,r,i){var a=-1,o=t.length;for(n||(n=Ha),i||(i=[]);++a<o;){var s=t[a];e>0&&n(s)?e>1?Hr(s,e-1,n,r,i):Je(i,s):r||(i[i.length]=s)}return i}var Vr=sa(),$r=sa(!0);function Gr(t,e){return t&&Vr(t,e,iu)}function Wr(t,e){return t&&$r(t,e,iu)}function Kr(t,e){return We(e,(function(e){return Es(t[e])}))}function Xr(t,e){for(var n=0,i=(e=$i(e,t)).length;null!=t&&n<i;)t=t[co(e[n++])];return n&&n==i?t:r}function Zr(t,e,n){var r=e(t);return bs(t)?r:Je(r,n(t))}function Jr(t){return null==t?t===r?rt:X:Nn&&Nn in ee(t)?function(t){var e=fe.call(t,Nn),n=t[Nn];try{t[Nn]=r;var i=!0}catch(t){}var a=de.call(t);i&&(e?t[Nn]=n:delete t[Nn]);return a}(t):function(t){return de.call(t)}(t)}function Qr(t,e){return t>e}function ti(t,e){return null!=t&&fe.call(t,e)}function ei(t,e){return null!=t&&e in ee(t)}function ni(t,e,n){for(var i=n?Xe:Ke,a=t[0].length,o=t.length,s=o,u=Xt(o),c=1/0,f=[];s--;){var l=t[s];s&&e&&(l=Ze(l,gn(e))),c=$n(l.length,c),u[s]=!n&&(e||a>=120&&l.length>=120)?new wr(s&&l):r}l=t[0];var h=-1,d=u[0];t:for(;++h<a&&f.length<c;){var p=l[h],g=e?e(p):p;if(p=n||0!==p?p:0,!(d?bn(d,g):i(f,g,n))){for(s=o;--s;){var y=u[s];if(!(y?bn(y,g):i(t[s],g,n)))continue t}d&&d.push(g),f.push(p)}}return f}function ri(t,e,n){var i=null==(t=to(t,e=$i(e,t)))?t:t[co(ko(e))];return null==i?r:Ye(i,t,n)}function ii(t){return Ts(t)&&Jr(t)==q}function ai(t,e,n,i,a){return t===e||(null==t||null==e||!Ts(t)&&!Ts(e)?t!=t&&e!=e:function(t,e,n,i,a,o){var s=bs(t),u=bs(e),c=s?j:Ua(t),f=u?j:Ua(e),l=(c=c==q?Z:c)==Z,h=(f=f==q?Z:f)==Z,g=c==f;if(g&&ws(t)){if(!ws(e))return!1;s=!0,l=!1}if(g&&!l)return o||(o=new xr),s||Ls(t)?Ta(t,e,n,i,a,o):function(t,e,n,r,i,a,o){switch(n){case st:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case ot:return!(t.byteLength!=e.byteLength||!a(new De(t),new De(e)));case z:case Y:case K:return ds(+t,+e);case V:return t.name==e.name&&t.message==e.message;case Q:case et:return t==e+"";case W:var s=En;case tt:var u=r&d;if(s||(s=Mn),t.size!=e.size&&!u)return!1;var c=o.get(t);if(c)return c==e;r|=p,o.set(t,e);var f=Ta(s(t),s(e),r,i,a,o);return o.delete(t),f;case nt:if(lr)return lr.call(t)==lr.call(e)}return!1}(t,e,c,n,i,a,o);if(!(n&d)){var y=l&&fe.call(t,"__wrapped__"),b=h&&fe.call(e,"__wrapped__");if(y||b){var m=y?t.value():t,v=b?e.value():e;return o||(o=new xr),a(m,v,n,i,o)}}if(!g)return!1;return o||(o=new xr),function(t,e,n,i,a,o){var s=n&d,u=Ca(t),c=u.length,f=Ca(e).length;if(c!=f&&!s)return!1;var l=c;for(;l--;){var h=u[l];if(!(s?h in e:fe.call(e,h)))return!1}var p=o.get(t);if(p&&o.get(e))return p==e;var g=!0;o.set(t,e),o.set(e,t);var y=s;for(;++l<c;){h=u[l];var b=t[h],m=e[h];if(i)var v=s?i(m,b,h,e,t,o):i(b,m,h,t,e,o);if(!(v===r?b===m||a(b,m,n,i,o):v)){g=!1;break}y||(y="constructor"==h)}if(g&&!y){var _=t.constructor,w=e.constructor;_!=w&&"constructor"in t&&"constructor"in e&&!("function"==typeof _&&_ instanceof _&&"function"==typeof w&&w instanceof w)&&(g=!1)}return o.delete(t),o.delete(e),g}(t,e,n,i,a,o)}(t,e,n,i,ai,a))}function oi(t,e,n,i){var a=n.length,o=a,s=!i;if(null==t)return!o;for(t=ee(t);a--;){var u=n[a];if(s&&u[2]?u[1]!==t[u[0]]:!(u[0]in t))return!1}for(;++a<o;){var c=(u=n[a])[0],f=t[c],l=u[1];if(s&&u[2]){if(f===r&&!(c in t))return!1}else{var h=new xr;if(i)var g=i(f,l,c,t,e,h);if(!(g===r?ai(l,f,d|p,i,h):g))return!1}}return!0}function si(t){return!(!Ms(t)||(e=t,he&&he in e))&&(Es(t)?me:Ht).test(fo(t));var e}function ui(t){return"function"==typeof t?t:null==t?Cu:"object"==typeof t?bs(t)?pi(t[0],t[1]):di(t):qu(t)}function ci(t){if(!Xa(t))return Hn(t);var e=[];for(var n in ee(t))fe.call(t,n)&&"constructor"!=n&&e.push(n);return e}function fi(t){if(!Ms(t))return function(t){var e=[];if(null!=t)for(var n in ee(t))e.push(n);return e}(t);var e=Xa(t),n=[];for(var r in t)("constructor"!=r||!e&&fe.call(t,r))&&n.push(r);return n}function li(t,e){return t<e}function hi(t,e){var n=-1,r=vs(t)?Xt(t.length):[];return qr(t,(function(t,i,a){r[++n]=e(t,i,a)})),r}function di(t){var e=Pa(t);return 1==e.length&&e[0][2]?Ja(e[0][0],e[0][1]):function(n){return n===t||oi(n,t,e)}}function pi(t,e){return Ga(t)&&Za(e)?Ja(co(t),e):function(n){var i=Qs(n,t);return i===r&&i===e?tu(n,t):ai(e,i,d|p)}}function gi(t,e,n,i,a){t!==e&&Vr(e,(function(o,s){if(a||(a=new xr),Ms(o))!function(t,e,n,i,a,o,s){var u=eo(t,n),c=eo(e,n),f=s.get(c);if(f)return void Mr(t,n,f);var l=o?o(u,c,n+"",t,e,s):r,h=l===r;if(h){var d=bs(c),p=!d&&ws(c),g=!d&&!p&&Ls(c);l=c,d||p||g?bs(u)?l=u:_s(u)?l=na(u):p?(h=!1,l=Xi(c,!0)):g?(h=!1,l=Ji(c,!0)):l=[]:Os(c)||ys(c)?(l=u,ys(u)?l=Hs(u):Ms(u)&&!Es(u)||(l=Ya(c))):h=!1}h&&(s.set(c,l),a(l,c,i,o,s),s.delete(c));Mr(t,n,l)}(t,e,s,n,gi,i,a);else{var u=i?i(eo(t,s),o,s+"",t,e,a):r;u===r&&(u=o),Mr(t,s,u)}}),au)}function yi(t,e){var n=t.length;if(n)return Va(e+=e<0?n:0,n)?t[e]:r}function bi(t,e,n){var r=-1;return e=Ze(e.length?e:[Cu],gn(Ba())),function(t,e){var n=t.length;for(t.sort(e);n--;)t[n]=t[n].value;return t}(hi(t,(function(t,n,i){return{criteria:Ze(e,(function(e){return e(t)})),index:++r,value:t}})),(function(t,e){return function(t,e,n){var r=-1,i=t.criteria,a=e.criteria,o=i.length,s=n.length;for(;++r<o;){var u=Qi(i[r],a[r]);if(u){if(r>=s)return u;var c=n[r];return u*("desc"==c?-1:1)}}return t.index-e.index}(t,e,n)}))}function mi(t,e,n){for(var r=-1,i=e.length,a={};++r<i;){var o=e[r],s=Xr(t,o);n(s,o)&&Si(a,$i(o,t),s)}return a}function vi(t,e,n,r){var i=r?sn:on,a=-1,o=e.length,s=t;for(t===e&&(e=na(e)),n&&(s=Ze(t,gn(n)));++a<o;)for(var u=0,c=e[a],f=n?n(c):c;(u=i(s,f,u,r))>-1;)s!==t&&Le.call(s,u,1),Le.call(t,u,1);return t}function _i(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==a){var a=i;Va(i)?Le.call(t,i,1):Fi(t,i)}}return t}function wi(t,e){return t+qn(Kn()*(e-t+1))}function xi(t,e){var n="";if(!t||e<1||e>R)return n;do{e%2&&(n+=t),(e=qn(e/2))&&(t+=t)}while(e);return n}function ki(t,e){return io(Qa(t,e,Cu),t+"")}function Ei(t){return Er(du(t))}function Ai(t,e){var n=du(t);return so(n,Ir(e,0,n.length))}function Si(t,e,n,i){if(!Ms(t))return t;for(var a=-1,o=(e=$i(e,t)).length,s=o-1,u=t;null!=u&&++a<o;){var c=co(e[a]),f=n;if(a!=s){var l=u[c];(f=i?i(l,c,u):r)===r&&(f=Ms(l)?l:Va(e[a+1])?[]:{})}Tr(u,c,f),u=u[c]}return t}var Mi=rr?function(t,e){return rr.set(t,e),t}:Cu,Ti=In?function(t,e){return In(t,"toString",{configurable:!0,enumerable:!1,value:Mu(e),writable:!0})}:Cu;function Di(t){return so(du(t))}function Ci(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),(n=n>i?i:n)<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var a=Xt(i);++r<i;)a[r]=t[r+e];return a}function Oi(t,e){var n;return qr(t,(function(t,r,i){return!(n=e(t,r,i))})),!!n}function Ri(t,e,n){var r=0,i=null==t?r:t.length;if("number"==typeof e&&e==e&&i<=P){for(;r<i;){var a=r+i>>>1,o=t[a];null!==o&&!Bs(o)&&(n?o<=e:o<e)?r=a+1:i=a}return i}return Ni(t,e,Cu,n)}function Ni(t,e,n,i){e=n(e);for(var a=0,o=null==t?0:t.length,s=e!=e,u=null===e,c=Bs(e),f=e===r;a<o;){var l=qn((a+o)/2),h=n(t[l]),d=h!==r,p=null===h,g=h==h,y=Bs(h);if(s)var b=i||g;else b=f?g&&(i||d):u?g&&d&&(i||!p):c?g&&d&&!p&&(i||!y):!p&&!y&&(i?h<=e:h<e);b?a=l+1:o=l}return $n(o,L)}function Ii(t,e){for(var n=-1,r=t.length,i=0,a=[];++n<r;){var o=t[n],s=e?e(o):o;if(!n||!ds(s,u)){var u=s;a[i++]=0===o?0:o}}return a}function Bi(t){return"number"==typeof t?t:Bs(t)?I:+t}function Li(t){if("string"==typeof t)return t;if(bs(t))return Ze(t,Li)+"";if(Bs(t))return hr?hr.call(t):"";var e=t+"";return"0"==e&&1/t==-O?"-0":e}function Pi(t,e,n){var r=-1,a=Ke,o=t.length,s=!0,u=[],c=u;if(n)s=!1,a=Xe;else if(o>=i){var f=e?null:xa(t);if(f)return Mn(f);s=!1,a=bn,c=new wr}else c=e?[]:u;t:for(;++r<o;){var l=t[r],h=e?e(l):l;if(l=n||0!==l?l:0,s&&h==h){for(var d=c.length;d--;)if(c[d]===h)continue t;e&&c.push(h),u.push(l)}else a(c,h,n)||(c!==u&&c.push(h),u.push(l))}return u}function Fi(t,e){return null==(t=to(t,e=$i(e,t)))||delete t[co(ko(e))]}function qi(t,e,n,r){return Si(t,e,n(Xr(t,e)),r)}function ji(t,e,n,r){for(var i=t.length,a=r?i:-1;(r?a--:++a<i)&&e(t[a],a,t););return n?Ci(t,r?0:a,r?a+1:i):Ci(t,r?a+1:0,r?i:a)}function Ui(t,e){var n=t;return n instanceof br&&(n=n.value()),Qe(e,(function(t,e){return e.func.apply(e.thisArg,Je([t],e.args))}),n)}function zi(t,e,n){var r=t.length;if(r<2)return r?Pi(t[0]):[];for(var i=-1,a=Xt(r);++i<r;)for(var o=t[i],s=-1;++s<r;)s!=i&&(a[i]=Fr(a[i]||o,t[s],e,n));return Pi(Hr(a,1),e,n)}function Yi(t,e,n){for(var i=-1,a=t.length,o=e.length,s={};++i<a;){var u=i<o?e[i]:r;n(s,t[i],u)}return s}function Hi(t){return _s(t)?t:[]}function Vi(t){return"function"==typeof t?t:Cu}function $i(t,e){return bs(t)?t:Ga(t,e)?[t]:uo(Vs(t))}var Gi=ki;function Wi(t,e,n){var i=t.length;return n=n===r?i:n,!e&&n>=i?t:Ci(t,e,n)}var Ki=Bn||function(t){return Oe.clearTimeout(t)};function Xi(t,e){if(e)return t.slice();var n=t.length,r=Ce?Ce(n):new t.constructor(n);return t.copy(r),r}function Zi(t){var e=new t.constructor(t.byteLength);return new De(e).set(new De(t)),e}function Ji(t,e){var n=e?Zi(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Qi(t,e){if(t!==e){var n=t!==r,i=null===t,a=t==t,o=Bs(t),s=e!==r,u=null===e,c=e==e,f=Bs(e);if(!u&&!f&&!o&&t>e||o&&s&&c&&!u&&!f||i&&s&&c||!n&&c||!a)return 1;if(!i&&!o&&!f&&t<e||f&&n&&a&&!i&&!o||u&&n&&a||!s&&a||!c)return-1}return 0}function ta(t,e,n,r){for(var i=-1,a=t.length,o=n.length,s=-1,u=e.length,c=Vn(a-o,0),f=Xt(u+c),l=!r;++s<u;)f[s]=e[s];for(;++i<o;)(l||i<a)&&(f[n[i]]=t[i]);for(;c--;)f[s++]=t[i++];return f}function ea(t,e,n,r){for(var i=-1,a=t.length,o=-1,s=n.length,u=-1,c=e.length,f=Vn(a-s,0),l=Xt(f+c),h=!r;++i<f;)l[i]=t[i];for(var d=i;++u<c;)l[d+u]=e[u];for(;++o<s;)(h||i<a)&&(l[d+n[o]]=t[i++]);return l}function na(t,e){var n=-1,r=t.length;for(e||(e=Xt(r));++n<r;)e[n]=t[n];return e}function ra(t,e,n,i){var a=!n;n||(n={});for(var o=-1,s=e.length;++o<s;){var u=e[o],c=i?i(n[u],t[u],u,n,t):r;c===r&&(c=t[u]),a?Rr(n,u,c):Tr(n,u,c)}return n}function ia(t,e){return function(n,r){var i=bs(n)?He:Cr,a=e?e():{};return i(n,t,Ba(r,2),a)}}function aa(t){return ki((function(e,n){var i=-1,a=n.length,o=a>1?n[a-1]:r,s=a>2?n[2]:r;for(o=t.length>3&&"function"==typeof o?(a--,o):r,s&&$a(n[0],n[1],s)&&(o=a<3?r:o,a=1),e=ee(e);++i<a;){var u=n[i];u&&t(e,u,i,o)}return e}))}function oa(t,e){return function(n,r){if(null==n)return n;if(!vs(n))return t(n,r);for(var i=n.length,a=e?i:-1,o=ee(n);(e?a--:++a<i)&&!1!==r(o[a],a,o););return n}}function sa(t){return function(e,n,r){for(var i=-1,a=ee(e),o=r(e),s=o.length;s--;){var u=o[t?s:++i];if(!1===n(a[u],u,a))break}return e}}function ua(t){return function(e){var n=kn(e=Vs(e))?Cn(e):r,i=n?n[0]:e.charAt(0),a=n?Wi(n,1).join(""):e.slice(1);return i[t]()+a}}function ca(t){return function(e){return Qe(Eu(yu(e).replace(ye,"")),t,"")}}function fa(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var n=pr(t.prototype),r=t.apply(n,e);return Ms(r)?r:n}}function la(t){return function(e,n,i){var a=ee(e);if(!vs(e)){var o=Ba(n,3);e=iu(e),n=function(t){return o(a[t],t,a)}}var s=t(e,n,i);return s>-1?a[o?e[s]:s]:r}}function ha(t){return Da((function(e){var n=e.length,i=n,a=yr.prototype.thru;for(t&&e.reverse();i--;){var s=e[i];if("function"!=typeof s)throw new ie(o);if(a&&!u&&"wrapper"==Na(s))var u=new yr([],!0)}for(i=u?i:n;++i<n;){var c=Na(s=e[i]),f="wrapper"==c?Ra(s):r;u=f&&Wa(f[0])&&f[1]==(x|m|_|k)&&!f[4].length&&1==f[9]?u[Na(f[0])].apply(u,f[3]):1==s.length&&Wa(s)?u[c]():u.thru(s)}return function(){var t=arguments,r=t[0];if(u&&1==t.length&&bs(r))return u.plant(r).value();for(var i=0,a=n?e[i].apply(this,t):r;++i<n;)a=e[i].call(this,a);return a}}))}function da(t,e,n,i,a,o,s,u,c,f){var l=e&x,h=e&g,d=e&y,p=e&(m|v),b=e&E,_=d?r:fa(t);return function g(){for(var y=arguments.length,m=Xt(y),v=y;v--;)m[v]=arguments[v];if(p)var w=Ia(g),x=function(t,e){for(var n=t.length,r=0;n--;)t[n]===e&&++r;return r}(m,w);if(i&&(m=ta(m,i,a,p)),o&&(m=ea(m,o,s,p)),y-=x,p&&y<f){var k=Sn(m,w);return _a(t,e,da,g.placeholder,n,m,k,u,c,f-y)}var E=h?n:this,A=d?E[t]:t;return y=m.length,u?m=function(t,e){var n=t.length,i=$n(e.length,n),a=na(t);for(;i--;){var o=e[i];t[i]=Va(o,n)?a[o]:r}return t}(m,u):b&&y>1&&m.reverse(),l&&c<y&&(m.length=c),this&&this!==Oe&&this instanceof g&&(A=_||fa(A)),A.apply(E,m)}}function pa(t,e){return function(n,r){return function(t,e,n,r){return Gr(t,(function(t,i,a){e(r,n(t),i,a)})),r}(n,t,e(r),{})}}function ga(t,e){return function(n,i){var a;if(n===r&&i===r)return e;if(n!==r&&(a=n),i!==r){if(a===r)return i;"string"==typeof n||"string"==typeof i?(n=Li(n),i=Li(i)):(n=Bi(n),i=Bi(i)),a=t(n,i)}return a}}function ya(t){return Da((function(e){return e=Ze(e,gn(Ba())),ki((function(n){var r=this;return t(e,(function(t){return Ye(t,r,n)}))}))}))}function ba(t,e){var n=(e=e===r?" ":Li(e)).length;if(n<2)return n?xi(e,t):e;var i=xi(e,Fn(t/Dn(e)));return kn(e)?Wi(Cn(i),0,t).join(""):i.slice(0,t)}function ma(t){return function(e,n,i){return i&&"number"!=typeof i&&$a(e,n,i)&&(n=i=r),e=js(e),n===r?(n=e,e=0):n=js(n),function(t,e,n,r){for(var i=-1,a=Vn(Fn((e-t)/(n||1)),0),o=Xt(a);a--;)o[r?a:++i]=t,t+=n;return o}(e,n,i=i===r?e<n?1:-1:js(i),t)}}function va(t){return function(e,n){return"string"==typeof e&&"string"==typeof n||(e=Ys(e),n=Ys(n)),t(e,n)}}function _a(t,e,n,i,a,o,s,u,c,f){var l=e&m;e|=l?_:w,(e&=~(l?w:_))&b||(e&=~(g|y));var h=[t,e,a,l?o:r,l?s:r,l?r:o,l?r:s,u,c,f],d=n.apply(r,h);return Wa(t)&&no(d,h),d.placeholder=i,ao(d,t,e)}function wa(t){var e=te[t];return function(t,n){if(t=Ys(t),(n=null==n?0:$n(Us(n),292))&&zn(t)){var r=(Vs(t)+"e").split("e");return+((r=(Vs(e(r[0]+"e"+(+r[1]+n)))+"e").split("e"))[0]+"e"+(+r[1]-n))}return e(t)}}var xa=tr&&1/Mn(new tr([,-0]))[1]==O?function(t){return new tr(t)}:Bu;function ka(t){return function(e){var n=Ua(e);return n==W?En(e):n==tt?Tn(e):function(t,e){return Ze(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function Ea(t,e,n,i,a,s,u,f){var l=e&y;if(!l&&"function"!=typeof t)throw new ie(o);var h=i?i.length:0;if(h||(e&=~(_|w),i=a=r),u=u===r?u:Vn(Us(u),0),f=f===r?f:Us(f),h-=a?a.length:0,e&w){var d=i,p=a;i=a=r}var E=l?r:Ra(t),A=[t,e,n,i,a,d,p,s,u,f];if(E&&function(t,e){var n=t[1],r=e[1],i=n|r,a=i<(g|y|x),o=r==x&&n==m||r==x&&n==k&&t[7].length<=e[8]||r==(x|k)&&e[7].length<=e[8]&&n==m;if(!a&&!o)return t;r&g&&(t[2]=e[2],i|=n&g?0:b);var s=e[3];if(s){var u=t[3];t[3]=u?ta(u,s,e[4]):s,t[4]=u?Sn(t[3],c):e[4]}(s=e[5])&&(u=t[5],t[5]=u?ea(u,s,e[6]):s,t[6]=u?Sn(t[5],c):e[6]);(s=e[7])&&(t[7]=s);r&x&&(t[8]=null==t[8]?e[8]:$n(t[8],e[8]));null==t[9]&&(t[9]=e[9]);t[0]=e[0],t[1]=i}(A,E),t=A[0],e=A[1],n=A[2],i=A[3],a=A[4],!(f=A[9]=A[9]===r?l?0:t.length:Vn(A[9]-h,0))&&e&(m|v)&&(e&=~(m|v)),e&&e!=g)S=e==m||e==v?function(t,e,n){var i=fa(t);return function a(){for(var o=arguments.length,s=Xt(o),u=o,c=Ia(a);u--;)s[u]=arguments[u];var f=o<3&&s[0]!==c&&s[o-1]!==c?[]:Sn(s,c);return(o-=f.length)<n?_a(t,e,da,a.placeholder,r,s,f,r,r,n-o):Ye(this&&this!==Oe&&this instanceof a?i:t,this,s)}}(t,e,f):e!=_&&e!=(g|_)||a.length?da.apply(r,A):function(t,e,n,r){var i=e&g,a=fa(t);return function e(){for(var o=-1,s=arguments.length,u=-1,c=r.length,f=Xt(c+s),l=this&&this!==Oe&&this instanceof e?a:t;++u<c;)f[u]=r[u];for(;s--;)f[u++]=arguments[++o];return Ye(l,i?n:this,f)}}(t,e,n,i);else var S=function(t,e,n){var r=e&g,i=fa(t);return function e(){return(this&&this!==Oe&&this instanceof e?i:t).apply(r?n:this,arguments)}}(t,e,n);return ao((E?Mi:no)(S,A),t,e)}function Aa(t,e,n,i){return t===r||ds(t,se[n])&&!fe.call(i,n)?e:t}function Sa(t,e,n,i,a,o){return Ms(t)&&Ms(e)&&(o.set(e,t),gi(t,e,r,Sa,o),o.delete(e)),t}function Ma(t){return Os(t)?r:t}function Ta(t,e,n,i,a,o){var s=n&d,u=t.length,c=e.length;if(u!=c&&!(s&&c>u))return!1;var f=o.get(t);if(f&&o.get(e))return f==e;var l=-1,h=!0,g=n&p?new wr:r;for(o.set(t,e),o.set(e,t);++l<u;){var y=t[l],b=e[l];if(i)var m=s?i(b,y,l,e,t,o):i(y,b,l,t,e,o);if(m!==r){if(m)continue;h=!1;break}if(g){if(!en(e,(function(t,e){if(!bn(g,e)&&(y===t||a(y,t,n,i,o)))return g.push(e)}))){h=!1;break}}else if(y!==b&&!a(y,b,n,i,o)){h=!1;break}}return o.delete(t),o.delete(e),h}function Da(t){return io(Qa(t,r,mo),t+"")}function Ca(t){return Zr(t,iu,qa)}function Oa(t){return Zr(t,au,ja)}var Ra=rr?function(t){return rr.get(t)}:Bu;function Na(t){for(var e=t.name+"",n=ir[e],r=fe.call(ir,e)?n.length:0;r--;){var i=n[r],a=i.func;if(null==a||a==t)return i.name}return e}function Ia(t){return(fe.call(dr,"placeholder")?dr:t).placeholder}function Ba(){var t=dr.iteratee||Ou;return t=t===Ou?ui:t,arguments.length?t(arguments[0],arguments[1]):t}function La(t,e){var n,r,i=t.__data__;return("string"==(r=typeof(n=e))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof e?"string":"hash"]:i.map}function Pa(t){for(var e=iu(t),n=e.length;n--;){var r=e[n],i=t[r];e[n]=[r,i,Za(i)]}return e}function Fa(t,e){var n=function(t,e){return null==t?r:t[e]}(t,e);return si(n)?n:r}var qa=jn?function(t){return null==t?[]:(t=ee(t),We(jn(t),(function(e){return Be.call(t,e)})))}:zu,ja=jn?function(t){for(var e=[];t;)Je(e,qa(t)),t=Re(t);return e}:zu,Ua=Jr;function za(t,e,n){for(var r=-1,i=(e=$i(e,t)).length,a=!1;++r<i;){var o=co(e[r]);if(!(a=null!=t&&n(t,o)))break;t=t[o]}return a||++r!=i?a:!!(i=null==t?0:t.length)&&Ss(i)&&Va(o,i)&&(bs(t)||ys(t))}function Ya(t){return"function"!=typeof t.constructor||Xa(t)?{}:pr(Re(t))}function Ha(t){return bs(t)||ys(t)||!!(nn&&t&&t[nn])}function Va(t,e){var n=typeof t;return!!(e=null==e?R:e)&&("number"==n||"symbol"!=n&&$t.test(t))&&t>-1&&t%1==0&&t<e}function $a(t,e,n){if(!Ms(n))return!1;var r=typeof e;return!!("number"==r?vs(n)&&Va(e,n.length):"string"==r&&e in n)&&ds(n[e],t)}function Ga(t,e){if(bs(t))return!1;var n=typeof t;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=t&&!Bs(t))||(Tt.test(t)||!Mt.test(t)||null!=e&&t in ee(e))}function Wa(t){var e=Na(t),n=dr[e];if("function"!=typeof n||!(e in br.prototype))return!1;if(t===n)return!0;var r=Ra(n);return!!r&&t===r[0]}(Zn&&Ua(new Zn(new ArrayBuffer(1)))!=st||Jn&&Ua(new Jn)!=W||Qn&&"[object Promise]"!=Ua(Qn.resolve())||tr&&Ua(new tr)!=tt||er&&Ua(new er)!=it)&&(Ua=function(t){var e=Jr(t),n=e==Z?t.constructor:r,i=n?fo(n):"";if(i)switch(i){case ar:return st;case or:return W;case sr:return"[object Promise]";case ur:return tt;case cr:return it}return e});var Ka=ue?Es:Yu;function Xa(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||se)}function Za(t){return t==t&&!Ms(t)}function Ja(t,e){return function(n){return null!=n&&(n[t]===e&&(e!==r||t in ee(n)))}}function Qa(t,e,n){return e=Vn(e===r?t.length-1:e,0),function(){for(var r=arguments,i=-1,a=Vn(r.length-e,0),o=Xt(a);++i<a;)o[i]=r[e+i];i=-1;for(var s=Xt(e+1);++i<e;)s[i]=r[i];return s[e]=n(o),Ye(t,this,s)}}function to(t,e){return e.length<2?t:Xr(t,Ci(e,0,-1))}function eo(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var no=oo(Mi),ro=Pn||function(t,e){return Oe.setTimeout(t,e)},io=oo(Ti);function ao(t,e,n){var r=e+"";return io(t,function(t,e){var n=e.length;if(!n)return t;var r=n-1;return e[r]=(n>1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Bt,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Ve(F,(function(n){var r="_."+n[0];e&n[1]&&!Ke(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(Lt);return e?e[1].split(Pt):[]}(r),n)))}function oo(t){var e=0,n=0;return function(){var i=Gn(),a=T-(i-n);if(n=i,a>0){if(++e>=M)return arguments[0]}else e=0;return t.apply(r,arguments)}}function so(t,e){var n=-1,i=t.length,a=i-1;for(e=e===r?i:e;++n<e;){var o=wi(n,a),s=t[o];t[o]=t[n],t[n]=s}return t.length=e,t}var uo=function(t){var e=ss(t,(function(t){return n.size===u&&n.clear(),t})),n=e.cache;return e}((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Dt,(function(t,n,r,i){e.push(r?i.replace(qt,"$1"):n||t)})),e}));function co(t){if("string"==typeof t||Bs(t))return t;var e=t+"";return"0"==e&&1/t==-O?"-0":e}function fo(t){if(null!=t){try{return ce.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function lo(t){if(t instanceof br)return t.clone();var e=new yr(t.__wrapped__,t.__chain__);return e.__actions__=na(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var ho=ki((function(t,e){return _s(t)?Fr(t,Hr(e,1,_s,!0)):[]})),po=ki((function(t,e){var n=ko(e);return _s(n)&&(n=r),_s(t)?Fr(t,Hr(e,1,_s,!0),Ba(n,2)):[]})),go=ki((function(t,e){var n=ko(e);return _s(n)&&(n=r),_s(t)?Fr(t,Hr(e,1,_s,!0),r,n):[]}));function yo(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Us(n);return i<0&&(i=Vn(r+i,0)),an(t,Ba(e,3),i)}function bo(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var a=i-1;return n!==r&&(a=Us(n),a=n<0?Vn(i+a,0):$n(a,i-1)),an(t,Ba(e,3),a,!0)}function mo(t){return(null==t?0:t.length)?Hr(t,1):[]}function vo(t){return t&&t.length?t[0]:r}var _o=ki((function(t){var e=Ze(t,Hi);return e.length&&e[0]===t[0]?ni(e):[]})),wo=ki((function(t){var e=ko(t),n=Ze(t,Hi);return e===ko(n)?e=r:n.pop(),n.length&&n[0]===t[0]?ni(n,Ba(e,2)):[]})),xo=ki((function(t){var e=ko(t),n=Ze(t,Hi);return(e="function"==typeof e?e:r)&&n.pop(),n.length&&n[0]===t[0]?ni(n,r,e):[]}));function ko(t){var e=null==t?0:t.length;return e?t[e-1]:r}var Eo=ki(Ao);function Ao(t,e){return t&&t.length&&e&&e.length?vi(t,e):t}var So=Da((function(t,e){var n=null==t?0:t.length,r=Nr(t,e);return _i(t,Ze(e,(function(t){return Va(t,n)?+t:t})).sort(Qi)),r}));function Mo(t){return null==t?t:Xn.call(t)}var To=ki((function(t){return Pi(Hr(t,1,_s,!0))})),Do=ki((function(t){var e=ko(t);return _s(e)&&(e=r),Pi(Hr(t,1,_s,!0),Ba(e,2))})),Co=ki((function(t){var e=ko(t);return e="function"==typeof e?e:r,Pi(Hr(t,1,_s,!0),r,e)}));function Oo(t){if(!t||!t.length)return[];var e=0;return t=We(t,(function(t){if(_s(t))return e=Vn(t.length,e),!0})),pn(e,(function(e){return Ze(t,fn(e))}))}function Ro(t,e){if(!t||!t.length)return[];var n=Oo(t);return null==e?n:Ze(n,(function(t){return Ye(e,r,t)}))}var No=ki((function(t,e){return _s(t)?Fr(t,e):[]})),Io=ki((function(t){return zi(We(t,_s))})),Bo=ki((function(t){var e=ko(t);return _s(e)&&(e=r),zi(We(t,_s),Ba(e,2))})),Lo=ki((function(t){var e=ko(t);return e="function"==typeof e?e:r,zi(We(t,_s),r,e)})),Po=ki(Oo);var Fo=ki((function(t){var e=t.length,n=e>1?t[e-1]:r;return n="function"==typeof n?(t.pop(),n):r,Ro(t,n)}));function qo(t){var e=dr(t);return e.__chain__=!0,e}function jo(t,e){return e(t)}var Uo=Da((function(t){var e=t.length,n=e?t[0]:0,i=this.__wrapped__,a=function(e){return Nr(e,t)};return!(e>1||this.__actions__.length)&&i instanceof br&&Va(n)?((i=i.slice(n,+n+(e?1:0))).__actions__.push({func:jo,args:[a],thisArg:r}),new yr(i,this.__chain__).thru((function(t){return e&&!t.length&&t.push(r),t}))):this.thru(a)}));var zo=ia((function(t,e,n){fe.call(t,n)?++t[n]:Rr(t,n,1)}));var Yo=la(yo),Ho=la(bo);function Vo(t,e){return(bs(t)?Ve:qr)(t,Ba(e,3))}function $o(t,e){return(bs(t)?$e:jr)(t,Ba(e,3))}var Go=ia((function(t,e,n){fe.call(t,n)?t[n].push(e):Rr(t,n,[e])}));var Wo=ki((function(t,e,n){var r=-1,i="function"==typeof e,a=vs(t)?Xt(t.length):[];return qr(t,(function(t){a[++r]=i?Ye(e,t,n):ri(t,e,n)})),a})),Ko=ia((function(t,e,n){Rr(t,n,e)}));function Xo(t,e){return(bs(t)?Ze:hi)(t,Ba(e,3))}var Zo=ia((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var Jo=ki((function(t,e){if(null==t)return[];var n=e.length;return n>1&&$a(t,e[0],e[1])?e=[]:n>2&&$a(e[0],e[1],e[2])&&(e=[e[0]]),bi(t,Hr(e,1),[])})),Qo=Ln||function(){return Oe.Date.now()};function ts(t,e,n){return e=n?r:e,e=t&&null==e?t.length:e,Ea(t,x,r,r,r,r,e)}function es(t,e){var n;if("function"!=typeof e)throw new ie(o);return t=Us(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=r),n}}var ns=ki((function(t,e,n){var r=g;if(n.length){var i=Sn(n,Ia(ns));r|=_}return Ea(t,r,e,n,i)})),rs=ki((function(t,e,n){var r=g|y;if(n.length){var i=Sn(n,Ia(rs));r|=_}return Ea(e,r,t,n,i)}));function is(t,e,n){var i,a,s,u,c,f,l=0,h=!1,d=!1,p=!0;if("function"!=typeof t)throw new ie(o);function g(e){var n=i,o=a;return i=a=r,l=e,u=t.apply(o,n)}function y(t){var n=t-f;return f===r||n>=e||n<0||d&&t-l>=s}function b(){var t=Qo();if(y(t))return m(t);c=ro(b,function(t){var n=e-(t-f);return d?$n(n,s-(t-l)):n}(t))}function m(t){return c=r,p&&i?g(t):(i=a=r,u)}function v(){var t=Qo(),n=y(t);if(i=arguments,a=this,f=t,n){if(c===r)return function(t){return l=t,c=ro(b,e),h?g(t):u}(f);if(d)return Ki(c),c=ro(b,e),g(f)}return c===r&&(c=ro(b,e)),u}return e=Ys(e)||0,Ms(n)&&(h=!!n.leading,s=(d="maxWait"in n)?Vn(Ys(n.maxWait)||0,e):s,p="trailing"in n?!!n.trailing:p),v.cancel=function(){c!==r&&Ki(c),l=0,i=f=a=c=r},v.flush=function(){return c===r?u:m(Qo())},v}var as=ki((function(t,e){return Pr(t,1,e)})),os=ki((function(t,e,n){return Pr(t,Ys(e)||0,n)}));function ss(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new ie(o);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=t.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ss.Cache||_r),n}function us(t){if("function"!=typeof t)throw new ie(o);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}ss.Cache=_r;var cs=Gi((function(t,e){var n=(e=1==e.length&&bs(e[0])?Ze(e[0],gn(Ba())):Ze(Hr(e,1),gn(Ba()))).length;return ki((function(r){for(var i=-1,a=$n(r.length,n);++i<a;)r[i]=e[i].call(this,r[i]);return Ye(t,this,r)}))})),fs=ki((function(t,e){var n=Sn(e,Ia(fs));return Ea(t,_,r,e,n)})),ls=ki((function(t,e){var n=Sn(e,Ia(ls));return Ea(t,w,r,e,n)})),hs=Da((function(t,e){return Ea(t,k,r,r,r,e)}));function ds(t,e){return t===e||t!=t&&e!=e}var ps=va(Qr),gs=va((function(t,e){return t>=e})),ys=ii(function(){return arguments}())?ii:function(t){return Ts(t)&&fe.call(t,"callee")&&!Be.call(t,"callee")},bs=Xt.isArray,ms=Pe?gn(Pe):function(t){return Ts(t)&&Jr(t)==ot};function vs(t){return null!=t&&Ss(t.length)&&!Es(t)}function _s(t){return Ts(t)&&vs(t)}var ws=Un||Yu,xs=Fe?gn(Fe):function(t){return Ts(t)&&Jr(t)==Y};function ks(t){if(!Ts(t))return!1;var e=Jr(t);return e==V||e==H||"string"==typeof t.message&&"string"==typeof t.name&&!Os(t)}function Es(t){if(!Ms(t))return!1;var e=Jr(t);return e==$||e==G||e==U||e==J}function As(t){return"number"==typeof t&&t==Us(t)}function Ss(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=R}function Ms(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Ts(t){return null!=t&&"object"==typeof t}var Ds=qe?gn(qe):function(t){return Ts(t)&&Ua(t)==W};function Cs(t){return"number"==typeof t||Ts(t)&&Jr(t)==K}function Os(t){if(!Ts(t)||Jr(t)!=Z)return!1;var e=Re(t);if(null===e)return!0;var n=fe.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ce.call(n)==pe}var Rs=je?gn(je):function(t){return Ts(t)&&Jr(t)==Q};var Ns=Ue?gn(Ue):function(t){return Ts(t)&&Ua(t)==tt};function Is(t){return"string"==typeof t||!bs(t)&&Ts(t)&&Jr(t)==et}function Bs(t){return"symbol"==typeof t||Ts(t)&&Jr(t)==nt}var Ls=ze?gn(ze):function(t){return Ts(t)&&Ss(t.length)&&!!Ee[Jr(t)]};var Ps=va(li),Fs=va((function(t,e){return t<=e}));function qs(t){if(!t)return[];if(vs(t))return Is(t)?Cn(t):na(t);if(ln&&t[ln])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[ln]());var e=Ua(t);return(e==W?En:e==tt?Mn:du)(t)}function js(t){return t?(t=Ys(t))===O||t===-O?(t<0?-1:1)*N:t==t?t:0:0===t?t:0}function Us(t){var e=js(t),n=e%1;return e==e?n?e-n:e:0}function zs(t){return t?Ir(Us(t),0,B):0}function Ys(t){if("number"==typeof t)return t;if(Bs(t))return I;if(Ms(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Ms(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Rt,"");var n=Yt.test(t);return n||Vt.test(t)?Te(t.slice(2),n?2:8):zt.test(t)?I:+t}function Hs(t){return ra(t,au(t))}function Vs(t){return null==t?"":Li(t)}var $s=aa((function(t,e){if(Xa(e)||vs(e))ra(e,iu(e),t);else for(var n in e)fe.call(e,n)&&Tr(t,n,e[n])})),Gs=aa((function(t,e){ra(e,au(e),t)})),Ws=aa((function(t,e,n,r){ra(e,au(e),t,r)})),Ks=aa((function(t,e,n,r){ra(e,iu(e),t,r)})),Xs=Da(Nr);var Zs=ki((function(t,e){t=ee(t);var n=-1,i=e.length,a=i>2?e[2]:r;for(a&&$a(e[0],e[1],a)&&(i=1);++n<i;)for(var o=e[n],s=au(o),u=-1,c=s.length;++u<c;){var f=s[u],l=t[f];(l===r||ds(l,se[f])&&!fe.call(t,f))&&(t[f]=o[f])}return t})),Js=ki((function(t){return t.push(r,Sa),Ye(su,r,t)}));function Qs(t,e,n){var i=null==t?r:Xr(t,e);return i===r?n:i}function tu(t,e){return null!=t&&za(t,e,ei)}var eu=pa((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=de.call(e)),t[e]=n}),Mu(Cu)),nu=pa((function(t,e,n){null!=e&&"function"!=typeof e.toString&&(e=de.call(e)),fe.call(t,e)?t[e].push(n):t[e]=[n]}),Ba),ru=ki(ri);function iu(t){return vs(t)?kr(t):ci(t)}function au(t){return vs(t)?kr(t,!0):fi(t)}var ou=aa((function(t,e,n){gi(t,e,n)})),su=aa((function(t,e,n,r){gi(t,e,n,r)})),uu=Da((function(t,e){var n={};if(null==t)return n;var r=!1;e=Ze(e,(function(e){return e=$i(e,t),r||(r=e.length>1),e})),ra(t,Oa(t),n),r&&(n=Br(n,f|l|h,Ma));for(var i=e.length;i--;)Fi(n,e[i]);return n}));var cu=Da((function(t,e){return null==t?{}:function(t,e){return mi(t,e,(function(e,n){return tu(t,n)}))}(t,e)}));function fu(t,e){if(null==t)return{};var n=Ze(Oa(t),(function(t){return[t]}));return e=Ba(e),mi(t,n,(function(t,n){return e(t,n[0])}))}var lu=ka(iu),hu=ka(au);function du(t){return null==t?[]:yn(t,iu(t))}var pu=ca((function(t,e,n){return e=e.toLowerCase(),t+(n?gu(e):e)}));function gu(t){return ku(Vs(t).toLowerCase())}function yu(t){return(t=Vs(t))&&t.replace(Gt,_n).replace(be,"")}var bu=ca((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),mu=ca((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),vu=ua("toLowerCase");var _u=ca((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var wu=ca((function(t,e,n){return t+(n?" ":"")+ku(e)}));var xu=ca((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),ku=ua("toUpperCase");function Eu(t,e,n){return t=Vs(t),(e=n?r:e)===r?function(t){return we.test(t)}(t)?function(t){return t.match(ve)||[]}(t):function(t){return t.match(Ft)||[]}(t):t.match(e)||[]}var Au=ki((function(t,e){try{return Ye(t,r,e)}catch(t){return ks(t)?t:new Jt(t)}})),Su=Da((function(t,e){return Ve(e,(function(e){e=co(e),Rr(t,e,ns(t[e],t))})),t}));function Mu(t){return function(){return t}}var Tu=ha(),Du=ha(!0);function Cu(t){return t}function Ou(t){return ui("function"==typeof t?t:Br(t,f))}var Ru=ki((function(t,e){return function(n){return ri(n,t,e)}})),Nu=ki((function(t,e){return function(n){return ri(t,n,e)}}));function Iu(t,e,n){var r=iu(e),i=Kr(e,r);null!=n||Ms(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Kr(e,iu(e)));var a=!(Ms(n)&&"chain"in n&&!n.chain),o=Es(t);return Ve(i,(function(n){var r=e[n];t[n]=r,o&&(t.prototype[n]=function(){var e=this.__chain__;if(a||e){var n=t(this.__wrapped__),i=n.__actions__=na(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,Je([this.value()],arguments))})})),t}function Bu(){}var Lu=ya(Ze),Pu=ya(Ge),Fu=ya(en);function qu(t){return Ga(t)?fn(co(t)):function(t){return function(e){return Xr(e,t)}}(t)}var ju=ma(),Uu=ma(!0);function zu(){return[]}function Yu(){return!1}var Hu=ga((function(t,e){return t+e}),0),Vu=wa("ceil"),$u=ga((function(t,e){return t/e}),1),Gu=wa("floor");var Wu,Ku=ga((function(t,e){return t*e}),1),Xu=wa("round"),Zu=ga((function(t,e){return t-e}),0);return dr.after=function(t,e){if("function"!=typeof e)throw new ie(o);return t=Us(t),function(){if(--t<1)return e.apply(this,arguments)}},dr.ary=ts,dr.assign=$s,dr.assignIn=Gs,dr.assignInWith=Ws,dr.assignWith=Ks,dr.at=Xs,dr.before=es,dr.bind=ns,dr.bindAll=Su,dr.bindKey=rs,dr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return bs(t)?t:[t]},dr.chain=qo,dr.chunk=function(t,e,n){e=(n?$a(t,e,n):e===r)?1:Vn(Us(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var a=0,o=0,s=Xt(Fn(i/e));a<i;)s[o++]=Ci(t,a,a+=e);return s},dr.compact=function(t){for(var e=-1,n=null==t?0:t.length,r=0,i=[];++e<n;){var a=t[e];a&&(i[r++]=a)}return i},dr.concat=function(){var t=arguments.length;if(!t)return[];for(var e=Xt(t-1),n=arguments[0],r=t;r--;)e[r-1]=arguments[r];return Je(bs(n)?na(n):[n],Hr(e,1))},dr.cond=function(t){var e=null==t?0:t.length,n=Ba();return t=e?Ze(t,(function(t){if("function"!=typeof t[1])throw new ie(o);return[n(t[0]),t[1]]})):[],ki((function(n){for(var r=-1;++r<e;){var i=t[r];if(Ye(i[0],this,n))return Ye(i[1],this,n)}}))},dr.conforms=function(t){return function(t){var e=iu(t);return function(n){return Lr(n,t,e)}}(Br(t,f))},dr.constant=Mu,dr.countBy=zo,dr.create=function(t,e){var n=pr(t);return null==e?n:Or(n,e)},dr.curry=function t(e,n,i){var a=Ea(e,m,r,r,r,r,r,n=i?r:n);return a.placeholder=t.placeholder,a},dr.curryRight=function t(e,n,i){var a=Ea(e,v,r,r,r,r,r,n=i?r:n);return a.placeholder=t.placeholder,a},dr.debounce=is,dr.defaults=Zs,dr.defaultsDeep=Js,dr.defer=as,dr.delay=os,dr.difference=ho,dr.differenceBy=po,dr.differenceWith=go,dr.drop=function(t,e,n){var i=null==t?0:t.length;return i?Ci(t,(e=n||e===r?1:Us(e))<0?0:e,i):[]},dr.dropRight=function(t,e,n){var i=null==t?0:t.length;return i?Ci(t,0,(e=i-(e=n||e===r?1:Us(e)))<0?0:e):[]},dr.dropRightWhile=function(t,e){return t&&t.length?ji(t,Ba(e,3),!0,!0):[]},dr.dropWhile=function(t,e){return t&&t.length?ji(t,Ba(e,3),!0):[]},dr.fill=function(t,e,n,i){var a=null==t?0:t.length;return a?(n&&"number"!=typeof n&&$a(t,e,n)&&(n=0,i=a),function(t,e,n,i){var a=t.length;for((n=Us(n))<0&&(n=-n>a?0:a+n),(i=i===r||i>a?a:Us(i))<0&&(i+=a),i=n>i?0:zs(i);n<i;)t[n++]=e;return t}(t,e,n,i)):[]},dr.filter=function(t,e){return(bs(t)?We:Yr)(t,Ba(e,3))},dr.flatMap=function(t,e){return Hr(Xo(t,e),1)},dr.flatMapDeep=function(t,e){return Hr(Xo(t,e),O)},dr.flatMapDepth=function(t,e,n){return n=n===r?1:Us(n),Hr(Xo(t,e),n)},dr.flatten=mo,dr.flattenDeep=function(t){return(null==t?0:t.length)?Hr(t,O):[]},dr.flattenDepth=function(t,e){return(null==t?0:t.length)?Hr(t,e=e===r?1:Us(e)):[]},dr.flip=function(t){return Ea(t,E)},dr.flow=Tu,dr.flowRight=Du,dr.fromPairs=function(t){for(var e=-1,n=null==t?0:t.length,r={};++e<n;){var i=t[e];r[i[0]]=i[1]}return r},dr.functions=function(t){return null==t?[]:Kr(t,iu(t))},dr.functionsIn=function(t){return null==t?[]:Kr(t,au(t))},dr.groupBy=Go,dr.initial=function(t){return(null==t?0:t.length)?Ci(t,0,-1):[]},dr.intersection=_o,dr.intersectionBy=wo,dr.intersectionWith=xo,dr.invert=eu,dr.invertBy=nu,dr.invokeMap=Wo,dr.iteratee=Ou,dr.keyBy=Ko,dr.keys=iu,dr.keysIn=au,dr.map=Xo,dr.mapKeys=function(t,e){var n={};return e=Ba(e,3),Gr(t,(function(t,r,i){Rr(n,e(t,r,i),t)})),n},dr.mapValues=function(t,e){var n={};return e=Ba(e,3),Gr(t,(function(t,r,i){Rr(n,r,e(t,r,i))})),n},dr.matches=function(t){return di(Br(t,f))},dr.matchesProperty=function(t,e){return pi(t,Br(e,f))},dr.memoize=ss,dr.merge=ou,dr.mergeWith=su,dr.method=Ru,dr.methodOf=Nu,dr.mixin=Iu,dr.negate=us,dr.nthArg=function(t){return t=Us(t),ki((function(e){return yi(e,t)}))},dr.omit=uu,dr.omitBy=function(t,e){return fu(t,us(Ba(e)))},dr.once=function(t){return es(2,t)},dr.orderBy=function(t,e,n,i){return null==t?[]:(bs(e)||(e=null==e?[]:[e]),bs(n=i?r:n)||(n=null==n?[]:[n]),bi(t,e,n))},dr.over=Lu,dr.overArgs=cs,dr.overEvery=Pu,dr.overSome=Fu,dr.partial=fs,dr.partialRight=ls,dr.partition=Zo,dr.pick=cu,dr.pickBy=fu,dr.property=qu,dr.propertyOf=function(t){return function(e){return null==t?r:Xr(t,e)}},dr.pull=Eo,dr.pullAll=Ao,dr.pullAllBy=function(t,e,n){return t&&t.length&&e&&e.length?vi(t,e,Ba(n,2)):t},dr.pullAllWith=function(t,e,n){return t&&t.length&&e&&e.length?vi(t,e,r,n):t},dr.pullAt=So,dr.range=ju,dr.rangeRight=Uu,dr.rearg=hs,dr.reject=function(t,e){return(bs(t)?We:Yr)(t,us(Ba(e,3)))},dr.remove=function(t,e){var n=[];if(!t||!t.length)return n;var r=-1,i=[],a=t.length;for(e=Ba(e,3);++r<a;){var o=t[r];e(o,r,t)&&(n.push(o),i.push(r))}return _i(t,i),n},dr.rest=function(t,e){if("function"!=typeof t)throw new ie(o);return ki(t,e=e===r?e:Us(e))},dr.reverse=Mo,dr.sampleSize=function(t,e,n){return e=(n?$a(t,e,n):e===r)?1:Us(e),(bs(t)?Ar:Ai)(t,e)},dr.set=function(t,e,n){return null==t?t:Si(t,e,n)},dr.setWith=function(t,e,n,i){return i="function"==typeof i?i:r,null==t?t:Si(t,e,n,i)},dr.shuffle=function(t){return(bs(t)?Sr:Di)(t)},dr.slice=function(t,e,n){var i=null==t?0:t.length;return i?(n&&"number"!=typeof n&&$a(t,e,n)?(e=0,n=i):(e=null==e?0:Us(e),n=n===r?i:Us(n)),Ci(t,e,n)):[]},dr.sortBy=Jo,dr.sortedUniq=function(t){return t&&t.length?Ii(t):[]},dr.sortedUniqBy=function(t,e){return t&&t.length?Ii(t,Ba(e,2)):[]},dr.split=function(t,e,n){return n&&"number"!=typeof n&&$a(t,e,n)&&(e=n=r),(n=n===r?B:n>>>0)?(t=Vs(t))&&("string"==typeof e||null!=e&&!Rs(e))&&!(e=Li(e))&&kn(t)?Wi(Cn(t),0,n):t.split(e,n):[]},dr.spread=function(t,e){if("function"!=typeof t)throw new ie(o);return e=null==e?0:Vn(Us(e),0),ki((function(n){var r=n[e],i=Wi(n,0,e);return r&&Je(i,r),Ye(t,this,i)}))},dr.tail=function(t){var e=null==t?0:t.length;return e?Ci(t,1,e):[]},dr.take=function(t,e,n){return t&&t.length?Ci(t,0,(e=n||e===r?1:Us(e))<0?0:e):[]},dr.takeRight=function(t,e,n){var i=null==t?0:t.length;return i?Ci(t,(e=i-(e=n||e===r?1:Us(e)))<0?0:e,i):[]},dr.takeRightWhile=function(t,e){return t&&t.length?ji(t,Ba(e,3),!1,!0):[]},dr.takeWhile=function(t,e){return t&&t.length?ji(t,Ba(e,3)):[]},dr.tap=function(t,e){return e(t),t},dr.throttle=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new ie(o);return Ms(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),is(t,e,{leading:r,maxWait:e,trailing:i})},dr.thru=jo,dr.toArray=qs,dr.toPairs=lu,dr.toPairsIn=hu,dr.toPath=function(t){return bs(t)?Ze(t,co):Bs(t)?[t]:na(uo(Vs(t)))},dr.toPlainObject=Hs,dr.transform=function(t,e,n){var r=bs(t),i=r||ws(t)||Ls(t);if(e=Ba(e,4),null==n){var a=t&&t.constructor;n=i?r?new a:[]:Ms(t)&&Es(a)?pr(Re(t)):{}}return(i?Ve:Gr)(t,(function(t,r,i){return e(n,t,r,i)})),n},dr.unary=function(t){return ts(t,1)},dr.union=To,dr.unionBy=Do,dr.unionWith=Co,dr.uniq=function(t){return t&&t.length?Pi(t):[]},dr.uniqBy=function(t,e){return t&&t.length?Pi(t,Ba(e,2)):[]},dr.uniqWith=function(t,e){return e="function"==typeof e?e:r,t&&t.length?Pi(t,r,e):[]},dr.unset=function(t,e){return null==t||Fi(t,e)},dr.unzip=Oo,dr.unzipWith=Ro,dr.update=function(t,e,n){return null==t?t:qi(t,e,Vi(n))},dr.updateWith=function(t,e,n,i){return i="function"==typeof i?i:r,null==t?t:qi(t,e,Vi(n),i)},dr.values=du,dr.valuesIn=function(t){return null==t?[]:yn(t,au(t))},dr.without=No,dr.words=Eu,dr.wrap=function(t,e){return fs(Vi(e),t)},dr.xor=Io,dr.xorBy=Bo,dr.xorWith=Lo,dr.zip=Po,dr.zipObject=function(t,e){return Yi(t||[],e||[],Tr)},dr.zipObjectDeep=function(t,e){return Yi(t||[],e||[],Si)},dr.zipWith=Fo,dr.entries=lu,dr.entriesIn=hu,dr.extend=Gs,dr.extendWith=Ws,Iu(dr,dr),dr.add=Hu,dr.attempt=Au,dr.camelCase=pu,dr.capitalize=gu,dr.ceil=Vu,dr.clamp=function(t,e,n){return n===r&&(n=e,e=r),n!==r&&(n=(n=Ys(n))==n?n:0),e!==r&&(e=(e=Ys(e))==e?e:0),Ir(Ys(t),e,n)},dr.clone=function(t){return Br(t,h)},dr.cloneDeep=function(t){return Br(t,f|h)},dr.cloneDeepWith=function(t,e){return Br(t,f|h,e="function"==typeof e?e:r)},dr.cloneWith=function(t,e){return Br(t,h,e="function"==typeof e?e:r)},dr.conformsTo=function(t,e){return null==e||Lr(t,e,iu(e))},dr.deburr=yu,dr.defaultTo=function(t,e){return null==t||t!=t?e:t},dr.divide=$u,dr.endsWith=function(t,e,n){t=Vs(t),e=Li(e);var i=t.length,a=n=n===r?i:Ir(Us(n),0,i);return(n-=e.length)>=0&&t.slice(n,a)==e},dr.eq=ds,dr.escape=function(t){return(t=Vs(t))&&kt.test(t)?t.replace(wt,wn):t},dr.escapeRegExp=function(t){return(t=Vs(t))&&Ot.test(t)?t.replace(Ct,"\\$&"):t},dr.every=function(t,e,n){var i=bs(t)?Ge:Ur;return n&&$a(t,e,n)&&(e=r),i(t,Ba(e,3))},dr.find=Yo,dr.findIndex=yo,dr.findKey=function(t,e){return rn(t,Ba(e,3),Gr)},dr.findLast=Ho,dr.findLastIndex=bo,dr.findLastKey=function(t,e){return rn(t,Ba(e,3),Wr)},dr.floor=Gu,dr.forEach=Vo,dr.forEachRight=$o,dr.forIn=function(t,e){return null==t?t:Vr(t,Ba(e,3),au)},dr.forInRight=function(t,e){return null==t?t:$r(t,Ba(e,3),au)},dr.forOwn=function(t,e){return t&&Gr(t,Ba(e,3))},dr.forOwnRight=function(t,e){return t&&Wr(t,Ba(e,3))},dr.get=Qs,dr.gt=ps,dr.gte=gs,dr.has=function(t,e){return null!=t&&za(t,e,ti)},dr.hasIn=tu,dr.head=vo,dr.identity=Cu,dr.includes=function(t,e,n,r){t=vs(t)?t:du(t),n=n&&!r?Us(n):0;var i=t.length;return n<0&&(n=Vn(i+n,0)),Is(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&on(t,e,n)>-1},dr.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Us(n);return i<0&&(i=Vn(r+i,0)),on(t,e,i)},dr.inRange=function(t,e,n){return e=js(e),n===r?(n=e,e=0):n=js(n),function(t,e,n){return t>=$n(e,n)&&t<Vn(e,n)}(t=Ys(t),e,n)},dr.invoke=ru,dr.isArguments=ys,dr.isArray=bs,dr.isArrayBuffer=ms,dr.isArrayLike=vs,dr.isArrayLikeObject=_s,dr.isBoolean=function(t){return!0===t||!1===t||Ts(t)&&Jr(t)==z},dr.isBuffer=ws,dr.isDate=xs,dr.isElement=function(t){return Ts(t)&&1===t.nodeType&&!Os(t)},dr.isEmpty=function(t){if(null==t)return!0;if(vs(t)&&(bs(t)||"string"==typeof t||"function"==typeof t.splice||ws(t)||Ls(t)||ys(t)))return!t.length;var e=Ua(t);if(e==W||e==tt)return!t.size;if(Xa(t))return!ci(t).length;for(var n in t)if(fe.call(t,n))return!1;return!0},dr.isEqual=function(t,e){return ai(t,e)},dr.isEqualWith=function(t,e,n){var i=(n="function"==typeof n?n:r)?n(t,e):r;return i===r?ai(t,e,r,n):!!i},dr.isError=ks,dr.isFinite=function(t){return"number"==typeof t&&zn(t)},dr.isFunction=Es,dr.isInteger=As,dr.isLength=Ss,dr.isMap=Ds,dr.isMatch=function(t,e){return t===e||oi(t,e,Pa(e))},dr.isMatchWith=function(t,e,n){return n="function"==typeof n?n:r,oi(t,e,Pa(e),n)},dr.isNaN=function(t){return Cs(t)&&t!=+t},dr.isNative=function(t){if(Ka(t))throw new Jt(a);return si(t)},dr.isNil=function(t){return null==t},dr.isNull=function(t){return null===t},dr.isNumber=Cs,dr.isObject=Ms,dr.isObjectLike=Ts,dr.isPlainObject=Os,dr.isRegExp=Rs,dr.isSafeInteger=function(t){return As(t)&&t>=-R&&t<=R},dr.isSet=Ns,dr.isString=Is,dr.isSymbol=Bs,dr.isTypedArray=Ls,dr.isUndefined=function(t){return t===r},dr.isWeakMap=function(t){return Ts(t)&&Ua(t)==it},dr.isWeakSet=function(t){return Ts(t)&&Jr(t)==at},dr.join=function(t,e){return null==t?"":Yn.call(t,e)},dr.kebabCase=bu,dr.last=ko,dr.lastIndexOf=function(t,e,n){var i=null==t?0:t.length;if(!i)return-1;var a=i;return n!==r&&(a=(a=Us(n))<0?Vn(i+a,0):$n(a,i-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,a):an(t,un,a,!0)},dr.lowerCase=mu,dr.lowerFirst=vu,dr.lt=Ps,dr.lte=Fs,dr.max=function(t){return t&&t.length?zr(t,Cu,Qr):r},dr.maxBy=function(t,e){return t&&t.length?zr(t,Ba(e,2),Qr):r},dr.mean=function(t){return cn(t,Cu)},dr.meanBy=function(t,e){return cn(t,Ba(e,2))},dr.min=function(t){return t&&t.length?zr(t,Cu,li):r},dr.minBy=function(t,e){return t&&t.length?zr(t,Ba(e,2),li):r},dr.stubArray=zu,dr.stubFalse=Yu,dr.stubObject=function(){return{}},dr.stubString=function(){return""},dr.stubTrue=function(){return!0},dr.multiply=Ku,dr.nth=function(t,e){return t&&t.length?yi(t,Us(e)):r},dr.noConflict=function(){return Oe._===this&&(Oe._=ge),this},dr.noop=Bu,dr.now=Qo,dr.pad=function(t,e,n){t=Vs(t);var r=(e=Us(e))?Dn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return ba(qn(i),n)+t+ba(Fn(i),n)},dr.padEnd=function(t,e,n){t=Vs(t);var r=(e=Us(e))?Dn(t):0;return e&&r<e?t+ba(e-r,n):t},dr.padStart=function(t,e,n){t=Vs(t);var r=(e=Us(e))?Dn(t):0;return e&&r<e?ba(e-r,n)+t:t},dr.parseInt=function(t,e,n){return n||null==e?e=0:e&&(e=+e),Wn(Vs(t).replace(Nt,""),e||0)},dr.random=function(t,e,n){if(n&&"boolean"!=typeof n&&$a(t,e,n)&&(e=n=r),n===r&&("boolean"==typeof e?(n=e,e=r):"boolean"==typeof t&&(n=t,t=r)),t===r&&e===r?(t=0,e=1):(t=js(t),e===r?(e=t,t=0):e=js(e)),t>e){var i=t;t=e,e=i}if(n||t%1||e%1){var a=Kn();return $n(t+a*(e-t+Me("1e-"+((a+"").length-1))),e)}return wi(t,e)},dr.reduce=function(t,e,n){var r=bs(t)?Qe:hn,i=arguments.length<3;return r(t,Ba(e,4),n,i,qr)},dr.reduceRight=function(t,e,n){var r=bs(t)?tn:hn,i=arguments.length<3;return r(t,Ba(e,4),n,i,jr)},dr.repeat=function(t,e,n){return e=(n?$a(t,e,n):e===r)?1:Us(e),xi(Vs(t),e)},dr.replace=function(){var t=arguments,e=Vs(t[0]);return t.length<3?e:e.replace(t[1],t[2])},dr.result=function(t,e,n){var i=-1,a=(e=$i(e,t)).length;for(a||(a=1,t=r);++i<a;){var o=null==t?r:t[co(e[i])];o===r&&(i=a,o=n),t=Es(o)?o.call(t):o}return t},dr.round=Xu,dr.runInContext=t,dr.sample=function(t){return(bs(t)?Er:Ei)(t)},dr.size=function(t){if(null==t)return 0;if(vs(t))return Is(t)?Dn(t):t.length;var e=Ua(t);return e==W||e==tt?t.size:ci(t).length},dr.snakeCase=_u,dr.some=function(t,e,n){var i=bs(t)?en:Oi;return n&&$a(t,e,n)&&(e=r),i(t,Ba(e,3))},dr.sortedIndex=function(t,e){return Ri(t,e)},dr.sortedIndexBy=function(t,e,n){return Ni(t,e,Ba(n,2))},dr.sortedIndexOf=function(t,e){var n=null==t?0:t.length;if(n){var r=Ri(t,e);if(r<n&&ds(t[r],e))return r}return-1},dr.sortedLastIndex=function(t,e){return Ri(t,e,!0)},dr.sortedLastIndexBy=function(t,e,n){return Ni(t,e,Ba(n,2),!0)},dr.sortedLastIndexOf=function(t,e){if(null==t?0:t.length){var n=Ri(t,e,!0)-1;if(ds(t[n],e))return n}return-1},dr.startCase=wu,dr.startsWith=function(t,e,n){return t=Vs(t),n=null==n?0:Ir(Us(n),0,t.length),e=Li(e),t.slice(n,n+e.length)==e},dr.subtract=Zu,dr.sum=function(t){return t&&t.length?dn(t,Cu):0},dr.sumBy=function(t,e){return t&&t.length?dn(t,Ba(e,2)):0},dr.template=function(t,e,n){var i=dr.templateSettings;n&&$a(t,e,n)&&(e=r),t=Vs(t),e=Ws({},e,i,Aa);var a,o,s=Ws({},e.imports,i.imports,Aa),u=iu(s),c=yn(s,u),f=0,l=e.interpolate||Wt,h="__p += '",d=ne((e.escape||Wt).source+"|"+l.source+"|"+(l===St?jt:Wt).source+"|"+(e.evaluate||Wt).source+"|$","g"),p="//# sourceURL="+(fe.call(e,"sourceURL")?(e.sourceURL+"").replace(/[\r\n]/g," "):"lodash.templateSources["+ ++ke+"]")+"\n";t.replace(d,(function(e,n,r,i,s,u){return r||(r=i),h+=t.slice(f,u).replace(Kt,xn),n&&(a=!0,h+="' +\n__e("+n+") +\n'"),s&&(o=!0,h+="';\n"+s+";\n__p += '"),r&&(h+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),f=u+e.length,e})),h+="';\n";var g=fe.call(e,"variable")&&e.variable;g||(h="with (obj) {\n"+h+"\n}\n"),h=(o?h.replace(bt,""):h).replace(mt,"$1").replace(vt,"$1;"),h="function("+(g||"obj")+") {\n"+(g?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(a?", __e = _.escape":"")+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+h+"return __p\n}";var y=Au((function(){return Qt(u,p+"return "+h).apply(r,c)}));if(y.source=h,ks(y))throw y;return y},dr.times=function(t,e){if((t=Us(t))<1||t>R)return[];var n=B,r=$n(t,B);e=Ba(e),t-=B;for(var i=pn(r,e);++n<t;)e(n);return i},dr.toFinite=js,dr.toInteger=Us,dr.toLength=zs,dr.toLower=function(t){return Vs(t).toLowerCase()},dr.toNumber=Ys,dr.toSafeInteger=function(t){return t?Ir(Us(t),-R,R):0===t?t:0},dr.toString=Vs,dr.toUpper=function(t){return Vs(t).toUpperCase()},dr.trim=function(t,e,n){if((t=Vs(t))&&(n||e===r))return t.replace(Rt,"");if(!t||!(e=Li(e)))return t;var i=Cn(t),a=Cn(e);return Wi(i,mn(i,a),vn(i,a)+1).join("")},dr.trimEnd=function(t,e,n){if((t=Vs(t))&&(n||e===r))return t.replace(It,"");if(!t||!(e=Li(e)))return t;var i=Cn(t);return Wi(i,0,vn(i,Cn(e))+1).join("")},dr.trimStart=function(t,e,n){if((t=Vs(t))&&(n||e===r))return t.replace(Nt,"");if(!t||!(e=Li(e)))return t;var i=Cn(t);return Wi(i,mn(i,Cn(e))).join("")},dr.truncate=function(t,e){var n=A,i=S;if(Ms(e)){var a="separator"in e?e.separator:a;n="length"in e?Us(e.length):n,i="omission"in e?Li(e.omission):i}var o=(t=Vs(t)).length;if(kn(t)){var s=Cn(t);o=s.length}if(n>=o)return t;var u=n-Dn(i);if(u<1)return i;var c=s?Wi(s,0,u).join(""):t.slice(0,u);if(a===r)return c+i;if(s&&(u+=c.length-u),Rs(a)){if(t.slice(u).search(a)){var f,l=c;for(a.global||(a=ne(a.source,Vs(Ut.exec(a))+"g")),a.lastIndex=0;f=a.exec(l);)var h=f.index;c=c.slice(0,h===r?u:h)}}else if(t.indexOf(Li(a),u)!=u){var d=c.lastIndexOf(a);d>-1&&(c=c.slice(0,d))}return c+i},dr.unescape=function(t){return(t=Vs(t))&&xt.test(t)?t.replace(_t,On):t},dr.uniqueId=function(t){var e=++le;return Vs(t)+e},dr.upperCase=xu,dr.upperFirst=ku,dr.each=Vo,dr.eachRight=$o,dr.first=vo,Iu(dr,(Wu={},Gr(dr,(function(t,e){fe.call(dr.prototype,e)||(Wu[e]=t)})),Wu),{chain:!1}),dr.VERSION="4.17.15",Ve(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){dr[t].placeholder=dr})),Ve(["drop","take"],(function(t,e){br.prototype[t]=function(n){n=n===r?1:Vn(Us(n),0);var i=this.__filtered__&&!e?new br(this):this.clone();return i.__filtered__?i.__takeCount__=$n(n,i.__takeCount__):i.__views__.push({size:$n(n,B),type:t+(i.__dir__<0?"Right":"")}),i},br.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Ve(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=n==D||3==n;br.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Ba(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Ve(["head","last"],(function(t,e){var n="take"+(e?"Right":"");br.prototype[t]=function(){return this[n](1).value()[0]}})),Ve(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");br.prototype[t]=function(){return this.__filtered__?new br(this):this[n](1)}})),br.prototype.compact=function(){return this.filter(Cu)},br.prototype.find=function(t){return this.filter(t).head()},br.prototype.findLast=function(t){return this.reverse().find(t)},br.prototype.invokeMap=ki((function(t,e){return"function"==typeof t?new br(this):this.map((function(n){return ri(n,t,e)}))})),br.prototype.reject=function(t){return this.filter(us(Ba(t)))},br.prototype.slice=function(t,e){t=Us(t);var n=this;return n.__filtered__&&(t>0||e<0)?new br(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==r&&(n=(e=Us(e))<0?n.dropRight(-e):n.take(e-t)),n)},br.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},br.prototype.toArray=function(){return this.take(B)},Gr(br.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),a=dr[i?"take"+("last"==e?"Right":""):e],o=i||/^find/.test(e);a&&(dr.prototype[e]=function(){var e=this.__wrapped__,s=i?[1]:arguments,u=e instanceof br,c=s[0],f=u||bs(e),l=function(t){var e=a.apply(dr,Je([t],s));return i&&h?e[0]:e};f&&n&&"function"==typeof c&&1!=c.length&&(u=f=!1);var h=this.__chain__,d=!!this.__actions__.length,p=o&&!h,g=u&&!d;if(!o&&f){e=g?e:new br(this);var y=t.apply(e,s);return y.__actions__.push({func:jo,args:[l],thisArg:r}),new yr(y,h)}return p&&g?t.apply(this,s):(y=this.thru(l),p?i?y.value()[0]:y.value():y)})})),Ve(["pop","push","shift","sort","splice","unshift"],(function(t){var e=ae[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);dr.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(bs(i)?i:[],t)}return this[n]((function(n){return e.apply(bs(n)?n:[],t)}))}})),Gr(br.prototype,(function(t,e){var n=dr[e];if(n){var r=n.name+"";fe.call(ir,r)||(ir[r]=[]),ir[r].push({name:e,func:n})}})),ir[da(r,y).name]=[{name:"wrapper",func:r}],br.prototype.clone=function(){var t=new br(this.__wrapped__);return t.__actions__=na(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=na(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=na(this.__views__),t},br.prototype.reverse=function(){if(this.__filtered__){var t=new br(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},br.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=bs(t),r=e<0,i=n?t.length:0,a=function(t,e,n){var r=-1,i=n.length;for(;++r<i;){var a=n[r],o=a.size;switch(a.type){case"drop":t+=o;break;case"dropRight":e-=o;break;case"take":e=$n(e,t+o);break;case"takeRight":t=Vn(t,e-o)}}return{start:t,end:e}}(0,i,this.__views__),o=a.start,s=a.end,u=s-o,c=r?s:o-1,f=this.__iteratees__,l=f.length,h=0,d=$n(u,this.__takeCount__);if(!n||!r&&i==u&&d==u)return Ui(t,this.__actions__);var p=[];t:for(;u--&&h<d;){for(var g=-1,y=t[c+=e];++g<l;){var b=f[g],m=b.iteratee,v=b.type,_=m(y);if(v==C)y=_;else if(!_){if(v==D)continue t;break t}}p[h++]=y}return p},dr.prototype.at=Uo,dr.prototype.chain=function(){return qo(this)},dr.prototype.commit=function(){return new yr(this.value(),this.__chain__)},dr.prototype.next=function(){this.__values__===r&&(this.__values__=qs(this.value()));var t=this.__index__>=this.__values__.length;return{done:t,value:t?r:this.__values__[this.__index__++]}},dr.prototype.plant=function(t){for(var e,n=this;n instanceof gr;){var i=lo(n);i.__index__=0,i.__values__=r,e?a.__wrapped__=i:e=i;var a=i;n=n.__wrapped__}return a.__wrapped__=t,e},dr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof br){var e=t;return this.__actions__.length&&(e=new br(this)),(e=e.reverse()).__actions__.push({func:jo,args:[Mo],thisArg:r}),new yr(e,this.__chain__)}return this.thru(Mo)},dr.prototype.toJSON=dr.prototype.valueOf=dr.prototype.value=function(){return Ui(this.__wrapped__,this.__actions__)},dr.prototype.first=dr.prototype.head,ln&&(dr.prototype[ln]=function(){return this}),dr}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Oe._=Rn,define((function(){return Rn}))):Ne?((Ne.exports=Rn)._=Rn,Re._=Rn):Oe._=Rn}).call(this)}).call(this,n(13),n(7)(t))},function(t,e,n){t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n.w={},n(n.s=25)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(2))&&r.__esModule?r:{default:r},a=/:/g;function o(t){return t?String(t).replace(a,"\\:"):""}e.default={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return o(t.v)+":"+o(t.w)+":"+o(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){var n=e.graph();if(i.default.isPlainObject(n)){var r=n.transition;if(i.default.isFunction(r))return r(t)}return t}}},function(t,e){t.exports=n(0)},function(t,e){t.exports=n(11)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=o(n(16)),i=o(n(15)),a=o(n(14));function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e,n){var o=e.label,s=t.append("g");"svg"===e.labelType?(0,a.default)(s,e):"string"!=typeof o||"html"===e.labelType?(0,i.default)(s,e):(0,r.default)(s,e);var u=s.node().getBBox(),c=void 0;switch(n){case"top":c=-e.height/2;break;case"bottom":c=e.height/2-u.height;break;default:c=-u.height/2}return s.attr("transform","translate("+-u.width/2+","+c+")"),s}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){var i=t.x,a=t.y,o=i-r.x,s=a-r.y,u=Math.sqrt(e*e*s*s+n*n*o*o),c=Math.abs(e*n*o/u);r.x<i&&(c=-c);var f=Math.abs(e*n*s/u);return r.y<a&&(f=-f),{x:i+c,y:a+f}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){var n=t.x,r=t.y,i=e.x-n,a=e.y-r,o=t.width/2,s=t.height/2,u=void 0,c=void 0;return Math.abs(a)*o>Math.abs(i)*s?(a<0&&(s=-s),u=0===a?0:s*i/a,c=s):(i<0&&(o=-o),u=o,c=0===i?0:o*a/i),{x:n+u,y:r+c}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(23))&&r.__esModule?r:{default:r};e.default=function(t,e,n){var r=t.x,a=t.y,o=[],s=Number.POSITIVE_INFINITY,u=Number.POSITIVE_INFINITY;e.forEach((function(t){s=Math.min(s,t.x),u=Math.min(u,t.y)}));for(var c=r-t.width/2-s,f=a-t.height/2-u,l=0;l<e.length;l+=1){var h=e[l],d=e[l<e.length-1?l+1:0],p=(0,i.default)(t,n,{x:c+h.x,y:f+h.y},{x:c+d.x,y:f+d.y});p&&o.push(p)}return o.length?(o.length>1&&o.sort((function(t,e){var r=t.x-n.x,i=t.y-n.y,a=Math.sqrt(r*r+i*i),o=e.x-n.x,s=e.y-n.y,u=Math.sqrt(o*o+s*s);return a<u?-1:a===u?0:1})),o[0]):(console.log("NO INTERSECTION FOUND, RETURN NODE CENTER",t),t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(4))&&r.__esModule?r:{default:r};e.default=function(t,e,n){return(0,i.default)(t,e,e,n)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return t.intersect(e)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};function a(t,e,n,r){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");i.default.applyStyle(a,n[r+"Style"]),n[r+"Class"]&&a.attr("class",n[r+"Class"])}e.default={normal:a,vee:function(t,e,n,r){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").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");i.default.applyStyle(a,n[r+"Style"]),n[r+"Class"]&&a.attr("class",n[r+"Class"])},undirected:function(t,e,n,r){var a=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");i.default.applyStyle(a,n[r+"Style"]),n[r+"Class"]&&a.attr("class",n[r+"Class"])},default:a}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=s(n(5)),i=s(n(4)),a=s(n(7)),o=s(n(6));function s(t){return t&&t.__esModule?t:{default:t}}e.default={rect:function(t,e,n){var i=t.insert("rect",":first-child").attr("rx",n.rx).attr("ry",n.ry).attr("x",-e.width/2).attr("y",-e.height/2).attr("width",e.width).attr("height",e.height);return n.intersect=function(t){return(0,r.default)(n,t)},i},ellipse:function(t,e,n){var r=e.width/2,a=e.height/2,o=t.insert("ellipse",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("rx",r).attr("ry",a);return n.intersect=function(t){return(0,i.default)(n,r,a,t)},o},circle:function(t,e,n){var r=Math.max(e.width,e.height)/2,i=t.insert("circle",":first-child").attr("x",-e.width/2).attr("y",-e.height/2).attr("r",r);return n.intersect=function(t){return(0,a.default)(n,r,t)},i},diamond:function(t,e,n){var r=e.width*Math.SQRT2/2,i=e.height*Math.SQRT2/2,a=[{x:0,y:-i},{x:-r,y:0},{x:0,y:i},{x:r,y:0}],s=t.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" "));return n.intersect=function(t){return(0,o.default)(n,a,t)},s}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(1)),i=s(n(2)),a=s(n(8)),o=s(n(0));function s(t){return t&&t.__esModule?t:{default:t}}function u(t,e){var n=r.line().x((function(t){return t.x})).y((function(t){return t.y}));return n.curve(t.curve),n(e)}e.default=function(t,e,n){var s=t.selectAll("g.edgePath").data(e.edges(),(function(t){return o.default.edgeToId(t)})).classed("update",!0);return function(t,e){var n=t.enter().append("g").attr("class","edgePath").style("opacity",0);n.append("path").attr("class","path").attr("d",(function(t){var n=e.edge(t),r=e.node(t.v).elem,a=i.default.range(n.points.length).map((function(){return e=(t=r).getBBox(),{x:(n=t.ownerSVGElement.getScreenCTM().inverse().multiply(t.getScreenCTM()).translate(e.width/2,e.height/2)).e,y:n.f};var t,e,n}));return u(n,a)})),n.append("defs")}(s,e),function(t,e){var n=t.exit();o.default.applyTransition(n,e).style("opacity",0).remove(),o.default.applyTransition(n.select("path.path"),e).attr("d",(function(t){var n=e.node(t.v);return n?u({},i.default.range(this.getTotalLength()).map((function(){return n}))):r.select(this).attr("d")}))}(s,e),s=t.selectAll("g.edgePath"),o.default.applyTransition(s,e).style("opacity",1),s.each((function(t){var n=r.select(this),i=e.edge(t);i.elem=this,i.id&&n.attr("id",i.id),o.default.applyClass(n,i.class,(n.classed("update")?"update ":"")+"edgePath")})),s.selectAll("path.path").each((function(t){var n=e.edge(t);n.arrowheadId=i.default.uniqueId("arrowhead");var s=r.select(this).attr("marker-end",(function(){return"url(#"+n.arrowheadId+")"})).style("fill","none");o.default.applyTransition(s,e).attr("d",(function(t){return function(t,e){var n=t.edge(e),r=t.node(e.v),i=t.node(e.w),o=n.points.slice(1,n.points.length-1);return o.unshift((0,a.default)(r,o[0])),o.push((0,a.default)(i,o[o.length-1])),u(n,o)}(e,t)})),o.default.applyStyle(s,n.style)})),s.selectAll("defs *").remove(),s.selectAll("defs").each((function(t){var i=e.edge(t);(0,n[i.arrowhead])(r.select(this),i.arrowheadId,i,"arrowhead")})),s}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(1)),i=s(n(2)),a=s(n(3)),o=s(n(0));function s(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){var n=t.selectAll("g.edgeLabel").data(e.edges(),(function(t){return o.default.edgeToId(t)})).classed("update",!0);return n.selectAll("*").remove(),n.enter().append("g").classed("edgeLabel",!0).style("opacity",0),(n=t.selectAll("g.edgeLabel")).each((function(t){var n=e.edge(t),o=(0,a.default)(r.select(this),e.edge(t),0,0).classed("label",!0),s=o.node().getBBox();n.labelId&&o.attr("id",n.labelId),i.default.has(n,"width")||(n.width=s.width),i.default.has(n,"height")||(n.height=s.height)})),o.default.applyTransition(n.exit(),e).style("opacity",0).remove(),n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(1)),i=o(n(0)),a=o(n(3));function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){var n=e.nodes().filter((function(t){return i.default.isSubgraph(e,t)})),o=t.selectAll("g.cluster").data(n,(function(t){return t}));return o.selectAll("*").remove(),o.enter().append("g").attr("class","cluster").attr("id",(function(t){return e.node(t).id})).style("opacity",0),o=t.selectAll("g.cluster"),i.default.applyTransition(o,e).style("opacity",1),o.each((function(t){var n=e.node(t),i=r.select(this);r.select(this).append("rect");var o=i.append("g").attr("class","label");(0,a.default)(o,n,n.clusterLabelPos)})),o.selectAll("rect").each((function(t){var n=e.node(t),a=r.select(this);i.default.applyStyle(a,n.style)})),i.default.applyTransition(o.exit(),e).style("opacity",0).remove(),o}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t,e){var n=t;return n.node().appendChild(e.label),i.default.applyStyle(n,e.labelStyle),n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t,e){var n=t.append("foreignObject").attr("width","100000"),r=n.append("xhtml:div");r.attr("xmlns","http://www.w3.org/1999/xhtml");var o=e.label;switch(void 0===o?"undefined":i(o)){case"function":r.insert(o);break;case"object":r.insert((function(){return o}));break;default:r.html(o)}a.default.applyStyle(r,e.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap");var s=r.node().getBoundingClientRect();return n.attr("width",s.width).attr("height",s.height),n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t,e){for(var n=t.append("text"),r=function(t){for(var e="",n=!1,r=null,i=0;i<t.length;i+=1)if(r=t[i],n){switch(r){case"n":e+="\n";break;default:e+=r}n=!1}else"\\"===r?n=!0:e+=r;return e}(e.label).split("\n"),a=0;a<r.length;a+=1)n.append("tspan").attr("xml:space","preserve").attr("dy","1em").attr("x","1").text(r[a]);return i.default.applyStyle(n,e.labelStyle),n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=s(n(2)),i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(1)),a=s(n(3)),o=s(n(0));function s(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e,n){var s=e.nodes().filter((function(t){return!o.default.isSubgraph(e,t)})),u=t.selectAll("g.node").data(s,(function(t){return t})).classed("update",!0);return u.selectAll("*").remove(),u.enter().append("g").attr("class","node").style("opacity",0),(u=t.selectAll("g.node")).each((function(t){var s=e.node(t),u=i.select(this);o.default.applyClass(u,s.class,(u.classed("update")?"update ":"")+"node");var c=u.append("g").attr("class","label"),f=(0,a.default)(c,s),l=n[s.shape],h=r.default.pick(f.node().getBBox(),"width","height");s.elem=this,s.id&&u.attr("id",s.id),s.labelId&&c.attr("id",s.labelId),r.default.has(s,"width")&&(h.width=s.width),r.default.has(s,"height")&&(h.height=s.height),h.width+=s.paddingLeft+s.paddingRight,h.height+=s.paddingTop+s.paddingBottom,c.attr("transform","translate("+(s.paddingLeft-s.paddingRight)/2+","+(s.paddingTop-s.paddingBottom)/2+")");var d=l(i.select(this),h,s);o.default.applyStyle(d,s.style);var p=d.node().getBBox();s.width=p.width,s.height=p.height})),o.default.applyTransition(u.exit(),e).style("opacity",0).remove(),u}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(1)),a=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t,e){var n=t.filter((function(){return!i.select(this).classed("update")}));function r(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}n.attr("transform",r),a.default.applyTransition(t,e).style("opacity",1).attr("transform",r),a.default.applyTransition(n.selectAll("rect"),e).attr("width",(function(t){return e.node(t).width})).attr("height",(function(t){return e.node(t).height})).attr("x",(function(t){return-e.node(t).width/2})).attr("y",(function(t){return-e.node(t).height/2}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(1)),i=o(n(2)),a=o(n(0));function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){function n(t){var n=e.edge(t);return i.default.has(n,"x")?"translate("+n.x+","+n.y+")":""}t.filter((function(){return!r.select(this).classed("update")})).attr("transform",n),a.default.applyTransition(t,e).style("opacity",1).attr("transform",n)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(1)),a=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t,e){function n(t){var n=e.node(t);return"translate("+n.x+","+n.y+")"}t.filter((function(){return!i.select(this).classed("update")})).attr("transform",n),a.default.applyTransition(t,e).style("opacity",1).attr("transform",n)}},function(t,e){t.exports=n(32)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=g(n(2)),i=g(n(21)),a=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(1)),o=g(n(20)),s=g(n(19)),u=g(n(18)),c=g(n(17)),f=g(n(13)),l=g(n(12)),h=g(n(11)),d=g(n(10)),p=g(n(9));function g(t){return t&&t.__esModule?t:{default:t}}var y={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},b={arrowhead:"normal",curve:a.curveLinear};function m(t,e){var n=t.select("g."+e);return n.empty()&&(n=t.append("g").attr("class",e)),n}e.default=function(){var t=c.default,e=f.default,n=l.default,a=h.default,g=d.default,v=p.default,_=function(c,f){!function(t){t.nodes().forEach((function(e){var n=t.node(e);r.default.has(n,"label")||t.children(e).length||(n.label=e),r.default.has(n,"paddingX")&&r.default.defaults(n,{paddingLeft:n.paddingX,paddingRight:n.paddingX}),r.default.has(n,"paddingY")&&r.default.defaults(n,{paddingTop:n.paddingY,paddingBottom:n.paddingY}),r.default.has(n,"padding")&&r.default.defaults(n,{paddingLeft:n.padding,paddingRight:n.padding,paddingTop:n.padding,paddingBottom:n.padding}),r.default.defaults(n,y),r.default.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(t){n[t]=Number(n[t])})),r.default.has(n,"width")&&(n._prevWidth=n.width),r.default.has(n,"height")&&(n._prevHeight=n.height)})),t.edges().forEach((function(e){var n=t.edge(e);r.default.has(n,"label")||(n.label=""),r.default.defaults(n,b)}))}(f),c.selectAll("*").remove();var l=m(c,"output"),h=m(l,"clusters"),d=m(l,"edgePaths"),p=n(m(l,"edgeLabels"),f),_=t(m(l,"nodes"),f,g);i.default.layout(f);var w=1e3,x=1e3,k=-1e3,E=-1e3,A=f;A.nodes().map((function(t){return A.node(t)})).forEach((function(t){w=Math.min(w,t.x-t.width/2),x=Math.min(x,t.y-t.height/2),k=Math.max(k,t.x+t.width/2),E=Math.max(E,t.y+t.height/2)})),A.edges().forEach((function(t){var e=A.edge(t);void 0!==e.label&&void 0!==e.x&&void 0!==e.y&&(w=Math.min(w,e.x-e.width/2),x=Math.min(x,e.y-e.height/2),k=Math.max(k,e.x+e.width/2),E=Math.max(E,e.y+e.height/2));for(var n=e.points.slice(1,e.points.length-1),r=0;r<n.length;r++){var i=n[r];w=Math.min(w,i.x),x=Math.min(x,i.y),k=Math.max(k,i.x),E=Math.max(E,i.y)}})),A.minX=w,A.minY=x,A.maxX=k,A.maxY=E,(0,o.default)(_,f),(0,s.default)(p,f),a(d,f,v);var S=e(h,f);(0,u.default)(S,f),function(t){r.default.each(t.nodes(),(function(e){var n=t.node(e);r.default.has(n,"_prevWidth")?n.width=n._prevWidth:delete n.width,r.default.has(n,"_prevHeight")?n.height=n._prevHeight:delete n.height,delete n._prevWidth,delete n._prevHeight}))}(f)};return _.createNodes=function(e){return arguments.length?(t=e,_):t},_.createClusters=function(t){return arguments.length?(e=t,_):e},_.createEdgeLabels=function(t){return arguments.length?(n=t,_):n},_.createEdgePaths=function(t){return arguments.length?(a=t,_):a},_.shapes=function(t){return arguments.length?(g=t,_):g},_.arrows=function(t){return arguments.length?(v=t,_):v},_}},function(t,e,n){"use strict";function r(t,e){return t*e>0}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,i){var a=e.y-t.y,o=t.x-e.x,s=e.x*t.y-t.x*e.y,u=a*n.x+o*n.y+s,c=a*i.x+o*i.y+s;if(0===u||0===c||!r(u,c)){var f=i.y-n.y,l=n.x-i.x,h=i.x*n.y-n.x*i.y,d=f*t.x+l*t.y+h,p=f*e.x+l*e.y+h;if(0===d||0===p||!r(d,p)){var g=a*l-f*o;if(0!==g){var y=Math.abs(g/2),b=o*h-l*s;return{x:b<0?(b-y)/g:(b+y)/g,y:(b=f*s-a*h)<0?(b-y)/g:(b+y)/g}}}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=u(n(8)),i=u(n(7)),a=u(n(4)),o=u(n(6)),s=u(n(5));function u(t){return t&&t.__esModule?t:{default:t}}e.default={node:r.default,circle:i.default,ellipse:a.default,polygon:o.default,rect:s.default}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=o(n(24)),i=o(n(22)),a=o(n(0));function o(t){return t&&t.__esModule?t:{default:t}}e.default={intersect:r.default,render:i.default,util:a.default}}])},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";var r=n(9),i=n(2);function a(t,e){return 55296==(64512&t.charCodeAt(e))&&(!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1)))}function o(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function s(t){return 1===t.length?"0"+t:t}function u(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}e.inherits=i,e.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),i=0;i<t.length;i+=2)n.push(parseInt(t[i]+t[i+1],16))}else for(var r=0,i=0;i<t.length;i++){var o=t.charCodeAt(i);o<128?n[r++]=o:o<2048?(n[r++]=o>>6|192,n[r++]=63&o|128):a(t,i)?(o=65536+((1023&o)<<10)+(1023&t.charCodeAt(++i)),n[r++]=o>>18|240,n[r++]=o>>12&63|128,n[r++]=o>>6&63|128,n[r++]=63&o|128):(n[r++]=o>>12|224,n[r++]=o>>6&63|128,n[r++]=63&o|128)}else for(i=0;i<t.length;i++)n[i]=0|t[i];return n},e.toHex=function(t){for(var e="",n=0;n<t.length;n++)e+=s(t[n].toString(16));return e},e.htonl=o,e.toHex32=function(t,e){for(var n="",r=0;r<t.length;r++){var i=t[r];"little"===e&&(i=o(i)),n+=u(i.toString(16))}return n},e.zero2=s,e.zero8=u,e.join32=function(t,e,n,i){var a=n-e;r(a%4==0);for(var o=new Array(a/4),s=0,u=e;s<o.length;s++,u+=4){var c;c="big"===i?t[u]<<24|t[u+1]<<16|t[u+2]<<8|t[u+3]:t[u+3]<<24|t[u+2]<<16|t[u+1]<<8|t[u],o[s]=c>>>0}return o},e.split32=function(t,e){for(var n=new Array(4*t.length),r=0,i=0;r<t.length;r++,i+=4){var a=t[r];"big"===e?(n[i]=a>>>24,n[i+1]=a>>>16&255,n[i+2]=a>>>8&255,n[i+3]=255&a):(n[i+3]=a>>>24,n[i+2]=a>>>16&255,n[i+1]=a>>>8&255,n[i]=255&a)}return n},e.rotr32=function(t,e){return t>>>e|t<<32-e},e.rotl32=function(t,e){return t<<e|t>>>32-e},e.sum32=function(t,e){return t+e>>>0},e.sum32_3=function(t,e,n){return t+e+n>>>0},e.sum32_4=function(t,e,n,r){return t+e+n+r>>>0},e.sum32_5=function(t,e,n,r,i){return t+e+n+r+i>>>0},e.sum64=function(t,e,n,r){var i=t[e],a=r+t[e+1]>>>0,o=(a<r?1:0)+n+i;t[e]=o>>>0,t[e+1]=a},e.sum64_hi=function(t,e,n,r){return(e+r>>>0<e?1:0)+t+n>>>0},e.sum64_lo=function(t,e,n,r){return e+r>>>0},e.sum64_4_hi=function(t,e,n,r,i,a,o,s){var u=0,c=e;return u+=(c=c+r>>>0)<e?1:0,u+=(c=c+a>>>0)<a?1:0,t+n+i+o+(u+=(c=c+s>>>0)<s?1:0)>>>0},e.sum64_4_lo=function(t,e,n,r,i,a,o,s){return e+r+a+s>>>0},e.sum64_5_hi=function(t,e,n,r,i,a,o,s,u,c){var f=0,l=e;return f+=(l=l+r>>>0)<e?1:0,f+=(l=l+a>>>0)<a?1:0,f+=(l=l+s>>>0)<s?1:0,t+n+i+o+u+(f+=(l=l+c>>>0)<c?1:0)>>>0},e.sum64_5_lo=function(t,e,n,r,i,a,o,s,u,c){return e+r+a+s+c>>>0},e.rotr64_hi=function(t,e,n){return(e<<32-n|t>>>n)>>>0},e.rotr64_lo=function(t,e,n){return(t<<32-n|e>>>n)>>>0},e.shr64_hi=function(t,e,n){return t>>>n},e.shr64_lo=function(t,e,n){return(t<<32-n|e>>>n)>>>0}},function(t,e,n){(function(t){t.exports=function(){"use strict";var e,r;function i(){return e.apply(null,arguments)}function a(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function o(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function s(t){return void 0===t}function u(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function c(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function f(t,e){var n,r=[];for(n=0;n<t.length;++n)r.push(e(t[n],n));return r}function l(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function h(t,e){for(var n in e)l(e,n)&&(t[n]=e[n]);return l(e,"toString")&&(t.toString=e.toString),l(e,"valueOf")&&(t.valueOf=e.valueOf),t}function d(t,e,n,r){return Me(t,e,n,r,!0).utc()}function p(t){return null==t._pf&&(t._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}),t._pf}function g(t){if(null==t._isValid){var e=p(t),n=r.call(e.parsedDateParts,(function(t){return null!=t})),i=!isNaN(t._d.getTime())&&e.overflow<0&&!e.empty&&!e.invalidMonth&&!e.invalidWeekday&&!e.weekdayMismatch&&!e.nullInput&&!e.invalidFormat&&!e.userInvalidated&&(!e.meridiem||e.meridiem&&n);if(t._strict&&(i=i&&0===e.charsLeftOver&&0===e.unusedTokens.length&&void 0===e.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return i;t._isValid=i}return t._isValid}function y(t){var e=d(NaN);return null!=t?h(p(e),t):p(e).userInvalidated=!0,e}r=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),n=e.length>>>0,r=0;r<n;r++)if(r in e&&t.call(this,e[r],r,e))return!0;return!1};var b=i.momentProperties=[];function m(t,e){var n,r,i;if(s(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),s(e._i)||(t._i=e._i),s(e._f)||(t._f=e._f),s(e._l)||(t._l=e._l),s(e._strict)||(t._strict=e._strict),s(e._tzm)||(t._tzm=e._tzm),s(e._isUTC)||(t._isUTC=e._isUTC),s(e._offset)||(t._offset=e._offset),s(e._pf)||(t._pf=p(e)),s(e._locale)||(t._locale=e._locale),0<b.length)for(n=0;n<b.length;n++)s(i=e[r=b[n]])||(t[r]=i);return t}var v=!1;function _(t){m(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,i.updateOffset(this),v=!1)}function w(t){return t instanceof _||null!=t&&null!=t._isAMomentObject}function x(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function k(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=x(e)),n}function E(t,e,n){var r,i=Math.min(t.length,e.length),a=Math.abs(t.length-e.length),o=0;for(r=0;r<i;r++)(n&&t[r]!==e[r]||!n&&k(t[r])!==k(e[r]))&&o++;return o+a}function A(t){!1===i.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function S(t,e){var n=!0;return h((function(){if(null!=i.deprecationHandler&&i.deprecationHandler(null,t),n){for(var r,a=[],o=0;o<arguments.length;o++){if(r="","object"==typeof arguments[o]){for(var s in r+="\n["+o+"] ",arguments[0])r+=s+": "+arguments[0][s]+", ";r=r.slice(0,-2)}else r=arguments[o];a.push(r)}A(t+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)}),e)}var M,T={};function D(t,e){null!=i.deprecationHandler&&i.deprecationHandler(t,e),T[t]||(A(e),T[t]=!0)}function C(t){return t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function O(t,e){var n,r=h({},t);for(n in e)l(e,n)&&(o(t[n])&&o(e[n])?(r[n]={},h(r[n],t[n]),h(r[n],e[n])):null!=e[n]?r[n]=e[n]:delete r[n]);for(n in t)l(t,n)&&!l(e,n)&&o(t[n])&&(r[n]=h({},r[n]));return r}function R(t){null!=t&&this.set(t)}i.suppressDeprecationWarnings=!1,i.deprecationHandler=null,M=Object.keys?Object.keys:function(t){var e,n=[];for(e in t)l(t,e)&&n.push(e);return n};var N={};function I(t,e){var n=t.toLowerCase();N[n]=N[n+"s"]=N[e]=t}function B(t){return"string"==typeof t?N[t]||N[t.toLowerCase()]:void 0}function L(t){var e,n,r={};for(n in t)l(t,n)&&(e=B(n))&&(r[e]=t[n]);return r}var P={};function F(t,e){P[t]=e}function q(t,e,n){var r=""+Math.abs(t),i=e-r.length;return(0<=t?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var j=/(\[[^\[]*\])|(\\)?([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,U=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,z={},Y={};function H(t,e,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),t&&(Y[t]=i),e&&(Y[e[0]]=function(){return q(i.apply(this,arguments),e[1],e[2])}),n&&(Y[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),t)})}function V(t,e){return t.isValid()?(e=$(e,t.localeData()),z[e]=z[e]||function(t){var e,n,r,i=t.match(j);for(e=0,n=i.length;e<n;e++)Y[i[e]]?i[e]=Y[i[e]]:i[e]=(r=i[e]).match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"");return function(e){var r,a="";for(r=0;r<n;r++)a+=C(i[r])?i[r].call(e,t):i[r];return a}}(e),z[e](t)):t.localeData().invalidDate()}function $(t,e){var n=5;function r(t){return e.longDateFormat(t)||t}for(U.lastIndex=0;0<=n&&U.test(t);)t=t.replace(U,r),U.lastIndex=0,n-=1;return t}var G=/\d/,W=/\d\d/,K=/\d{3}/,X=/\d{4}/,Z=/[+-]?\d{6}/,J=/\d\d?/,Q=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,rt=/[+-]?\d{1,6}/,it=/\d+/,at=/[+-]?\d+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,ut=/[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,ct={};function ft(t,e,n){ct[t]=C(e)?e:function(t,r){return t&&n?n:e}}function lt(t,e){return l(ct,t)?ct[t](e._strict,e._locale):new RegExp(ht(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,r,i){return e||n||r||i}))))}function ht(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var dt={};function pt(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),u(e)&&(r=function(t,n){n[e]=k(t)}),n=0;n<t.length;n++)dt[t[n]]=r}function gt(t,e){pt(t,(function(t,n,r,i){r._w=r._w||{},e(t,r._w,r,i)}))}var yt=0,bt=1,mt=2,vt=3,_t=4,wt=5,xt=6,kt=7,Et=8;function At(t){return St(t)?366:365}function St(t){return t%4==0&&t%100!=0||t%400==0}H("Y",0,0,(function(){var t=this.year();return t<=9999?""+t:"+"+t})),H(0,["YY",2],0,(function(){return this.year()%100})),H(0,["YYYY",4],0,"year"),H(0,["YYYYY",5],0,"year"),H(0,["YYYYYY",6,!0],0,"year"),I("year","y"),F("year",1),ft("Y",at),ft("YY",J,W),ft("YYYY",nt,X),ft("YYYYY",rt,Z),ft("YYYYYY",rt,Z),pt(["YYYYY","YYYYYY"],yt),pt("YYYY",(function(t,e){e[yt]=2===t.length?i.parseTwoDigitYear(t):k(t)})),pt("YY",(function(t,e){e[yt]=i.parseTwoDigitYear(t)})),pt("Y",(function(t,e){e[yt]=parseInt(t,10)})),i.parseTwoDigitYear=function(t){return k(t)+(68<k(t)?1900:2e3)};var Mt,Tt=Dt("FullYear",!0);function Dt(t,e){return function(n){return null!=n?(Ot(this,t,n),i.updateOffset(this,e),this):Ct(this,t)}}function Ct(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Ot(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&St(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),Rt(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function Rt(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?St(t)?29:28:31-n%7%2}Mt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e<this.length;++e)if(this[e]===t)return e;return-1},H("M",["MM",2],"Mo",(function(){return this.month()+1})),H("MMM",0,0,(function(t){return this.localeData().monthsShort(this,t)})),H("MMMM",0,0,(function(t){return this.localeData().months(this,t)})),I("month","M"),F("month",8),ft("M",J),ft("MM",J,W),ft("MMM",(function(t,e){return e.monthsShortRegex(t)})),ft("MMMM",(function(t,e){return e.monthsRegex(t)})),pt(["M","MM"],(function(t,e){e[bt]=k(t)-1})),pt(["MMM","MMMM"],(function(t,e,n,r){var i=n._locale.monthsParse(t,r,n._strict);null!=i?e[bt]=i:p(n).invalidMonth=t}));var Nt=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,It="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Bt="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Lt(t,e){var n;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=k(e);else if(!u(e=t.localeData().monthsParse(e)))return t;return n=Math.min(t.date(),Rt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t}function Pt(t){return null!=t?(Lt(this,t),i.updateOffset(this,!0),this):Ct(this,"Month")}var Ft=ut,qt=ut;function jt(){function t(t,e){return e.length-t.length}var e,n,r=[],i=[],a=[];for(e=0;e<12;e++)n=d([2e3,e]),r.push(this.monthsShort(n,"")),i.push(this.months(n,"")),a.push(this.months(n,"")),a.push(this.monthsShort(n,""));for(r.sort(t),i.sort(t),a.sort(t),e=0;e<12;e++)r[e]=ht(r[e]),i[e]=ht(i[e]);for(e=0;e<24;e++)a[e]=ht(a[e]);this._monthsRegex=new RegExp("^("+a.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+r.join("|")+")","i")}function Ut(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&0<=t&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function zt(t,e,n){var r=7+e-n;return-(7+Ut(t,0,r).getUTCDay()-e)%7+r-1}function Yt(t,e,n,r,i){var a,o,s=1+7*(e-1)+(7+n-r)%7+zt(t,r,i);return s<=0?o=At(a=t-1)+s:s>At(t)?(a=t+1,o=s-At(t)):(a=t,o=s),{year:a,dayOfYear:o}}function Ht(t,e,n){var r,i,a=zt(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?r=o+Vt(i=t.year()-1,e,n):o>Vt(t.year(),e,n)?(r=o-Vt(t.year(),e,n),i=t.year()+1):(i=t.year(),r=o),{week:r,year:i}}function Vt(t,e,n){var r=zt(t,e,n),i=zt(t+1,e,n);return(At(t)-r+i)/7}H("w",["ww",2],"wo","week"),H("W",["WW",2],"Wo","isoWeek"),I("week","w"),I("isoWeek","W"),F("week",5),F("isoWeek",5),ft("w",J),ft("ww",J,W),ft("W",J),ft("WW",J,W),gt(["w","ww","W","WW"],(function(t,e,n,r){e[r.substr(0,1)]=k(t)})),H("d",0,"do","day"),H("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),H("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),H("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),H("e",0,0,"weekday"),H("E",0,0,"isoWeekday"),I("day","d"),I("weekday","e"),I("isoWeekday","E"),F("day",11),F("weekday",11),F("isoWeekday",11),ft("d",J),ft("e",J),ft("E",J),ft("dd",(function(t,e){return e.weekdaysMinRegex(t)})),ft("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),ft("dddd",(function(t,e){return e.weekdaysRegex(t)})),gt(["dd","ddd","dddd"],(function(t,e,n,r){var i=n._locale.weekdaysParse(t,r,n._strict);null!=i?e.d=i:p(n).invalidWeekday=t})),gt(["d","e","E"],(function(t,e,n,r){e[r]=k(t)}));var $t="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Gt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Wt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Kt=ut,Xt=ut,Zt=ut;function Jt(){function t(t,e){return e.length-t.length}var e,n,r,i,a,o=[],s=[],u=[],c=[];for(e=0;e<7;e++)n=d([2e3,1]).day(e),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),u.push(a),c.push(r),c.push(i),c.push(a);for(o.sort(t),s.sort(t),u.sort(t),c.sort(t),e=0;e<7;e++)s[e]=ht(s[e]),u[e]=ht(u[e]),c[e]=ht(c[e]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Qt(){return this.hours()%12||12}function te(t,e){H(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function ee(t,e){return e._meridiemParse}H("H",["HH",2],0,"hour"),H("h",["hh",2],0,Qt),H("k",["kk",2],0,(function(){return this.hours()||24})),H("hmm",0,0,(function(){return""+Qt.apply(this)+q(this.minutes(),2)})),H("hmmss",0,0,(function(){return""+Qt.apply(this)+q(this.minutes(),2)+q(this.seconds(),2)})),H("Hmm",0,0,(function(){return""+this.hours()+q(this.minutes(),2)})),H("Hmmss",0,0,(function(){return""+this.hours()+q(this.minutes(),2)+q(this.seconds(),2)})),te("a",!0),te("A",!1),I("hour","h"),F("hour",13),ft("a",ee),ft("A",ee),ft("H",J),ft("h",J),ft("k",J),ft("HH",J,W),ft("hh",J,W),ft("kk",J,W),ft("hmm",Q),ft("hmmss",tt),ft("Hmm",Q),ft("Hmmss",tt),pt(["H","HH"],vt),pt(["k","kk"],(function(t,e,n){var r=k(t);e[vt]=24===r?0:r})),pt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),pt(["h","hh"],(function(t,e,n){e[vt]=k(t),p(n).bigHour=!0})),pt("hmm",(function(t,e,n){var r=t.length-2;e[vt]=k(t.substr(0,r)),e[_t]=k(t.substr(r)),p(n).bigHour=!0})),pt("hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[vt]=k(t.substr(0,r)),e[_t]=k(t.substr(r,2)),e[wt]=k(t.substr(i)),p(n).bigHour=!0})),pt("Hmm",(function(t,e,n){var r=t.length-2;e[vt]=k(t.substr(0,r)),e[_t]=k(t.substr(r))})),pt("Hmmss",(function(t,e,n){var r=t.length-4,i=t.length-2;e[vt]=k(t.substr(0,r)),e[_t]=k(t.substr(r,2)),e[wt]=k(t.substr(i))}));var ne,re=Dt("Hours",!0),ie={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:It,monthsShort:Bt,week:{dow:0,doy:6},weekdays:$t,weekdaysMin:Wt,weekdaysShort:Gt,meridiemParse:/[ap]\.?m?\.?/i},ae={},oe={};function se(t){return t?t.toLowerCase().replace("_","-"):t}function ue(e){var r=null;if(!ae[e]&&void 0!==t&&t&&t.exports)try{r=ne._abbr,n(111)("./"+e),ce(r)}catch(e){}return ae[e]}function ce(t,e){var n;return t&&((n=s(e)?le(t):fe(t,e))?ne=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),ne._abbr}function fe(t,e){if(null!==e){var n,r=ie;if(e.abbr=t,null!=ae[t])D("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."),r=ae[t]._config;else if(null!=e.parentLocale)if(null!=ae[e.parentLocale])r=ae[e.parentLocale]._config;else{if(null==(n=ue(e.parentLocale)))return oe[e.parentLocale]||(oe[e.parentLocale]=[]),oe[e.parentLocale].push({name:t,config:e}),null;r=n._config}return ae[t]=new R(O(r,e)),oe[t]&&oe[t].forEach((function(t){fe(t.name,t.config)})),ce(t),ae[t]}return delete ae[t],null}function le(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return ne;if(!a(t)){if(e=ue(t))return e;t=[t]}return function(t){for(var e,n,r,i,a=0;a<t.length;){for(e=(i=se(t[a]).split("-")).length,n=(n=se(t[a+1]))?n.split("-"):null;0<e;){if(r=ue(i.slice(0,e).join("-")))return r;if(n&&n.length>=e&&E(i,n,!0)>=e-1)break;e--}a++}return ne}(t)}function he(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[bt]<0||11<n[bt]?bt:n[mt]<1||n[mt]>Rt(n[yt],n[bt])?mt:n[vt]<0||24<n[vt]||24===n[vt]&&(0!==n[_t]||0!==n[wt]||0!==n[xt])?vt:n[_t]<0||59<n[_t]?_t:n[wt]<0||59<n[wt]?wt:n[xt]<0||999<n[xt]?xt:-1,p(t)._overflowDayOfYear&&(e<yt||mt<e)&&(e=mt),p(t)._overflowWeeks&&-1===e&&(e=kt),p(t)._overflowWeekday&&-1===e&&(e=Et),p(t).overflow=e),t}function de(t,e,n){return null!=t?t:null!=e?e:n}function pe(t){var e,n,r,a,o,s=[];if(!t._d){var u,c;for(u=t,c=new Date(i.now()),r=u._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()],t._w&&null==t._a[mt]&&null==t._a[bt]&&function(t){var e,n,r,i,a,o,s,u;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)a=1,o=4,n=de(e.GG,t._a[yt],Ht(Te(),1,4).year),r=de(e.W,1),((i=de(e.E,1))<1||7<i)&&(u=!0);else{a=t._locale._week.dow,o=t._locale._week.doy;var c=Ht(Te(),a,o);n=de(e.gg,t._a[yt],c.year),r=de(e.w,c.week),null!=e.d?((i=e.d)<0||6<i)&&(u=!0):null!=e.e?(i=e.e+a,(e.e<0||6<e.e)&&(u=!0)):i=a}r<1||r>Vt(n,a,o)?p(t)._overflowWeeks=!0:null!=u?p(t)._overflowWeekday=!0:(s=Yt(n,r,i,a,o),t._a[yt]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=de(t._a[yt],r[yt]),(t._dayOfYear>At(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Ut(o,0,t._dayOfYear),t._a[bt]=n.getUTCMonth(),t._a[mt]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=r[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[vt]&&0===t._a[_t]&&0===t._a[wt]&&0===t._a[xt]&&(t._nextDay=!0,t._a[vt]=0),t._d=(t._useUTC?Ut:function(t,e,n,r,i,a,o){var s=new Date(t,e,n,r,i,a,o);return t<100&&0<=t&&isFinite(s.getFullYear())&&s.setFullYear(t),s}).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[vt]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(p(t).weekdayMismatch=!0)}}var ge=/^\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)?)?$/,ye=/^\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)?)?$/,be=/Z|[+-]\d\d(?::?\d\d)?/,me=[["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}/]],ve=[["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/]],_e=/^\/?Date\((\-?\d+)/i;function we(t){var e,n,r,i,a,o,s=t._i,u=ge.exec(s)||ye.exec(s);if(u){for(p(t).iso=!0,e=0,n=me.length;e<n;e++)if(me[e][1].exec(u[1])){i=me[e][0],r=!1!==me[e][2];break}if(null==i)return void(t._isValid=!1);if(u[3]){for(e=0,n=ve.length;e<n;e++)if(ve[e][1].exec(u[3])){a=(u[2]||" ")+ve[e][0];break}if(null==a)return void(t._isValid=!1)}if(!r&&null!=a)return void(t._isValid=!1);if(u[4]){if(!be.exec(u[4]))return void(t._isValid=!1);o="Z"}t._f=i+(a||"")+(o||""),Ae(t)}else t._isValid=!1}var xe=/^(?:(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}))$/,ke={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ee(t){var e,n,r,i=xe.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(i){var a=function(t,e,n,r,i,a){var o=[function(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}(t),Bt.indexOf(e),parseInt(n,10),parseInt(r,10),parseInt(i,10)];return a&&o.push(parseInt(a,10)),o}(i[4],i[3],i[2],i[5],i[6],i[7]);if(n=a,r=t,(e=i[1])&&Gt.indexOf(e)!==new Date(n[0],n[1],n[2]).getDay()&&(p(r).weekdayMismatch=!0,!(r._isValid=!1)))return;t._a=a,t._tzm=function(t,e,n){if(t)return ke[t];if(e)return 0;var r=parseInt(n,10),i=r%100;return(r-i)/100*60+i}(i[8],i[9],i[10]),t._d=Ut.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),p(t).rfc2822=!0}else t._isValid=!1}function Ae(t){if(t._f!==i.ISO_8601)if(t._f!==i.RFC_2822){t._a=[],p(t).empty=!0;var e,n,r,a,o,s,u,c,f=""+t._i,h=f.length,d=0;for(r=$(t._f,t._locale).match(j)||[],e=0;e<r.length;e++)a=r[e],(n=(f.match(lt(a,t))||[])[0])&&(0<(o=f.substr(0,f.indexOf(n))).length&&p(t).unusedInput.push(o),f=f.slice(f.indexOf(n)+n.length),d+=n.length),Y[a]?(n?p(t).empty=!1:p(t).unusedTokens.push(a),s=a,c=t,null!=(u=n)&&l(dt,s)&&dt[s](u,c._a,c,s)):t._strict&&!n&&p(t).unusedTokens.push(a);p(t).charsLeftOver=h-d,0<f.length&&p(t).unusedInput.push(f),t._a[vt]<=12&&!0===p(t).bigHour&&0<t._a[vt]&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[vt]=function(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):(null!=t.isPM&&((r=t.isPM(n))&&e<12&&(e+=12),r||12!==e||(e=0)),e)}(t._locale,t._a[vt],t._meridiem),pe(t),he(t)}else Ee(t);else we(t)}function Se(t){var e,n,r,l,d=t._i,b=t._f;return t._locale=t._locale||le(t._l),null===d||void 0===b&&""===d?y({nullInput:!0}):("string"==typeof d&&(t._i=d=t._locale.preparse(d)),w(d)?new _(he(d)):(c(d)?t._d=d:a(b)?function(t){var e,n,r,i,a;if(0===t._f.length)return p(t).invalidFormat=!0,t._d=new Date(NaN);for(i=0;i<t._f.length;i++)a=0,e=m({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[i],Ae(e),g(e)&&(a+=p(e).charsLeftOver,a+=10*p(e).unusedTokens.length,p(e).score=a,(null==r||a<r)&&(r=a,n=e));h(t,n||e)}(t):b?Ae(t):s(n=(e=t)._i)?e._d=new Date(i.now()):c(n)?e._d=new Date(n.valueOf()):"string"==typeof n?(r=e,null===(l=_e.exec(r._i))?(we(r),!1===r._isValid&&(delete r._isValid,Ee(r),!1===r._isValid&&(delete r._isValid,i.createFromInputFallback(r)))):r._d=new Date(+l[1])):a(n)?(e._a=f(n.slice(0),(function(t){return parseInt(t,10)})),pe(e)):o(n)?function(t){if(!t._d){var e=L(t._i);t._a=f([e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],(function(t){return t&&parseInt(t,10)})),pe(t)}}(e):u(n)?e._d=new Date(n):i.createFromInputFallback(e),g(t)||(t._d=null),t))}function Me(t,e,n,r,i){var s,u={};return!0!==n&&!1!==n||(r=n,n=void 0),(o(t)&&function(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(t.hasOwnProperty(e))return!1;return!0}(t)||a(t)&&0===t.length)&&(t=void 0),u._isAMomentObject=!0,u._useUTC=u._isUTC=i,u._l=n,u._i=t,u._f=e,u._strict=r,(s=new _(he(Se(u))))._nextDay&&(s.add(1,"d"),s._nextDay=void 0),s}function Te(t,e,n,r){return Me(t,e,n,r,!1)}i.createFromInputFallback=S("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))})),i.ISO_8601=function(){},i.RFC_2822=function(){};var De=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Te.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:y()})),Ce=S("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var t=Te.apply(null,arguments);return this.isValid()&&t.isValid()?this<t?this:t:y()}));function Oe(t,e){var n,r;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return Te();for(n=e[0],r=1;r<e.length;++r)e[r].isValid()&&!e[r][t](n)||(n=e[r]);return n}var Re=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ne(t){var e=L(t),n=e.year||0,r=e.quarter||0,i=e.month||0,a=e.week||0,o=e.day||0,s=e.hour||0,u=e.minute||0,c=e.second||0,f=e.millisecond||0;this._isValid=function(t){for(var e in t)if(-1===Mt.call(Re,e)||null!=t[e]&&isNaN(t[e]))return!1;for(var n=!1,r=0;r<Re.length;++r)if(t[Re[r]]){if(n)return!1;parseFloat(t[Re[r]])!==k(t[Re[r]])&&(n=!0)}return!0}(e),this._milliseconds=+f+1e3*c+6e4*u+1e3*s*60*60,this._days=+o+7*a,this._months=+i+3*r+12*n,this._data={},this._locale=le(),this._bubble()}function Ie(t){return t instanceof Ne}function Be(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Le(t,e){H(t,0,0,(function(){var t=this.utcOffset(),n="+";return t<0&&(t=-t,n="-"),n+q(~~(t/60),2)+e+q(~~t%60,2)}))}Le("Z",":"),Le("ZZ",""),ft("Z",st),ft("ZZ",st),pt(["Z","ZZ"],(function(t,e,n){n._useUTC=!0,n._tzm=Fe(st,t)}));var Pe=/([\+\-]|\d\d)/gi;function Fe(t,e){var n=(e||"").match(t);if(null===n)return null;var r=((n[n.length-1]||[])+"").match(Pe)||["-",0,0],i=60*r[1]+k(r[2]);return 0===i?0:"+"===r[0]?i:-i}function qe(t,e){var n,r;return e._isUTC?(n=e.clone(),r=(w(t)||c(t)?t.valueOf():Te(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+r),i.updateOffset(n,!1),n):Te(t).local()}function je(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Ue(){return!!this.isValid()&&this._isUTC&&0===this._offset}i.updateOffset=function(){};var ze=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ye=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function He(t,e){var n,r,i,a=t,o=null;return Ie(t)?a={ms:t._milliseconds,d:t._days,M:t._months}:u(t)?(a={},e?a[e]=t:a.milliseconds=t):(o=ze.exec(t))?(n="-"===o[1]?-1:1,a={y:0,d:k(o[mt])*n,h:k(o[vt])*n,m:k(o[_t])*n,s:k(o[wt])*n,ms:k(Be(1e3*o[xt]))*n}):(o=Ye.exec(t))?(n="-"===o[1]?-1:(o[1],1),a={y:Ve(o[2],n),M:Ve(o[3],n),w:Ve(o[4],n),d:Ve(o[5],n),h:Ve(o[6],n),m:Ve(o[7],n),s:Ve(o[8],n)}):null==a?a={}:"object"==typeof a&&("from"in a||"to"in a)&&(i=function(t,e){var n;return t.isValid()&&e.isValid()?(e=qe(e,t),t.isBefore(e)?n=$e(t,e):((n=$e(e,t)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}(Te(a.from),Te(a.to)),(a={}).ms=i.milliseconds,a.M=i.months),r=new Ne(a),Ie(t)&&l(t,"_locale")&&(r._locale=t._locale),r}function Ve(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function $e(t,e){var n={milliseconds:0,months:0};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function Ge(t,e){return function(n,r){var i;return null===r||isNaN(+r)||(D(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),We(this,He(n="string"==typeof n?+n:n,r),t),this}}function We(t,e,n,r){var a=e._milliseconds,o=Be(e._days),s=Be(e._months);t.isValid()&&(r=null==r||r,s&&Lt(t,Ct(t,"Month")+s*n),o&&Ot(t,"Date",Ct(t,"Date")+o*n),a&&t._d.setTime(t._d.valueOf()+a*n),r&&i.updateOffset(t,o||s))}He.fn=Ne.prototype,He.invalid=function(){return He(NaN)};var Ke=Ge(1,"add"),Xe=Ge(-1,"subtract");function Ze(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,"months");return-(n+(e-r<0?(e-r)/(r-t.clone().add(n-1,"months")):(e-r)/(t.clone().add(n+1,"months")-r)))||0}function Je(t){var e;return void 0===t?this._locale._abbr:(null!=(e=le(t))&&(this._locale=e),this)}i.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",i.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Qe=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function tn(){return this._locale}function en(t,e){H(0,[t,t.length],0,e)}function nn(t,e,n,r,i){var a;return null==t?Ht(this,r,i).year:((a=Vt(t,r,i))<e&&(e=a),function(t,e,n,r,i){var a=Yt(t,e,n,r,i),o=Ut(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}.call(this,t,e,n,r,i))}H(0,["gg",2],0,(function(){return this.weekYear()%100})),H(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),en("gggg","weekYear"),en("ggggg","weekYear"),en("GGGG","isoWeekYear"),en("GGGGG","isoWeekYear"),I("weekYear","gg"),I("isoWeekYear","GG"),F("weekYear",1),F("isoWeekYear",1),ft("G",at),ft("g",at),ft("GG",J,W),ft("gg",J,W),ft("GGGG",nt,X),ft("gggg",nt,X),ft("GGGGG",rt,Z),ft("ggggg",rt,Z),gt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,r){e[r.substr(0,2)]=k(t)})),gt(["gg","GG"],(function(t,e,n,r){e[r]=i.parseTwoDigitYear(t)})),H("Q",0,"Qo","quarter"),I("quarter","Q"),F("quarter",7),ft("Q",G),pt("Q",(function(t,e){e[bt]=3*(k(t)-1)})),H("D",["DD",2],"Do","date"),I("date","D"),F("date",9),ft("D",J),ft("DD",J,W),ft("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),pt(["D","DD"],mt),pt("Do",(function(t,e){e[mt]=k(t.match(J)[0])}));var rn=Dt("Date",!0);H("DDD",["DDDD",3],"DDDo","dayOfYear"),I("dayOfYear","DDD"),F("dayOfYear",4),ft("DDD",et),ft("DDDD",K),pt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=k(t)})),H("m",["mm",2],0,"minute"),I("minute","m"),F("minute",14),ft("m",J),ft("mm",J,W),pt(["m","mm"],_t);var an=Dt("Minutes",!1);H("s",["ss",2],0,"second"),I("second","s"),F("second",15),ft("s",J),ft("ss",J,W),pt(["s","ss"],wt);var on,sn=Dt("Seconds",!1);for(H("S",0,0,(function(){return~~(this.millisecond()/100)})),H(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),H(0,["SSS",3],0,"millisecond"),H(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),H(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),H(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),H(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),H(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),H(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),I("millisecond","ms"),F("millisecond",16),ft("S",et,G),ft("SS",et,W),ft("SSS",et,K),on="SSSS";on.length<=9;on+="S")ft(on,it);function un(t,e){e[xt]=k(1e3*("0."+t))}for(on="S";on.length<=9;on+="S")pt(on,un);var cn=Dt("Milliseconds",!1);H("z",0,0,"zoneAbbr"),H("zz",0,0,"zoneName");var fn=_.prototype;function ln(t){return t}fn.add=Ke,fn.calendar=function(t,e){var n=t||Te(),r=qe(n,this).startOf("day"),a=i.calendarFormat(this,r)||"sameElse",o=e&&(C(e[a])?e[a].call(this,n):e[a]);return this.format(o||this.localeData().calendar(a,this,Te(n)))},fn.clone=function(){return new _(this)},fn.diff=function(t,e,n){var r,i,a;if(!this.isValid())return NaN;if(!(r=qe(t,this)).isValid())return NaN;switch(i=6e4*(r.utcOffset()-this.utcOffset()),e=B(e)){case"year":a=Ze(this,r)/12;break;case"month":a=Ze(this,r);break;case"quarter":a=Ze(this,r)/3;break;case"second":a=(this-r)/1e3;break;case"minute":a=(this-r)/6e4;break;case"hour":a=(this-r)/36e5;break;case"day":a=(this-r-i)/864e5;break;case"week":a=(this-r-i)/6048e5;break;default:a=this-r}return n?a:x(a)},fn.endOf=function(t){return void 0===(t=B(t))||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))},fn.format=function(t){t||(t=this.isUtc()?i.defaultFormatUtc:i.defaultFormat);var e=V(this,t);return this.localeData().postformat(e)},fn.from=function(t,e){return this.isValid()&&(w(t)&&t.isValid()||Te(t).isValid())?He({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},fn.fromNow=function(t){return this.from(Te(),t)},fn.to=function(t,e){return this.isValid()&&(w(t)&&t.isValid()||Te(t).isValid())?He({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},fn.toNow=function(t){return this.to(Te(),t)},fn.get=function(t){return C(this[t=B(t)])?this[t]():this},fn.invalidAt=function(){return p(this).overflow},fn.isAfter=function(t,e){var n=w(t)?t:Te(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=B(s(e)?"millisecond":e))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(e).valueOf())},fn.isBefore=function(t,e){var n=w(t)?t:Te(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=B(s(e)?"millisecond":e))?this.valueOf()<n.valueOf():this.clone().endOf(e).valueOf()<n.valueOf())},fn.isBetween=function(t,e,n,r){return("("===(r=r||"()")[0]?this.isAfter(t,n):!this.isBefore(t,n))&&(")"===r[1]?this.isBefore(e,n):!this.isAfter(e,n))},fn.isSame=function(t,e){var n,r=w(t)?t:Te(t);return!(!this.isValid()||!r.isValid())&&("millisecond"===(e=B(e||"millisecond"))?this.valueOf()===r.valueOf():(n=r.valueOf(),this.clone().startOf(e).valueOf()<=n&&n<=this.clone().endOf(e).valueOf()))},fn.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},fn.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},fn.isValid=function(){return g(this)},fn.lang=Qe,fn.locale=Je,fn.localeData=tn,fn.max=Ce,fn.min=De,fn.parsingFlags=function(){return h({},p(this))},fn.set=function(t,e){if("object"==typeof t)for(var n=function(t){var e=[];for(var n in t)e.push({unit:n,priority:P[n]});return e.sort((function(t,e){return t.priority-e.priority})),e}(t=L(t)),r=0;r<n.length;r++)this[n[r].unit](t[n[r].unit]);else if(C(this[t=B(t)]))return this[t](e);return this},fn.startOf=function(t){switch(t=B(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t&&this.weekday(0),"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},fn.subtract=Xe,fn.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},fn.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},fn.toDate=function(){return new Date(this.valueOf())},fn.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,n=e?this.clone().utc():this;return n.year()<0||9999<n.year()?V(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):C(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(n,"Z")):V(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},fn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=e+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+i)},fn.toJSON=function(){return this.isValid()?this.toISOString():null},fn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},fn.unix=function(){return Math.floor(this.valueOf()/1e3)},fn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},fn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},fn.year=Tt,fn.isLeapYear=function(){return St(this.year())},fn.weekYear=function(t){return nn.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},fn.isoWeekYear=function(t){return nn.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},fn.quarter=fn.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},fn.month=Pt,fn.daysInMonth=function(){return Rt(this.year(),this.month())},fn.week=fn.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},fn.isoWeek=fn.isoWeeks=function(t){var e=Ht(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},fn.weeksInYear=function(){var t=this.localeData()._week;return Vt(this.year(),t.dow,t.doy)},fn.isoWeeksInYear=function(){return Vt(this.year(),1,4)},fn.date=rn,fn.day=fn.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e,n,r=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(e=t,n=this.localeData(),t="string"!=typeof e?e:isNaN(e)?"number"==typeof(e=n.weekdaysParse(e))?e:null:parseInt(e,10),this.add(t-r,"d")):r},fn.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},fn.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=(n=t,r=this.localeData(),"string"==typeof n?r.weekdaysParse(n)%7||7:isNaN(n)?null:n);return this.day(this.day()%7?e:e-7)}return this.day()||7;var n,r},fn.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},fn.hour=fn.hours=re,fn.minute=fn.minutes=an,fn.second=fn.seconds=sn,fn.millisecond=fn.milliseconds=cn,fn.utcOffset=function(t,e,n){var r,a=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=Fe(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(r=je(this)),this._offset=t,this._isUTC=!0,null!=r&&this.add(r,"m"),a!==t&&(!e||this._changeInProgress?We(this,He(t-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,i.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?a:je(this)},fn.utc=function(t){return this.utcOffset(0,t)},fn.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(je(this),"m")),this},fn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Fe(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},fn.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Te(t).utcOffset():0,(this.utcOffset()-t)%60==0)},fn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},fn.isLocal=function(){return!!this.isValid()&&!this._isUTC},fn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},fn.isUtc=Ue,fn.isUTC=Ue,fn.zoneAbbr=function(){return this._isUTC?"UTC":""},fn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},fn.dates=S("dates accessor is deprecated. Use date instead.",rn),fn.months=S("months accessor is deprecated. Use month instead",Pt),fn.years=S("years accessor is deprecated. Use year instead",Tt),fn.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),fn.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(m(t,this),(t=Se(t))._a){var e=t._isUTC?d(t._a):Te(t._a);this._isDSTShifted=this.isValid()&&0<E(t._a,e.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted}));var hn=R.prototype;function dn(t,e,n,r){var i=le(),a=d().set(r,e);return i[n](a,t)}function pn(t,e,n){if(u(t)&&(e=t,t=void 0),t=t||"",null!=e)return dn(t,e,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=dn(t,r,n,"month");return i}function gn(t,e,n,r){"boolean"==typeof t?u(e)&&(n=e,e=void 0):(e=t,t=!1,u(n=e)&&(n=e,e=void 0)),e=e||"";var i,a=le(),o=t?a._week.dow:0;if(null!=n)return dn(e,(n+o)%7,r,"day");var s=[];for(i=0;i<7;i++)s[i]=dn(e,(i+o)%7,r,"day");return s}hn.calendar=function(t,e,n){var r=this._calendar[t]||this._calendar.sameElse;return C(r)?r.call(e,n):r},hn.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(t){return this._ordinal.replace("%d",t)},hn.preparse=ln,hn.postformat=ln,hn.relativeTime=function(t,e,n,r){var i=this._relativeTime[n];return C(i)?i(t,e,n,r):i.replace(/%d/i,t)},hn.pastFuture=function(t,e){var n=this._relativeTime[0<t?"future":"past"];return C(n)?n(e):n.replace(/%s/i,e)},hn.set=function(t){var e,n;for(n in t)C(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},hn.months=function(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Nt).test(e)?"format":"standalone"][t.month()]:a(this._months)?this._months:this._months.standalone},hn.monthsShort=function(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Nt.test(e)?"format":"standalone"][t.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(t,e,n){var r,i,a;if(this._monthsParseExact)return function(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],r=0;r<12;++r)a=d([2e3,r]),this._shortMonthsParse[r]=this.monthsShort(a,"").toLocaleLowerCase(),this._longMonthsParse[r]=this.months(a,"").toLocaleLowerCase();return n?"MMM"===e?-1!==(i=Mt.call(this._shortMonthsParse,o))?i:null:-1!==(i=Mt.call(this._longMonthsParse,o))?i:null:"MMM"===e?-1!==(i=Mt.call(this._shortMonthsParse,o))?i:-1!==(i=Mt.call(this._longMonthsParse,o))?i:null:-1!==(i=Mt.call(this._longMonthsParse,o))?i:-1!==(i=Mt.call(this._shortMonthsParse,o))?i:null}.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(i=d([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}},hn.monthsRegex=function(t){return this._monthsParseExact?(l(this,"_monthsRegex")||jt.call(this),t?this._monthsStrictRegex:this._monthsRegex):(l(this,"_monthsRegex")||(this._monthsRegex=qt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(t){return this._monthsParseExact?(l(this,"_monthsRegex")||jt.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(l(this,"_monthsShortRegex")||(this._monthsShortRegex=Ft),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(t){return Ht(t,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(t,e){return t?a(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:a(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin},hn.weekdaysShort=function(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort},hn.weekdaysParse=function(t,e,n){var r,i,a;if(this._weekdaysParseExact)return function(t,e,n){var r,i,a,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=d([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(i=Mt.call(this._weekdaysParse,o))?i:null:"ddd"===e?-1!==(i=Mt.call(this._shortWeekdaysParse,o))?i:null:-1!==(i=Mt.call(this._minWeekdaysParse,o))?i:null:"dddd"===e?-1!==(i=Mt.call(this._weekdaysParse,o))?i:-1!==(i=Mt.call(this._shortWeekdaysParse,o))?i:-1!==(i=Mt.call(this._minWeekdaysParse,o))?i:null:"ddd"===e?-1!==(i=Mt.call(this._shortWeekdaysParse,o))?i:-1!==(i=Mt.call(this._weekdaysParse,o))?i:-1!==(i=Mt.call(this._minWeekdaysParse,o))?i:null:-1!==(i=Mt.call(this._minWeekdaysParse,o))?i:-1!==(i=Mt.call(this._weekdaysParse,o))?i:-1!==(i=Mt.call(this._shortWeekdaysParse,o))?i:null}.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=d([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[r].test(t))return r;if(n&&"ddd"===e&&this._shortWeekdaysParse[r].test(t))return r;if(n&&"dd"===e&&this._minWeekdaysParse[r].test(t))return r;if(!n&&this._weekdaysParse[r].test(t))return r}},hn.weekdaysRegex=function(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=Kt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Xt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Zt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},hn.meridiem=function(t,e,n){return 11<t?n?"pm":"PM":n?"am":"AM"},ce("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===k(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),i.lang=S("moment.lang is deprecated. Use moment.locale instead.",ce),i.langData=S("moment.langData is deprecated. Use moment.localeData instead.",le);var yn=Math.abs;function bn(t,e,n,r){var i=He(e,n);return t._milliseconds+=r*i._milliseconds,t._days+=r*i._days,t._months+=r*i._months,t._bubble()}function mn(t){return t<0?Math.floor(t):Math.ceil(t)}function vn(t){return 4800*t/146097}function _n(t){return 146097*t/4800}function wn(t){return function(){return this.as(t)}}var xn=wn("ms"),kn=wn("s"),En=wn("m"),An=wn("h"),Sn=wn("d"),Mn=wn("w"),Tn=wn("M"),Dn=wn("y");function Cn(t){return function(){return this.isValid()?this._data[t]:NaN}}var On=Cn("milliseconds"),Rn=Cn("seconds"),Nn=Cn("minutes"),In=Cn("hours"),Bn=Cn("days"),Ln=Cn("months"),Pn=Cn("years"),Fn=Math.round,qn={ss:44,s:45,m:45,h:22,d:26,M:11},jn=Math.abs;function Un(t){return(0<t)-(t<0)||+t}function zn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=jn(this._milliseconds)/1e3,r=jn(this._days),i=jn(this._months);e=x((t=x(n/60))/60),n%=60,t%=60;var a=x(i/12),o=i%=12,s=r,u=e,c=t,f=n?n.toFixed(3).replace(/\.?0+$/,""):"",l=this.asSeconds();if(!l)return"P0D";var h=l<0?"-":"",d=Un(this._months)!==Un(l)?"-":"",p=Un(this._days)!==Un(l)?"-":"",g=Un(this._milliseconds)!==Un(l)?"-":"";return h+"P"+(a?d+a+"Y":"")+(o?d+o+"M":"")+(s?p+s+"D":"")+(u||c||f?"T":"")+(u?g+u+"H":"")+(c?g+c+"M":"")+(f?g+f+"S":"")}var Yn=Ne.prototype;return Yn.isValid=function(){return this._isValid},Yn.abs=function(){var t=this._data;return this._milliseconds=yn(this._milliseconds),this._days=yn(this._days),this._months=yn(this._months),t.milliseconds=yn(t.milliseconds),t.seconds=yn(t.seconds),t.minutes=yn(t.minutes),t.hours=yn(t.hours),t.months=yn(t.months),t.years=yn(t.years),this},Yn.add=function(t,e){return bn(this,t,e,1)},Yn.subtract=function(t,e){return bn(this,t,e,-1)},Yn.as=function(t){if(!this.isValid())return NaN;var e,n,r=this._milliseconds;if("month"===(t=B(t))||"year"===t)return e=this._days+r/864e5,n=this._months+vn(e),"month"===t?n:n/12;switch(e=this._days+Math.round(_n(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}},Yn.asMilliseconds=xn,Yn.asSeconds=kn,Yn.asMinutes=En,Yn.asHours=An,Yn.asDays=Sn,Yn.asWeeks=Mn,Yn.asMonths=Tn,Yn.asYears=Dn,Yn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},Yn._bubble=function(){var t,e,n,r,i,a=this._milliseconds,o=this._days,s=this._months,u=this._data;return 0<=a&&0<=o&&0<=s||a<=0&&o<=0&&s<=0||(a+=864e5*mn(_n(s)+o),s=o=0),u.milliseconds=a%1e3,t=x(a/1e3),u.seconds=t%60,e=x(t/60),u.minutes=e%60,n=x(e/60),u.hours=n%24,s+=i=x(vn(o+=x(n/24))),o-=mn(_n(i)),r=x(s/12),s%=12,u.days=o,u.months=s,u.years=r,this},Yn.clone=function(){return He(this)},Yn.get=function(t){return t=B(t),this.isValid()?this[t+"s"]():NaN},Yn.milliseconds=On,Yn.seconds=Rn,Yn.minutes=Nn,Yn.hours=In,Yn.days=Bn,Yn.weeks=function(){return x(this.days()/7)},Yn.months=Ln,Yn.years=Pn,Yn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e,n,r,i,a,o,s,u,c,f,l=this.localeData(),h=(e=!t,n=l,r=He(this).abs(),i=Fn(r.as("s")),a=Fn(r.as("m")),o=Fn(r.as("h")),s=Fn(r.as("d")),u=Fn(r.as("M")),c=Fn(r.as("y")),(f=i<=qn.ss&&["s",i]||i<qn.s&&["ss",i]||a<=1&&["m"]||a<qn.m&&["mm",a]||o<=1&&["h"]||o<qn.h&&["hh",o]||s<=1&&["d"]||s<qn.d&&["dd",s]||u<=1&&["M"]||u<qn.M&&["MM",u]||c<=1&&["y"]||["yy",c])[2]=e,f[3]=0<+this,f[4]=n,function(t,e,n,r,i){return i.relativeTime(e||1,!!n,t,r)}.apply(null,f));return t&&(h=l.pastFuture(+this,h)),l.postformat(h)},Yn.toISOString=zn,Yn.toString=zn,Yn.toJSON=zn,Yn.locale=Je,Yn.localeData=tn,Yn.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",zn),Yn.lang=Qe,H("X",0,0,"unix"),H("x",0,0,"valueOf"),ft("x",at),ft("X",/[+-]?\d+(\.\d{1,3})?/),pt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),pt("x",(function(t,e,n){n._d=new Date(k(t))})),i.version="2.22.1",e=Te,i.fn=fn,i.min=function(){return Oe("isBefore",[].slice.call(arguments,0))},i.max=function(){return Oe("isAfter",[].slice.call(arguments,0))},i.now=function(){return Date.now?Date.now():+new Date},i.utc=d,i.unix=function(t){return Te(1e3*t)},i.months=function(t,e){return pn(t,e,"months")},i.isDate=c,i.locale=ce,i.invalid=y,i.duration=He,i.isMoment=w,i.weekdays=function(t,e,n){return gn(t,e,n,"weekdays")},i.parseZone=function(){return Te.apply(null,arguments).parseZone()},i.localeData=le,i.isDuration=Ie,i.monthsShort=function(t,e){return pn(t,e,"monthsShort")},i.weekdaysMin=function(t,e,n){return gn(t,e,n,"weekdaysMin")},i.defineLocale=fe,i.updateLocale=function(t,e){if(null!=e){var n,r,i=ie;null!=(r=ue(t))&&(i=r._config),(n=new R(e=O(i,e))).parentLocale=ae[t],ae[t]=n,ce(t)}else null!=ae[t]&&(null!=ae[t].parentLocale?ae[t]=ae[t].parentLocale:null!=ae[t]&&delete ae[t]);return ae[t]},i.locales=function(){return M(ae)},i.weekdaysShort=function(t,e,n){return gn(t,e,n,"weekdaysShort")},i.normalizeUnits=B,i.relativeTimeRounding=function(t){return void 0===t?Fn:"function"==typeof t&&(Fn=t,!0)},i.relativeTimeThreshold=function(t,e){return void 0!==qn[t]&&(void 0===e?qn[t]:(qn[t]=e,"s"===t&&(qn.ss=e-1),!0))},i.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},i.prototype=fn,i.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:"YYYY-[W]WW",MONTH:"YYYY-MM"},i}()}).call(this,n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,8,10,11,12,13,14,15,16,18,20],n=[1,9],r=[1,10],i=[1,11],a=[1,12],o=[1,13],s=[1,14],u=[1,16],c=[1,17],f={trace:function(){},yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,dateFormat:11,inclusiveEndDates:12,axisFormat:13,excludes:14,title:15,section:16,clickStatement:17,taskTxt:18,taskData:19,click:20,callbackname:21,callbackargs:22,href:23,clickStatementDebug:24,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",11:"dateFormat",12:"inclusiveEndDates",13:"axisFormat",14:"excludes",15:"title",16:"section",18:"taskTxt",19:"taskData",20:"click",21:"callbackname",22:"callbackargs",23:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[17,2],[17,3],[17,3],[17,4],[17,3],[17,4],[17,2],[24,2],[24,3],[24,3],[24,4],[24,3],[24,4],[24,2]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:this.$=[];break;case 3:a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 5:this.$=a[s];break;case 6:case 7:this.$=[];break;case 8:r.setDateFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 9:r.enableInclusiveEndDates(),this.$=a[s].substr(18);break;case 10:r.setAxisFormat(a[s].substr(11)),this.$=a[s].substr(11);break;case 11:r.setExcludes(a[s].substr(9)),this.$=a[s].substr(9);break;case 12:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6);break;case 13:r.addSection(a[s].substr(8)),this.$=a[s].substr(8);break;case 15:r.addTask(a[s-1],a[s]),this.$="task";break;case 16:this.$=a[s-1],r.setClickEvent(a[s-1],a[s],null);break;case 17:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],a[s]);break;case 18:this.$=a[s-2],r.setClickEvent(a[s-2],a[s-1],null),r.setLink(a[s-2],a[s]);break;case 19:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-2],a[s-1]),r.setLink(a[s-3],a[s]);break;case 20:this.$=a[s-2],r.setClickEvent(a[s-2],a[s],null),r.setLink(a[s-2],a[s-1]);break;case 21:this.$=a[s-3],r.setClickEvent(a[s-3],a[s-1],a[s]),r.setLink(a[s-3],a[s-2]);break;case 22:this.$=a[s-1],r.setLink(a[s-1],a[s]);break;case 23:case 29:this.$=a[s-1]+" "+a[s];break;case 24:case 25:case 27:this.$=a[s-2]+" "+a[s-1]+" "+a[s];break;case 26:case 28:this.$=a[s-3]+" "+a[s-2]+" "+a[s-1]+" "+a[s]}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:r,13:i,14:a,15:o,16:s,17:15,18:u,20:c},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:n,12:r,13:i,14:a,15:o,16:s,17:15,18:u,20:c},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),{19:[1,19]},{21:[1,20],23:[1,21]},t(e,[2,4]),t(e,[2,15]),t(e,[2,16],{22:[1,22],23:[1,23]}),t(e,[2,22],{21:[1,24]}),t(e,[2,17],{23:[1,25]}),t(e,[2,18]),t(e,[2,20],{22:[1,26]}),t(e,[2,19]),t(e,[2,21])],defaultActions:{},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,f=0,l=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;a.push(b);var m=p.options&&p.options.ranges;function v(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,w,x,k,E,A,S,M,T,D={};;){if(x=n[n.length-1],this.defaultActions[x]?k=this.defaultActions[x]:(null==_&&(_=v()),k=o[x]&&o[x][_]),void 0===k||!k.length||!k[0]){var C="";for(A in T=[],o[x])this.terminals_[A]&&A>l&&T.push("'"+this.terminals_[A]+"'");C=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(u+1)+": Unexpected "+(_==h?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:b,expected:T})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,w?(_=w,w=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,b=p.yylloc,f>0&&f--);break;case 2:if(S=this.productions_[k[1]][1],D.$=i[i.length-S],D._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(D._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(D,[s,c,u,g.yy,k[1],i,a].concat(d))))return E;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[k[1]][0]),i.push(D.$),a.push(D._$),M=o[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,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},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={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},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 10;case 1:case 2:case 3:break;case 4:this.begin("href");break;case 5:this.popState();break;case 6:return 23;case 7:this.begin("callbackname");break;case 8:this.popState();break;case 9:this.popState(),this.begin("callbackargs");break;case 10:return 21;case 11:this.popState();break;case 12:return 22;case 13:this.begin("click");break;case 14:this.popState();break;case 15:return 20;case 16:return 4;case 17:return 11;case 18:return 12;case 19:return 13;case 20:return 14;case 21:return"date";case 22:return 15;case 23:return 16;case 24:return 18;case 25:return 19;case 26:return":";case 27:return 6;case 28:return"INVALID"}},rules:[/^(?:[\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,/^(?:\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:{callbackargs:{rules:[11,12],inclusive:!1},callbackname:{rules:[8,9,10],inclusive:!1},href:{rules:[5,6],inclusive:!1},click:{rules:[14,15],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,7,13,16,17,18,19,20,21,22,23,24,25,26,27,28],inclusive:!0}}};function h(){this.yy={}}return f.lexer=l,h.prototype=f,f.Parser=h,new h}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(17).readFileSync(n(18).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(5),n(7)(t))},function(t,e){},function(t,e,n){(function(t){function n(t,e){for(var n=0,r=t.length-1;r>=0;r--){var i=t[r];"."===i?t.splice(r,1):".."===i?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n--;n)t.unshift("..");return t}function r(t,e){if(t.filter)return t.filter(e);for(var n=[],r=0;r<t.length;r++)e(t[r],r,t)&&n.push(t[r]);return n}e.resolve=function(){for(var e="",i=!1,a=arguments.length-1;a>=-1&&!i;a--){var o=a>=0?arguments[a]:t.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(e=o+"/"+e,i="/"===o.charAt(0))}return(i?"/":"")+(e=n(r(e.split("/"),(function(t){return!!t})),!i).join("/"))||"."},e.normalize=function(t){var a=e.isAbsolute(t),o="/"===i(t,-1);return(t=n(r(t.split("/"),(function(t){return!!t})),!a).join("/"))||a||(t="."),t&&o&&(t+="/"),(a?"/":"")+t},e.isAbsolute=function(t){return"/"===t.charAt(0)},e.join=function(){var t=Array.prototype.slice.call(arguments,0);return e.normalize(r(t,(function(t,e){if("string"!=typeof t)throw new TypeError("Arguments to path.join must be strings");return t})).join("/"))},e.relative=function(t,n){function r(t){for(var e=0;e<t.length&&""===t[e];e++);for(var n=t.length-1;n>=0&&""===t[n];n--);return e>n?[]:t.slice(e,n-e+1)}t=e.resolve(t).substr(1),n=e.resolve(n).substr(1);for(var i=r(t.split("/")),a=r(n.split("/")),o=Math.min(i.length,a.length),s=o,u=0;u<o;u++)if(i[u]!==a[u]){s=u;break}var c=[];for(u=s;u<i.length;u++)c.push("..");return(c=c.concat(a.slice(s))).join("/")},e.sep="/",e.delimiter=":",e.dirname=function(t){if("string"!=typeof t&&(t+=""),0===t.length)return".";for(var e=t.charCodeAt(0),n=47===e,r=-1,i=!0,a=t.length-1;a>=1;--a)if(47===(e=t.charCodeAt(a))){if(!i){r=a;break}}else i=!1;return-1===r?n?"/":".":n&&1===r?"/":t.slice(0,r)},e.basename=function(t,e){var n=function(t){"string"!=typeof t&&(t+="");var e,n=0,r=-1,i=!0;for(e=t.length-1;e>=0;--e)if(47===t.charCodeAt(e)){if(!i){n=e+1;break}}else-1===r&&(i=!1,r=e+1);return-1===r?"":t.slice(n,r)}(t);return e&&n.substr(-1*e.length)===e&&(n=n.substr(0,n.length-e.length)),n},e.extname=function(t){"string"!=typeof t&&(t+="");for(var e=-1,n=0,r=-1,i=!0,a=0,o=t.length-1;o>=0;--o){var s=t.charCodeAt(o);if(47!==s)-1===r&&(i=!1,r=o+1),46===s?-1===e?e=o:1!==a&&(a=1):-1!==e&&(a=-1);else if(!i){n=o+1;break}}return-1===e||-1===r||0===a||1===a&&e===r-1&&e===n+1?"":t.slice(e,r)};var i="b"==="ab".substr(-1)?function(t,e,n){return t.substr(e,n)}:function(t,e,n){return e<0&&(e=t.length+e),t.substr(e,n)}}).call(this,n(5))},function(t,e,n){var r=n(3).Buffer,i=n(47).Transform,a=n(52).StringDecoder;function o(t){i.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}n(2)(o,i),o.prototype.update=function(t,e,n){"string"==typeof t&&(t=r.from(t,e));var i=this._update(t);return this.hashMode?this:(n&&(i=this._toString(i,n)),i)},o.prototype.setAutoPadding=function(){},o.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},o.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},o.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},o.prototype._transform=function(t,e,n){var r;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){r=t}finally{n(r)}},o.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(t){e=t}t(e)},o.prototype._finalOrDigest=function(t){var e=this.__final()||r.alloc(0);return t&&(e=this._toString(e,t,!0)),e},o.prototype._toString=function(t,e,n){if(this._decoder||(this._decoder=new a(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var r=this._decoder.write(t);return n&&(r+=this._decoder.end()),r},t.exports=o},function(t,e,n){t.exports={Graph:n(45),json:n(112),alg:n(113)}},function(t,e,n){"use strict";var r=n(35),i=Object.keys||function(t){var e=[];for(var n in t)e.push(n);return e};t.exports=l;var a=n(27);a.inherits=n(2);var o=n(71),s=n(51);a.inherits(l,o);for(var u=i(s.prototype),c=0;c<u.length;c++){var f=u[c];l.prototype[f]||(l.prototype[f]=s.prototype[f])}function l(t){if(!(this instanceof l))return new l(t);o.call(this,t),s.call(this,t),t&&!1===t.readable&&(this.readable=!1),t&&!1===t.writable&&(this.writable=!1),this.allowHalfOpen=!0,t&&!1===t.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",h)}function h(){this.allowHalfOpen||this._writableState.ended||r.nextTick(d,this)}function d(t){t.end()}Object.defineProperty(l.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(l.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed&&this._writableState.destroyed)},set:function(t){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=t,this._writableState.destroyed=t)}}),l.prototype._destroy=function(t,e){this.push(null),this.end(),r.nextTick(e,t)}},function(t,e,n){"use strict";(function(e,r){var i=65536,a=4294967295;var o=n(3).Buffer,s=e.crypto||e.msCrypto;s&&s.getRandomValues?t.exports=function(t,e){if(t>a)throw new RangeError("requested too many random bytes");var n=o.allocUnsafe(t);if(t>0)if(t>i)for(var u=0;u<t;u+=i)s.getRandomValues(n.slice(u,u+i));else s.getRandomValues(n);if("function"==typeof e)return r.nextTick((function(){e(null,n)}));return n}:t.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}}).call(this,n(13),n(5))},function(t,e,n){var r=n(3).Buffer;function i(t,e){this._block=r.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}i.prototype.update=function(t,e){"string"==typeof t&&(e=e||"utf8",t=r.from(t,e));for(var n=this._block,i=this._blockSize,a=t.length,o=this._len,s=0;s<a;){for(var u=o%i,c=Math.min(a-s,i-u),f=0;f<c;f++)n[u+f]=t[s+f];s+=c,(o+=c)%i==0&&this._update(n)}return this._len+=a,this},i.prototype.digest=function(t){var e=this._len%this._blockSize;this._block[e]=128,this._block.fill(0,e+1),e>=this._finalSize&&(this._update(this._block),this._block.fill(0));var n=8*this._len;if(n<=4294967295)this._block.writeUInt32BE(n,this._blockSize-4);else{var r=(4294967295&n)>>>0,i=(n-r)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(r,this._blockSize-4)}this._update(this._block);var a=this._hash();return t?a.toString(t):a},i.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=i},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,12],n=[1,15],r=[1,13],i=[1,14],a=[1,17],o=[1,18],s=[1,19],u=[6,8],c=[1,28],f=[1,29],l=[1,30],h=[1,31],d=[1,32],p=[1,33],g=[6,8,13,18,26,29,30,31,32,33,34],y=[6,8,13,18,22,26,29,30,31,32,33,34,48,49,50],b=[26,48,49,50],m=[26,33,34,48,49,50],v=[26,29,30,31,32,48,49,50],_=[6,8,13],w=[1,50],x={trace:function(){},yy:{},symbols_:{error:2,mermaidDoc:3,graphConfig:4,CLASS_DIAGRAM:5,NEWLINE:6,statements:7,EOF:8,statement:9,className:10,alphaNumToken:11,relationStatement:12,LABEL:13,classStatement:14,methodStatement:15,annotationStatement:16,CLASS:17,STRUCT_START:18,members:19,STRUCT_STOP:20,ANNOTATION_START:21,ANNOTATION_END:22,MEMBER:23,SEPARATOR:24,relation:25,STR:26,relationType:27,lineType:28,AGGREGATION:29,EXTENSION:30,COMPOSITION:31,DEPENDENCY:32,LINE:33,DOTTED_LINE:34,commentToken:35,textToken:36,graphCodeTokens:37,textNoTagsToken:38,TAGSTART:39,TAGEND:40,"==":41,"--":42,PCT:43,DEFAULT:44,SPACE:45,MINUS:46,keywords:47,UNICODE_TEXT:48,NUM:49,ALPHA:50,$accept:0,$end:1},terminals_:{2:"error",5:"CLASS_DIAGRAM",6:"NEWLINE",8:"EOF",13:"LABEL",17:"CLASS",18:"STRUCT_START",20:"STRUCT_STOP",21:"ANNOTATION_START",22:"ANNOTATION_END",23:"MEMBER",24:"SEPARATOR",26:"STR",29:"AGGREGATION",30:"EXTENSION",31:"COMPOSITION",32:"DEPENDENCY",33:"LINE",34:"DOTTED_LINE",37:"graphCodeTokens",39:"TAGSTART",40:"TAGEND",41:"==",42:"--",43:"PCT",44:"DEFAULT",45:"SPACE",46:"MINUS",47:"keywords",48:"UNICODE_TEXT",49:"NUM",50:"ALPHA"},productions_:[0,[3,1],[4,4],[7,1],[7,2],[7,3],[10,2],[10,1],[9,1],[9,2],[9,1],[9,1],[9,1],[14,2],[14,5],[16,4],[19,1],[19,2],[15,1],[15,2],[15,1],[15,1],[12,3],[12,4],[12,4],[12,5],[25,3],[25,2],[25,2],[25,1],[27,1],[27,1],[27,1],[27,1],[28,1],[28,1],[35,1],[35,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,1],[38,1],[38,1],[38,1],[38,1],[11,1],[11,1],[11,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 6:this.$=a[s-1]+a[s];break;case 7:this.$=a[s];break;case 8:r.addRelation(a[s]);break;case 9:a[s-1].title=r.cleanupLabel(a[s]),r.addRelation(a[s-1]);break;case 13:r.addClass(a[s]);break;case 14:r.addClass(a[s-3]),r.addMembers(a[s-3],a[s-1]);break;case 15:r.addAnnotation(a[s],a[s-2]);break;case 16:this.$=[a[s]];break;case 17:a[s].push(a[s-1]),this.$=a[s];break;case 18:break;case 19:r.addMember(a[s-1],r.cleanupLabel(a[s]));break;case 20:console.warn("Member",a[s]);break;case 21:break;case 22:this.$={id1:a[s-2],id2:a[s],relation:a[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 23:this.$={id1:a[s-3],id2:a[s],relation:a[s-1],relationTitle1:a[s-2],relationTitle2:"none"};break;case 24:this.$={id1:a[s-3],id2:a[s],relation:a[s-2],relationTitle1:"none",relationTitle2:a[s-1]};break;case 25:this.$={id1:a[s-4],id2:a[s],relation:a[s-2],relationTitle1:a[s-3],relationTitle2:a[s-1]};break;case 26:this.$={type1:a[s-2],type2:a[s],lineType:a[s-1]};break;case 27:this.$={type1:"none",type2:a[s],lineType:a[s-1]};break;case 28:this.$={type1:a[s-1],type2:"none",lineType:a[s]};break;case 29:this.$={type1:"none",type2:"none",lineType:a[s]};break;case 30:this.$=r.relationType.AGGREGATION;break;case 31:this.$=r.relationType.EXTENSION;break;case 32:this.$=r.relationType.COMPOSITION;break;case 33:this.$=r.relationType.DEPENDENCY;break;case 34:this.$=r.lineType.LINE;break;case 35:this.$=r.lineType.DOTTED_LINE}},table:[{3:1,4:2,5:[1,3]},{1:[3]},{1:[2,1]},{6:[1,4]},{7:5,9:6,10:11,11:16,12:7,14:8,15:9,16:10,17:e,21:n,23:r,24:i,48:a,49:o,50:s},{8:[1,20]},{6:[1,21],8:[2,3]},t(u,[2,8],{13:[1,22]}),t(u,[2,10]),t(u,[2,11]),t(u,[2,12]),t(u,[2,18],{25:23,27:26,28:27,13:[1,25],26:[1,24],29:c,30:f,31:l,32:h,33:d,34:p}),{10:34,11:16,48:a,49:o,50:s},t(u,[2,20]),t(u,[2,21]),{11:35,48:a,49:o,50:s},t(g,[2,7],{11:16,10:36,48:a,49:o,50:s}),t(y,[2,49]),t(y,[2,50]),t(y,[2,51]),{1:[2,2]},{7:37,8:[2,4],9:6,10:11,11:16,12:7,14:8,15:9,16:10,17:e,21:n,23:r,24:i,48:a,49:o,50:s},t(u,[2,9]),{10:38,11:16,26:[1,39],48:a,49:o,50:s},{25:40,27:26,28:27,29:c,30:f,31:l,32:h,33:d,34:p},t(u,[2,19]),{28:41,33:d,34:p},t(b,[2,29],{27:42,29:c,30:f,31:l,32:h}),t(m,[2,30]),t(m,[2,31]),t(m,[2,32]),t(m,[2,33]),t(v,[2,34]),t(v,[2,35]),t(u,[2,13],{18:[1,43]}),{22:[1,44]},t(g,[2,6]),{8:[2,5]},t(_,[2,22]),{10:45,11:16,48:a,49:o,50:s},{10:46,11:16,26:[1,47],48:a,49:o,50:s},t(b,[2,28],{27:48,29:c,30:f,31:l,32:h}),t(b,[2,27]),{19:49,23:w},{10:51,11:16,48:a,49:o,50:s},t(_,[2,24]),t(_,[2,23]),{10:52,11:16,48:a,49:o,50:s},t(b,[2,26]),{20:[1,53]},{19:54,20:[2,16],23:w},t(u,[2,15]),t(_,[2,25]),t(u,[2,14]),{20:[2,17]}],defaultActions:{2:[2,1],20:[2,2],37:[2,5],54:[2,17]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,f=0,l=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;a.push(b);var m=p.options&&p.options.ranges;function v(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,w,x,k,E,A,S,M,T,D={};;){if(x=n[n.length-1],this.defaultActions[x]?k=this.defaultActions[x]:(null==_&&(_=v()),k=o[x]&&o[x][_]),void 0===k||!k.length||!k[0]){var C="";for(A in T=[],o[x])this.terminals_[A]&&A>l&&T.push("'"+this.terminals_[A]+"'");C=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(u+1)+": Unexpected "+(_==h?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:b,expected:T})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,w?(_=w,w=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,b=p.yylloc,f>0&&f--);break;case 2:if(S=this.productions_[k[1]][1],D.$=i[i.length-S],D._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(D._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(D,[s,c,u,g.yy,k[1],i,a].concat(d))))return E;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[k[1]][0]),i.push(D.$),a.push(D._$),M=o[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},k={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,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},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={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},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:break;case 1:return 6;case 2:break;case 3:return 5;case 4:return this.begin("struct"),18;case 5:return this.popState(),20;case 6:break;case 7:return"MEMBER";case 8:return 17;case 9:return 21;case 10:return 22;case 11:this.begin("string");break;case 12:this.popState();break;case 13:return"STR";case 14:case 15:return 30;case 16:case 17:return 32;case 18:return 31;case 19:return 29;case 20:return 33;case 21:return 34;case 22:return 13;case 23:return 46;case 24:return"DOT";case 25:return"PLUS";case 26:return 43;case 27:case 28:return"EQUALS";case 29:return 50;case 30:return"PUNCTUATION";case 31:return 49;case 32:return 48;case 33:return 45;case 34:return 8}},rules:[/^(?:%%[^\n]*)/,/^(?:\n+)/,/^(?:\s+)/,/^(?:classDiagram\b)/,/^(?:[\{])/,/^(?:\})/,/^(?:[\n])/,/^(?:[^\{\}\n]*)/,/^(?:class\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::[^#\n;]+)/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:[A-Za-z]+)/,/^(?:[!"#$%&'*+,-.`?\\_\/])/,/^(?:[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:[12,13],inclusive:!1},struct:{rules:[5,6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,8,9,10,11,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],inclusive:!0}}};function E(){this.yy={}}return x.lexer=k,E.prototype=x,x.Parser=E,new E}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(17).readFileSync(n(18).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(5),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,2],n=[1,3],r=[1,4],i=[2,4],a=[1,9],o=[1,11],s=[1,13],u=[1,14],c=[1,15],f=[1,16],l=[1,21],h=[1,17],d=[1,18],p=[1,19],g=[1,20],y=[1,22],b=[1,4,5,13,14,16,18,19,21,22,23,24,25,28],m=[1,4,5,11,12,13,14,16,18,19,21,22,23,24,25,28],v=[4,5,13,14,16,18,19,21,22,23,24,25,28],_={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,idStatement:10,DESCR:11,"--\x3e":12,HIDE_EMPTY:13,scale:14,WIDTH:15,COMPOSIT_STATE:16,STRUCT_START:17,STRUCT_STOP:18,STATE_DESCR:19,AS:20,ID:21,FORK:22,JOIN:23,CONCURRENT:24,note:25,notePosition:26,NOTE_TEXT:27,EDGE_STATE:28,left_of:29,right_of:30,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",11:"DESCR",12:"--\x3e",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",27:"NOTE_TEXT",28:"EDGE_STATE",29:"left_of",30:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,4],[9,4],[10,1],[10,1],[26,1],[26,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 3:return r.setRootDoc(a[s]),a[s];case 4:this.$=[];break;case 5:"nl"!=a[s]&&(a[s-1].push(a[s]),this.$=a[s-1]);break;case 6:case 7:this.$=a[s];break;case 8:this.$="nl";break;case 9:this.$={stmt:"state",id:a[s],type:"default",description:""};break;case 10:this.$={stmt:"state",id:a[s-1],type:"default",description:a[s].trim()};break;case 11:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-2],type:"default",description:""},state2:{stmt:"state",id:a[s],type:"default",description:""}};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:a[s-3],type:"default",description:""},state2:{stmt:"state",id:a[s-1],type:"default",description:""},description:a[s].substr(1).trim()};break;case 16:this.$={stmt:"state",id:a[s-3],type:"default",description:"",doc:a[s-1]};break;case 17:this.$={stmt:"state",id:a[s],type:"default",description:a[s-2].trim()};break;case 18:this.$={stmt:"state",id:a[s-3],type:"default",description:a[s-5],doc:a[s-1]};break;case 19:this.$={stmt:"state",id:a[s],type:"fork"};break;case 20:this.$={stmt:"state",id:a[s],type:"join"};break;case 21:this.$={stmt:"state",id:r.getDividerId(),type:"divider"};break;case 22:this.$={stmt:"state",id:a[s-1].trim(),note:{position:a[s-2].trim(),text:a[s].trim()}};break;case 24:case 25:this.$=a[s]}},table:[{3:1,4:e,5:n,6:r},{1:[3]},{3:5,4:e,5:n,6:r},{3:6,4:e,5:n,6:r},t([1,4,5,13,14,16,19,21,22,23,24,25,28],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,19:f,21:l,22:h,23:d,24:p,25:g,28:y},t(b,[2,5]),{9:23,10:12,13:s,14:u,16:c,19:f,21:l,22:h,23:d,24:p,25:g,28:y},t(b,[2,7]),t(b,[2,8]),t(b,[2,9],{11:[1,24],12:[1,25]}),t(b,[2,13]),{15:[1,26]},t(b,[2,15],{17:[1,27]}),{20:[1,28]},t(b,[2,19]),t(b,[2,20]),t(b,[2,21]),{26:29,27:[1,30],29:[1,31],30:[1,32]},t(m,[2,24]),t(m,[2,25]),t(b,[2,6]),t(b,[2,10]),{10:33,21:l,28:y},t(b,[2,14]),t(v,i,{7:34}),{21:[1,35]},{21:[1,36]},{20:[1,37]},{21:[2,26]},{21:[2,27]},t(b,[2,11],{11:[1,38]}),{4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,18:[1,39],19:f,21:l,22:h,23:d,24:p,25:g,28:y},t(b,[2,17],{17:[1,40]}),{27:[1,41]},{21:[1,42]},t(b,[2,12]),t(b,[2,16]),t(v,i,{7:43}),t(b,[2,22]),t(b,[2,23]),{4:a,5:o,8:8,9:10,10:12,13:s,14:u,16:c,18:[1,44],19:f,21:l,22:h,23:d,24:p,25:g,28:y},t(b,[2,18])],defaultActions:{5:[2,1],6:[2,2],31:[2,26],32:[2,27]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,f=0,l=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;a.push(b);var m=p.options&&p.options.ranges;function v(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,w,x,k,E,A,S,M,T,D={};;){if(x=n[n.length-1],this.defaultActions[x]?k=this.defaultActions[x]:(null==_&&(_=v()),k=o[x]&&o[x][_]),void 0===k||!k.length||!k[0]){var C="";for(A in T=[],o[x])this.terminals_[A]&&A>l&&T.push("'"+this.terminals_[A]+"'");C=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(u+1)+": Unexpected "+(_==h?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:b,expected:T})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,w?(_=w,w=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,b=p.yylloc,f>0&&f--);break;case 2:if(S=this.productions_[k[1]][1],D.$=i[i.length-S],D._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(D._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(D,[s,c,u,g.yy,k[1],i,a].concat(d))))return E;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[k[1]][0]),i.push(D.$),a.push(D._$),M=o[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},w={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,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},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={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},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 5;case 1:case 2:case 3:case 4:break;case 5:return this.pushState("SCALE"),14;case 6:return 15;case 7:this.popState();break;case 8:this.pushState("STATE");break;case 9:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),console.warn("Fork Fork: ",e.yytext),22;case 10:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),console.warn("Fork Join: ",e.yytext),23;case 11:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),console.warn("Fork Fork: ",e.yytext),22;case 12:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),console.warn("Fork Join: ",e.yytext),23;case 13:this.begin("STATE_STRING");break;case 14:return this.popState(),this.pushState("STATE_ID"),"AS";case 15:return this.popState(),"ID";case 16:this.popState();break;case 17:return"STATE_DESCR";case 18:return 16;case 19:this.popState();break;case 20:return this.popState(),this.pushState("struct"),17;case 21:return this.popState(),18;case 22:break;case 23:return this.begin("NOTE"),25;case 24:return this.popState(),this.pushState("NOTE_ID"),29;case 25:return this.popState(),this.pushState("NOTE_ID"),30;case 26:this.popState(),this.pushState("FLOATING_NOTE");break;case 27:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 28:break;case 29:return"NOTE_TEXT";case 30:return this.popState(),"ID";case 31:return this.popState(),this.pushState("NOTE_TEXT"),21;case 32:return this.popState(),e.yytext=e.yytext.substr(2).trim(),27;case 33:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),27;case 34:return 6;case 35:return 13;case 36:return 28;case 37:return 21;case 38:return e.yytext=e.yytext.trim(),11;case 39:return 12;case 40:return 24;case 41:return 5;case 42:return"INVALID"}},rules:[/^(?:[\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,/^(?: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,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[2,3],inclusive:!1},struct:{rules:[2,3,8,21,22,23,36,37,38,39,40],inclusive:!1},FLOATING_NOTE_ID:{rules:[30],inclusive:!1},FLOATING_NOTE:{rules:[27,28,29],inclusive:!1},NOTE_TEXT:{rules:[32,33],inclusive:!1},NOTE_ID:{rules:[31],inclusive:!1},NOTE:{rules:[24,25,26],inclusive:!1},SCALE:{rules:[6,7],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[15],inclusive:!1},STATE_STRING:{rules:[16,17],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[2,3,9,10,11,12,13,14,18,19,20],inclusive:!1},ID:{rules:[2,3],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,8,20,23,34,35,36,37,38,39,41,42],inclusive:!0}}};function x(){this.yy={}}return _.lexer=w,x.prototype=_,_.Parser=x,new x}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(17).readFileSync(n(18).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(5),n(7)(t))},function(t,e,n){"use strict";var r=n(2),i=n(46),a=n(53),o=n(54),s=n(19);function u(t){s.call(this,"digest"),this._hash=t}r(u,s),u.prototype._update=function(t){this._hash.update(t)},u.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return"md5"===(t=t.toLowerCase())?new i:"rmd160"===t||"ripemd160"===t?new a:new u(o(t))}},function(t,e,n){(function(t){function n(t){return Object.prototype.toString.call(t)}e.isArray=function(t){return Array.isArray?Array.isArray(t):"[object Array]"===n(t)},e.isBoolean=function(t){return"boolean"==typeof t},e.isNull=function(t){return null===t},e.isNullOrUndefined=function(t){return null==t},e.isNumber=function(t){return"number"==typeof t},e.isString=function(t){return"string"==typeof t},e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=function(t){return void 0===t},e.isRegExp=function(t){return"[object RegExp]"===n(t)},e.isObject=function(t){return"object"==typeof t&&null!==t},e.isDate=function(t){return"[object Date]"===n(t)},e.isError=function(t){return"[object Error]"===n(t)||t instanceof Error},e.isFunction=function(t){return"function"==typeof t},e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=t.isBuffer}).call(this,n(6).Buffer)},function(t,e,n){(function(e){t.exports=function(t,n){for(var r=Math.min(t.length,n.length),i=new e(r),a=0;a<r;++a)i[a]=t[a]^n[a];return i}}).call(this,n(6).Buffer)},function(t,e,n){"use strict";var r=n(14),i=n(9);function a(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}e.BlockHash=a,a.prototype.update=function(t,e){if(t=r.toArray(t,e),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){var n=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-n,t.length),0===this.pending.length&&(this.pending=null),t=r.join32(t,0,t.length-n,this.endian);for(var i=0;i<t.length;i+=this._delta32)this._update(t,i,i+this._delta32)}return this},a.prototype.digest=function(t){return this.update(this._pad()),i(null===this.pending),this._digest(t)},a.prototype._pad=function(){var t=this.pendingTotal,e=this._delta8,n=e-(t+this.padLength)%e,r=new Array(n+this.padLength);r[0]=128;for(var i=1;i<n;i++)r[i]=0;if(t<<=3,"big"===this.endian){for(var a=8;a<this.padLength;a++)r[i++]=0;r[i++]=0,r[i++]=0,r[i++]=0,r[i++]=0,r[i++]=t>>>24&255,r[i++]=t>>>16&255,r[i++]=t>>>8&255,r[i++]=255&t}else for(r[i++]=255&t,r[i++]=t>>>8&255,r[i++]=t>>>16&255,r[i++]=t>>>24&255,r[i++]=0,r[i++]=0,r[i++]=0,r[i++]=0,a=8;a<this.padLength;a++)r[i++]=0;return r}},function(t,e,n){var r=e;r.bignum=n(4),r.define=n(186).define,r.base=n(31),r.constants=n(97),r.decoders=n(191),r.encoders=n(193)},function(t,e,n){var r=e;r.Reporter=n(188).Reporter,r.DecoderBuffer=n(96).DecoderBuffer,r.EncoderBuffer=n(96).EncoderBuffer,r.Node=n(189)},function(t,e,n){t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n.w={},n(n.s=27)}([function(t,e){t.exports=n(11)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.addDummyNode=o,e.simplify=s,e.asNonCompoundGraph=u,e.successorWeights=c,e.predecessorWeights=f,e.intersectRect=l,e.buildLayerMatrix=h,e.normalizeRanks=d,e.removeEmptyRanks=p,e.addBorderNode=g,e.maxRank=y,e.partition=b,e.time=m,e.notime=v;var r,i=(r=n(0))&&r.__esModule?r:{default:r},a=n(2);function o(t,e,n,r){var a=void 0;do{a=i.default.uniqueId(r)}while(t.hasNode(a));return n.dummy=e,t.setNode(a,n),a}function s(t){var e=(new a.Graph).setGraph(t.graph());return i.default.forEach(t.nodes(),(function(n){e.setNode(n,t.node(n))})),i.default.forEach(t.edges(),(function(n){var r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e}function u(t){var e=new a.Graph({multigraph:t.isMultigraph()}).setGraph(t.graph());return i.default.forEach(t.nodes(),(function(n){t.children(n).length||e.setNode(n,t.node(n))})),i.default.forEach(t.edges(),(function(n){e.setEdge(n,t.edge(n))})),e}function c(t){var e=i.default.map(t.nodes(),(function(e){var n={};return i.default.forEach(t.outEdges(e),(function(e){n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return i.default.zipObject(t.nodes(),e)}function f(t){var e=i.default.map(t.nodes(),(function(e){var n={};return i.default.forEach(t.inEdges(e),(function(e){n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return i.default.zipObject(t.nodes(),e)}function l(t,e){var n=t.x,r=t.y,i=e.x-n,a=e.y-r,o=t.width/2,s=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var u=void 0,c=void 0;return Math.abs(a)*o>Math.abs(i)*s?(a<0&&(s=-s),u=s*i/a,c=s):(i<0&&(o=-o),u=o,c=o*a/i),{x:n+u,y:r+c}}function h(t){var e=i.default.map(i.default.range(y(t)+1),(function(){return[]}));return i.default.forEach(t.nodes(),(function(n){var r=t.node(n),a=r.rank;i.default.isUndefined(a)||(e[a][r.order]=n)})),e}function d(t){var e=i.default.min(i.default.map(t.nodes(),(function(e){return t.node(e).rank})));i.default.forEach(t.nodes(),(function(n){var r=t.node(n);i.default.has(r,"rank")&&(r.rank-=e)}))}function p(t){var e=i.default.min(i.default.map(t.nodes(),(function(e){return t.node(e).rank}))),n=[];i.default.forEach(t.nodes(),(function(r){var i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));var r=0,a=t.graph().nodeRankFactor;i.default.forEach(n,(function(e,n){i.default.isUndefined(e)&&n%a!=0?--r:r&&i.default.forEach(e,(function(e){t.node(e).rank+=r}))}))}function g(t,e,n,r){var i={width:0,height:0};return arguments.length>=4&&(i.rank=n,i.order=r),o(t,"border",i,e)}function y(t){return i.default.max(i.default.map(t.nodes(),(function(e){var n=t.node(e).rank;if(!i.default.isUndefined(n))return n})))}function b(t,e){var n={lhs:[],rhs:[]};return i.default.forEach(t,(function(t){e(t)?n.lhs.push(t):n.rhs.push(t)})),n}function m(t,e){var n=i.default.now();try{return e()}finally{console.log(t+" time: "+(i.default.now()-n)+"ms")}}function v(t,e){return e()}e.default={addDummyNode:o,simplify:s,asNonCompoundGraph:u,successorWeights:c,predecessorWeights:f,intersectRect:l,buildLayerMatrix:h,normalizeRanks:d,removeEmptyRanks:p,addBorderNode:g,maxRank:y,partition:b,time:m,notime:v}},function(t,e){t.exports=n(20)},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.longestPath=a,e.slack=o;var r,i=(r=n(0))&&r.__esModule?r:{default:r};function a(t){var e={};i.default.forEach(t.sources(),(function n(r){var a=t.node(r);if(i.default.has(e,r))return a.rank;e[r]=!0;var o=i.default.min(i.default.map(t.outEdges(r),(function(e){return n(e.w)-t.edge(e).minlen})))||0;return a.rank=o}))}function o(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}e.default={longestPath:a,slack:o}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r},a=n(2),o=n(3);function s(t,e){return i.default.forEach(t.nodes(),(function n(r){i.default.forEach(e.nodeEdges(r),(function(i){var a=i.v,s=r===a?i.w:a;t.hasNode(s)||(0,o.slack)(e,i)||(t.setNode(s,{}),t.setEdge(r,s,{}),n(s))}))})),t.nodeCount()}function u(t,e){return i.default.minBy(e.edges(),(function(n){if(t.hasNode(n.v)!==t.hasNode(n.w))return(0,o.slack)(e,n)}))}function c(t,e,n){i.default.forEach(t.nodes(),(function(t){e.node(t).rank+=n}))}e.default=function(t){var e=new a.Graph({directed:!1}),n=t.nodes()[0],r=t.nodeCount();e.setNode(n,{});for(var i=void 0;s(e,t)<r;)i=u(e,t),c(e,t,e.hasNode(i.v)?(0,o.slack)(t,i):-(0,o.slack)(t,i));return e}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.positionX=y;var r=o(n(0)),i=n(2),a=o(n(1));function o(t){return t&&t.__esModule?t:{default:t}}function s(t,e){var n={};return r.default.reduce(e,(function(e,i){var a=0,o=0,s=e.length,u=r.default.last(i);return r.default.forEach(i,(function(e,f){var l=function(t,e){if(t.node(e).dummy)return r.default.find(t.predecessors(e),(function(e){return t.node(e).dummy}))}(t,e),h=l?t.node(l).order:s;(l||e===u)&&(r.default.forEach(i.slice(o,f+1),(function(e){r.default.forEach(t.predecessors(e),(function(r){var i=t.node(r),o=i.order;!(o<a||h<o)||i.dummy&&t.node(e).dummy||c(n,r,e)}))})),o=f+1,a=h)})),i})),n}function u(t,e){var n={};function i(e,i,a,o,s){var u=void 0;r.default.forEach(r.default.range(i,a),(function(i){u=e[i],t.node(u).dummy&&r.default.forEach(t.predecessors(u),(function(e){var r=t.node(e);r.dummy&&(r.order<o||r.order>s)&&c(n,e,u)}))}))}return r.default.reduce(e,(function(e,n){var a=-1,o=void 0,s=0;return r.default.forEach(n,(function(r,u){if("border"===t.node(r).dummy){var c=t.predecessors(r);c.length&&(o=t.node(c[0]).order,i(n,s,u,a,o),s=u,a=o)}i(n,s,n.length,o,e.length)})),n})),n}function c(t,e,n){if(e>n){var r=e;e=n,n=r}var i=t[e];i||(t[e]=i={}),i[n]=!0}function f(t,e,n){if(e>n){var i=e;e=n,n=i}return r.default.has(t[e],n)}function l(t,e,n,i){var a={},o={},s={};return r.default.forEach(e,(function(t){r.default.forEach(t,(function(t,e){a[t]=t,o[t]=t,s[t]=e}))})),r.default.forEach(e,(function(t){var e=-1;r.default.forEach(t,(function(t){var u=i(t);if(u.length)for(var c=((u=r.default.sortBy(u,(function(t){return s[t]}))).length-1)/2,l=Math.floor(c),h=Math.ceil(c);l<=h;++l){var d=u[l];o[t]===t&&e<s[d]&&!f(n,t,d)&&(o[d]=t,o[t]=a[t]=a[d],e=s[d])}}))})),{root:a,align:o}}function h(t,e,n,a,o){var s={},u=function(t,e,n,a){var o=new i.Graph,s=t.graph(),u=function(t,e,n){return function(i,a,o){var s=i.node(a),u=i.node(o),c=0,f=void 0;if(c+=s.width/2,r.default.has(s,"labelpos"))switch(s.labelpos.toLowerCase()){case"l":f=-s.width/2;break;case"r":f=s.width/2}if(f&&(c+=n?f:-f),f=0,c+=(s.dummy?e:t)/2,c+=(u.dummy?e:t)/2,c+=u.width/2,r.default.has(u,"labelpos"))switch(u.labelpos.toLowerCase()){case"l":f=u.width/2;break;case"r":f=-u.width/2}return f&&(c+=n?f:-f),f=0,c}}(s.nodesep,s.edgesep,a);return r.default.forEach(e,(function(e){var i=void 0;r.default.forEach(e,(function(e){var r=n[e];if(o.setNode(r),i){var a=n[i],s=o.edge(a,r);o.setEdge(a,r,Math.max(u(t,e,i),s||0))}i=e}))})),o}(t,e,n,o),c={};r.default.forEach(u.nodes(),(function t(e){r.default.has(c,e)||(c[e]=!0,s[e]=r.default.reduce(u.inEdges(e),(function(e,n){return t(n.v),Math.max(e,s[n.v]+u.edge(n))}),0))}));var f=o?"borderLeft":"borderRight";return r.default.forEach(u.nodes(),(function e(n){if(2!==c[n]){c[n]++;var i=t.node(n),a=r.default.reduce(u.outEdges(n),(function(t,n){return e(n.w),Math.min(t,s[n.w]-u.edge(n))}),Number.POSITIVE_INFINITY);a!==Number.POSITIVE_INFINITY&&i.borderType!==f&&(s[n]=Math.max(s[n],a))}})),r.default.forEach(a,(function(t){s[t]=s[n[t]]})),s}function d(t,e){return r.default.minBy(r.default.values(e),(function(e){var n=(r.default.minBy(r.default.toPairs(e),(function(e){return e[1]-b(t,e[0])/2}))||["k",0])[1];return(r.default.maxBy(r.default.toPairs(e),(function(e){return e[1]+b(t,e[0])/2}))||["k",0])[1]-n}))}function p(t,e){var n=r.default.values(e),i=r.default.min(n),a=r.default.max(n);r.default.forEach(["u","d"],(function(n){r.default.forEach(["l","r"],(function(o){var s=n+o,u=t[s];if(u!==e){var c=r.default.values(u),f="l"===o?i-r.default.min(c):a-r.default.max(c);f&&(t[s]=r.default.mapValues(u,(function(t){return t+f})))}}))}))}function g(t,e){return r.default.mapValues(t.ul,(function(n,i){if(e)return t[e.toLowerCase()][i];var a=r.default.sortBy(r.default.map(t,i));return(a[1]+a[2])/2}))}function y(t){var e=a.default.buildLayerMatrix(t),n=r.default.merge(s(t,e),u(t,e)),i={},o=void 0;r.default.forEach(["u","d"],(function(a){o="u"===a?e:r.default.values(e).reverse(),r.default.forEach(["l","r"],(function(e){"r"===e&&(o=r.default.map(o,(function(t){return r.default.values(t).reverse()})));var s=r.default.bind("u"===a?t.predecessors:t.successors,t),u=l(0,o,n,s),c=h(t,o,u.root,u.align,"r"===e);"r"===e&&(c=r.default.mapValues(c,(function(t){return-t}))),i[a+e]=c}))}));var c=d(t,i);return p(i,c),g(i,t.graph().align)}function b(t,e){return t.node(e).width}e.default={positionX:y,findType1Conflicts:s,findType2Conflicts:u,addConflict:c,hasConflict:f,verticalAlignment:l,horizontalCompaction:h,alignCoordinates:p,findSmallestWidthAlignment:d,balance:g}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=o(n(0)),i=o(n(1)),a=n(5);function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(t){(function(t){var e=i.default.buildLayerMatrix(t),n=t.graph().ranksep,a=0;r.default.forEach(e,(function(e){var i=r.default.max(r.default.map(e,(function(e){return t.node(e).height})));r.default.forEach(e,(function(e){t.node(e).y=a+i/2})),a+=i+n}))})(t=i.default.asNonCompoundGraph(t)),r.default.forEach((0,a.positionX)(t),(function(e,n){t.node(n).x=e}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t,e,n){var r={},a=void 0;i.default.forEach(n,(function(n){for(var i=t.parent(n),o=void 0,s=void 0;i;){if((o=t.parent(i))?(s=r[o],r[o]=i):(s=a,a=i),s&&s!==i)return void e.setEdge(s,i);i=o}}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r},a=n(2);e.default=function(t,e,n){var r=function(t){for(var e=void 0;t.hasNode(e=i.default.uniqueId("_root")););return e}(t),o=new a.Graph({compound:!0}).setGraph({root:r}).setDefaultNodeLabel((function(e){return t.node(e)}));return i.default.forEach(t.nodes(),(function(a){var s=t.node(a),u=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(o.setNode(a),o.setParent(a,u||r),i.default.forEach(t[n](a),(function(e){var n=e.v===a?e.w:e.v,r=o.edge(n,a),s=i.default.isUndefined(r)?0:r.weight;o.setEdge(n,a,{weight:t.edge(e).weight+s})})),i.default.has(s,"minRank")&&o.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))})),o}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(0)),i=a(n(1));function a(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n){for(var i=void 0;e.length&&(i=r.default.last(e)).i<=n;)e.pop(),t.push(i.vs),n++;return n}e.default=function(t,e){var n,a=i.default.partition(t,(function(t){return r.default.has(t,"barycenter")})),s=a.lhs,u=r.default.sortBy(a.rhs,(function(t){return-t.i})),c=[],f=0,l=0,h=0;s.sort((n=!!e,function(t,e){return t.barycenter<e.barycenter?-1:t.barycenter>e.barycenter?1:n?e.i-t.i:t.i-e.i})),h=o(c,u,h),r.default.forEach(s,(function(t){h+=t.vs.length,c.push(t.vs),f+=t.barycenter*t.weight,l+=t.weight,h=o(c,u,h)}));var d={vs:r.default.flatten(c,!0)};return l&&(d.barycenter=f/l,d.weight=l),d}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t,e){var n={};return i.default.forEach(t,(function(t,e){var r=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};i.default.isUndefined(t.barycenter)||(r.barycenter=t.barycenter,r.weight=t.weight)})),i.default.forEach(e.edges(),(function(t){var e=n[t.v],r=n[t.w];i.default.isUndefined(e)||i.default.isUndefined(r)||(r.indegree++,e.out.push(n[t.w]))})),function(t){var e=[];function n(t){return function(e){var n,r,a,o;e.merged||(i.default.isUndefined(e.barycenter)||i.default.isUndefined(t.barycenter)||e.barycenter>=t.barycenter)&&(r=e,a=0,o=0,(n=t).weight&&(a+=n.barycenter*n.weight,o+=n.weight),r.weight&&(a+=r.barycenter*r.weight,o+=r.weight),n.vs=r.vs.concat(n.vs),n.barycenter=a/o,n.weight=o,n.i=Math.min(r.i,n.i),r.merged=!0)}}function r(e){return function(n){n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){var a=t.pop();e.push(a),i.default.forEach(a.in.reverse(),n(a)),i.default.forEach(a.out,r(a))}return i.default.chain(e).filter((function(t){return!t.merged})).map((function(t){return i.default.pick(t,["vs","i","barycenter","weight"])})).value()}(i.default.filter(n,(function(t){return!t.indegree})))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t,e){return i.default.map(e,(function(e){var n=t.inEdges(e);if(n.length){var r=i.default.reduce(n,(function(e,n){var r=t.edge(n),i=t.node(n.v);return{sum:e.sum+r.weight*i.order,weight:e.weight+r.weight}}),{sum:0,weight:0});return{v:e,barycenter:r.sum/r.weight,weight:r.weight}}return{v:e}}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=s(n(0)),i=s(n(11)),a=s(n(10)),o=s(n(9));function s(t){return t&&t.__esModule?t:{default:t}}e.default=function t(e,n,s,u){var c=e.children(n),f=e.node(n),l=f?f.borderLeft:void 0,h=f?f.borderRight:void 0,d={};l&&(c=r.default.filter(c,(function(t){return t!==l&&t!==h})));var p=(0,i.default)(e,c);r.default.forEach(p,(function(n){if(e.children(n.v).length){var i=t(e,n.v,s,u);d[n.v]=i,r.default.has(i,"barycenter")&&(a=n,o=i,r.default.isUndefined(a.barycenter)?(a.barycenter=o.barycenter,a.weight=o.weight):(a.barycenter=(a.barycenter*a.weight+o.barycenter*o.weight)/(a.weight+o.weight),a.weight+=o.weight))}var a,o}));var g=(0,a.default)(p,s);!function(t,e){r.default.forEach(t,(function(t){t.vs=r.default.flatten(t.vs.map((function(t){return e[t]?e[t].vs:t})),!0)}))}(g,d);var y=(0,o.default)(g,u);if(l&&(y.vs=r.default.flatten([l,y.vs,h],!0),e.predecessors(l).length)){var b=e.node(e.predecessors(l)[0]),m=e.node(e.predecessors(h)[0]);r.default.has(y,"barycenter")||(y.barycenter=0,y.weight=0),y.barycenter=(y.barycenter*y.weight+b.order+m.order)/(y.weight+2),y.weight+=2}return y}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};function a(t,e,n){for(var r=i.default.zipObject(n,i.default.map(n,(function(t,e){return e}))),a=i.default.flatten(i.default.map(e,(function(e){return i.default.chain(t.outEdges(e)).map((function(e){return{pos:r[e.w],weight:t.edge(e).weight}})).sortBy("pos").value()})),!0),o=1;o<n.length;)o<<=1;var s=2*o-1;o-=1;var u=i.default.map(new Array(s),(function(){return 0})),c=0;return i.default.forEach(a.forEach((function(t){var e=t.pos+o;u[e]+=t.weight;for(var n=0;e>0;)e%2&&(n+=u[e+1]),u[e=e-1>>1]+=t.weight;c+=t.weight*n}))),c}e.default=function(t,e){for(var n=0,r=1;r<e.length;++r)n+=a(t,e[r-1],e[r]);return n}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t){var e={},n=i.default.filter(t.nodes(),(function(e){return!t.children(e).length})),r=i.default.max(i.default.map(n,(function(e){return t.node(e).rank}))),a=i.default.map(i.default.range(r+1),(function(){return[]})),o=i.default.sortBy(n,(function(e){return t.node(e).rank}));return i.default.forEach(o,(function n(r){if(!i.default.has(e,r)){e[r]=!0;var o=t.node(r);a[o.rank].push(r),i.default.forEach(t.successors(r),n)}})),a}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=l(n(0)),i=n(2),a=l(n(14)),o=l(n(13)),s=l(n(12)),u=l(n(8)),c=l(n(7)),f=l(n(1));function l(t){return t&&t.__esModule?t:{default:t}}function h(t,e,n){return r.default.map(e,(function(e){return(0,u.default)(t,e,n)}))}function d(t,e){var n=new i.Graph;r.default.forEach(t,(function(t){var i=t.graph().root,a=(0,s.default)(t,i,n,e);r.default.forEach(a.vs,(function(e,n){t.node(e).order=n})),(0,c.default)(t,n,a.vs)}))}function p(t,e){r.default.forEach(e,(function(e){r.default.forEach(e,(function(e,n){t.node(e).order=n}))}))}e.default=function(t){var e=f.default.maxRank(t),n=h(t,r.default.range(1,e+1),"inEdges"),i=h(t,r.default.range(e-1,-1,-1),"outEdges"),s=(0,a.default)(t);p(t,s);for(var u=Number.POSITIVE_INFINITY,c=void 0,l=0,g=0;g<4;++l,++g){d(l%2?n:i,l%4>=2),s=f.default.buildLayerMatrix(t);var y=(0,o.default)(t,s);y<u&&(g=0,c=r.default.cloneDeep(s),u=y)}p(t,c)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};function a(t){i.default.forEach(t.nodes(),(function(e){o(t.node(e))})),i.default.forEach(t.edges(),(function(e){o(t.edge(e))}))}function o(t){var e=t.width;t.width=t.height,t.height=e}function s(t){t.y=-t.y}function u(t){var e=t.x;t.x=t.y,t.y=e}e.default={adjust:function(t){var e=t.graph().rankdir.toLowerCase();"lr"!==e&&"rl"!==e||a(t)},undo:function(t){var e=t.graph().rankdir.toLowerCase();"bt"!==e&&"rl"!==e||function(t){i.default.forEach(t.nodes(),(function(e){s(t.node(e))})),i.default.forEach(t.edges(),(function(e){var n=t.edge(e);i.default.forEach(n.points,s),i.default.has(n,"y")&&s(n)}))}(t),"lr"!==e&&"rl"!==e||(function(t){i.default.forEach(t.nodes(),(function(e){u(t.node(e))})),i.default.forEach(t.edges(),(function(e){var n=t.edge(e);i.default.forEach(n.points,u),i.default.has(n,"x")&&u(n)}))}(t),a(t))}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(0)),i=a(n(1));function a(t){return t&&t.__esModule?t:{default:t}}function o(t,e,n,r,a,o){var s={width:0,height:0,rank:o,borderType:e},u=a[e][o-1],c=i.default.addDummyNode(t,"border",s,n);a[e][o]=c,t.setParent(c,r),u&&t.setEdge(u,c,{weight:1})}e.default=function(t){r.default.forEach(t.children(),(function e(n){var i=t.children(n),a=t.node(n);if(i.length&&r.default.forEach(i,e),r.default.has(a,"minRank")){a.borderLeft=[],a.borderRight=[];for(var s=a.minRank,u=a.maxRank+1;s<u;++s)o(t,"borderLeft","_bl",n,a,s),o(t,"borderRight","_br",n,a,s)}}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(0)),i=a(n(1));function a(t){return t&&t.__esModule?t:{default:t}}e.default={run:function(t){var e=i.default.addDummyNode(t,"root",{},"_root"),n=function(t){var e={};return r.default.forEach(t.children(),(function(n){!function n(i,a){var o=t.children(i);o&&o.length&&r.default.forEach(o,(function(t){n(t,a+1)})),e[i]=a}(n,1)})),e}(t),a=r.default.max(r.default.values(n))-1,o=2*a+1;t.graph().nestingRoot=e,r.default.forEach(t.edges(),(function(e){t.edge(e).minlen*=o}));var s=function(t){return r.default.reduce(t.edges(),(function(e,n){return e+t.edge(n).weight}),0)}(t)+1;r.default.forEach(t.children(),(function(u){!function t(e,n,a,o,s,u,c){var f=e.children(c);if(f.length){var l=i.default.addBorderNode(e,"_bt"),h=i.default.addBorderNode(e,"_bb"),d=e.node(c);e.setParent(l,c),d.borderTop=l,e.setParent(h,c),d.borderBottom=h,r.default.forEach(f,(function(r){t(e,n,a,o,s,u,r);var i=e.node(r),f=i.borderTop?i.borderTop:r,d=i.borderBottom?i.borderBottom:r,p=i.borderTop?o:2*o,g=f!==d?1:s-u[c]+1;e.setEdge(l,f,{weight:p,minlen:g,nestingEdge:!0}),e.setEdge(d,h,{weight:p,minlen:g,nestingEdge:!0})})),e.parent(c)||e.setEdge(n,l,{weight:0,minlen:s+u[c]})}else c!==n&&e.setEdge(n,c,{weight:0,minlen:a})}(t,e,o,s,a,n,u)})),t.graph().nodeRankFactor=o},cleanup:function(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,r.default.forEach(t.edges(),(function(e){t.edge(e).nestingEdge&&t.removeEdge(e)}))}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(0))&&r.__esModule?r:{default:r};e.default=function(t){var e=function(t){var e={},n=0;return i.default.forEach(t.children(),(function r(a){var o=n;i.default.forEach(t.children(a),r),e[a]={low:o,lim:n++}})),e}(t);i.default.forEach(t.graph().dummyChains,(function(n){for(var r=t.node(n),i=r.edgeObj,a=function(t,e,n,r){var i,a=[],o=[],s=Math.min(e[n].low,e[r].low),u=Math.max(e[n].lim,e[r].lim),c=void 0;c=n;do{c=t.parent(c),a.push(c)}while(c&&(e[c].low>s||u>e[c].lim));for(i=c,c=r;(c=t.parent(c))!==i;)o.push(c);return{path:a.concat(o.reverse()),lca:i}}(t,e,i.v,i.w),o=a.path,s=a.lca,u=0,c=o[u],f=!0;n!==i.w;){if(r=t.node(n),f){for(;(c=o[u])!==s&&t.node(c).maxRank<r.rank;)u++;c===s&&(f=!1)}if(!f){for(;u<o.length-1&&t.node(c=o[u+1]).minRank<=r.rank;)u++;c=o[u]}t.setParent(n,c),n=t.successors(n)[0]}}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=u(n(0)),i=n(2),a=u(n(4)),o=n(3),s=n(1);function u(t){return t&&t.__esModule?t:{default:t}}var c=i.alg.preorder,f=i.alg.postorder;function l(t){t=(0,s.simplify)(t),(0,o.longestPath)(t);var e=(0,a.default)(t);p(e),h(e,t);for(var n=void 0;n=g(e);)b(e,t,n,y(e,t,n))}function h(t,e){var n=f(t,t.nodes());n=n.slice(0,n.length-1),r.default.forEach(n,(function(n){!function(t,e,n){var r=t.node(n).parent;t.edge(n,r).cutvalue=d(t,e,n)}(t,e,n)}))}function d(t,e,n){var i=t.node(n).parent,a=!0,o=e.edge(n,i),s=0;return o||(a=!1,o=e.edge(i,n)),s=o.weight,r.default.forEach(e.nodeEdges(n),(function(r){var o,u,c=r.v===n,f=c?r.w:r.v;if(f!==i){var l=c===a,h=e.edge(r).weight;if(s+=l?h:-h,o=n,u=f,t.hasEdge(o,u)){var d=t.edge(n,f).cutvalue;s+=l?-d:d}}})),s}function p(t,e){arguments.length<2&&(e=t.nodes()[0]),function t(e,n,i,a,o){var s=i,u=e.node(a);return n[a]=!0,r.default.forEach(e.neighbors(a),(function(o){r.default.has(n,o)||(i=t(e,n,i,o,a))})),u.low=s,u.lim=i++,o?u.parent=o:delete u.parent,i}(t,{},1,e)}function g(t){return r.default.find(t.edges(),(function(e){return t.edge(e).cutvalue<0}))}function y(t,e,n){var i=n.v,a=n.w;e.hasEdge(i,a)||(i=n.w,a=n.v);var s=t.node(i),u=t.node(a),c=s,f=!1;s.lim>u.lim&&(c=u,f=!0);var l=r.default.filter(e.edges(),(function(e){return f===m(t,t.node(e.v),c)&&f!==m(t,t.node(e.w),c)}));return r.default.minBy(l,(function(t){return(0,o.slack)(e,t)}))}function b(t,e,n,i){var a=n.v,o=n.w;t.removeEdge(a,o),t.setEdge(i.v,i.w,{}),p(t),h(t,e),function(t,e){var n=r.default.find(t.nodes(),(function(t){return!e.node(t).parent})),i=c(t,n);i=i.slice(1),r.default.forEach(i,(function(n){var r=t.node(n).parent,i=e.edge(n,r),a=!1;i||(i=e.edge(r,n),a=!0),e.node(n).rank=e.node(r).rank+(a?i.minlen:-i.minlen)}))}(t,e)}function m(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}l.initLowLimValues=p,l.initCutValues=h,l.calcCutValue=d,l.leaveEdge=g,l.enterEdge=y,l.exchangeEdges=b,e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=o(n(4)),a=o(n(20));function o(t){return t&&t.__esModule?t:{default:t}}var s=r.longestPath;function u(t){(0,a.default)(t)}e.default=function(t){switch(t.graph().ranker){case"network-simplex":u(t);break;case"tight-tree":!function(t){(0,r.longestPath)(t),(0,i.default)(t)}(t);break;case"longest-path":s(t);break;default:u(t)}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(0)),i=a(n(1));function a(t){return t&&t.__esModule?t:{default:t}}e.default={run:function(t){t.graph().dummyChains=[],r.default.forEach(t.edges(),(function(e){!function(t,e){var n=e.v,r=t.node(n).rank,a=e.w,o=t.node(a).rank,s=e.name,u=t.edge(e),c=u.labelRank;if(o!==r+1){t.removeEdge(e);var f=void 0,l=void 0,h=void 0;for(h=0,++r;r<o;++h,++r)u.points=[],l={width:0,height:0,edgeLabel:u,edgeObj:e,rank:r},f=i.default.addDummyNode(t,"edge",l,"_d"),r===c&&(l.width=u.width,l.height=u.height,l.dummy="edge-label",l.labelpos=u.labelpos),t.setEdge(n,f,{weight:u.weight},s),0===h&&t.graph().dummyChains.push(f),n=f;t.setEdge(n,a,{weight:u.weight},s)}}(t,e)}))},undo:function(t){r.default.forEach(t.graph().dummyChains,(function(e){var n=t.node(e),r=n.edgeLabel,i=null;for(t.setEdge(n.edgeObj,r);n.dummy;)i=t.successors(e)[0],t.removeNode(e),r.points.push({x:n.x,y:n.y}),"edge-label"===n.dummy&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),e=i,n=t.node(e)}))}}},function(t,e,n){"use strict";function r(){var t={};t._next=t._prev=t,this._sentinel=t}function i(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function a(t,e){if("_next"!==t&&"_prev"!==t)return e}Object.defineProperty(e,"__esModule",{value:!0}),r.prototype.dequeue=function(){var t=this._sentinel,e=t._prev;if(e!==t)return i(e),e},r.prototype.enqueue=function(t){var e=this._sentinel;t._prev&&t._next&&i(t),t._next=e._next,e._next._prev=t,e._next=t,t._prev=e},r.prototype.toString=function(){for(var t=[],e=this._sentinel,n=e._prev;n!==e;)t.push(JSON.stringify(n,a)),n=n._prev;return"["+t.join(", ")+"]"},e.default=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=o(n(0)),i=n(2),a=o(n(23));function o(t){return t&&t.__esModule?t:{default:t}}var s=r.default.constant(1);function u(t,e,n,i,a){var o=a?[]:void 0;return r.default.forEach(t.inEdges(i.v),(function(r){var i=t.edge(r),s=t.node(r.v);a&&o.push({v:r.v,w:r.w}),s.out-=i,c(e,n,s)})),r.default.forEach(t.outEdges(i.v),(function(r){var i=t.edge(r),a=r.w,o=t.node(a);o.in-=i,c(e,n,o)})),t.removeNode(i.v),o}function c(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}e.default=function(t,e){if(t.nodeCount()<=1)return[];var n=function(t,e){var n=new i.Graph,o=0,s=0;r.default.forEach(t.nodes(),(function(t){n.setNode(t,{v:t,in:0,out:0})})),r.default.forEach(t.edges(),(function(t){var r=n.edge(t.v,t.w)||0,i=e(t),a=r+i;n.setEdge(t.v,t.w,a),s=Math.max(s,n.node(t.v).out+=i),o=Math.max(o,n.node(t.w).in+=i)}));var u=r.default.range(s+o+3).map((function(){return new a.default})),f=o+1;return r.default.forEach(n.nodes(),(function(t){c(u,f,n.node(t))})),{graph:n,buckets:u,zeroIdx:f}}(t,e||s),o=function(t,e,n){for(var r=[],i=e[e.length-1],a=e[0],o=void 0;t.nodeCount();){for(;o=a.dequeue();)u(t,e,n,o);for(;o=i.dequeue();)u(t,e,n,o);if(t.nodeCount())for(var s=e.length-2;s>0;--s)if(o=e[s].dequeue()){r=r.concat(u(t,e,n,o,!0));break}}return r}(n.graph,n.buckets,n.zeroIdx);return r.default.flatten(r.default.map(o,(function(e){return t.outEdges(e.v,e.w)})),!0)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(0)),i=a(n(24));function a(t){return t&&t.__esModule?t:{default:t}}e.default={run:function(t){var e="greedy"===t.graph().acyclicer?(0,i.default)(t,function(t){return function(e){return t.edge(e).weight}}(t)):function(t){var e=[],n={},i={};return r.default.forEach(t.nodes(),(function a(o){r.default.has(i,o)||(i[o]=!0,n[o]=!0,r.default.forEach(t.outEdges(o),(function(t){r.default.has(n,t.w)?e.push(t):a(t.w)})),delete n[o])})),e}(t);r.default.forEach(e,(function(e){var n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,r.default.uniqueId("rev"))}))},undo:function(t){r.default.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.reversed){t.removeEdge(e);var r=n.forwardName;delete n.reversed,delete n.forwardName,t.setEdge(e.w,e.v,n,r)}}))}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=y(n(0)),i=n(2),a=y(n(25)),o=y(n(22)),s=y(n(21)),u=n(1),c=y(u),f=y(n(19)),l=y(n(18)),h=y(n(17)),d=y(n(16)),p=y(n(15)),g=y(n(6));function y(t){return t&&t.__esModule?t:{default:t}}var b=["nodesep","edgesep","ranksep","marginx","marginy"],m={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},v=["acyclicer","ranker","rankdir","align"],_=["width","height"],w={width:0,height:0},x=["minlen","weight","width","height","labeloffset"],k={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},E=["labelpos"];function A(t,e){return r.default.mapValues(r.default.pick(t,e),Number)}function S(t){var e={};return r.default.forEach(t,(function(t,n){e[n.toLowerCase()]=t})),e}e.default=function(t,e){var n=e&&e.debugTiming?c.default.time:c.default.notime;n("layout",(function(){var e=n("  buildLayoutGraph",(function(){return function(t){var e=new i.Graph({multigraph:!0,compound:!0}),n=S(t.graph());return e.setGraph(r.default.merge({},m,A(n,b),r.default.pick(n,v))),r.default.forEach(t.nodes(),(function(n){var i=S(t.node(n));e.setNode(n,r.default.defaults(A(i,_),w)),e.setParent(n,t.parent(n))})),r.default.forEach(t.edges(),(function(n){var i=S(t.edge(n));e.setEdge(n,r.default.merge({},k,A(i,x),r.default.pick(i,E)))})),e}(t)}));n("  runLayout",(function(){!function(t,e){e("    makeSpaceForEdgeLabels",(function(){!function(t){var e=t.graph();e.ranksep/=2,r.default.forEach(t.edges(),(function(n){var r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t)})),e("    removeSelfEdges",(function(){!function(t){r.default.forEach(t.edges(),(function(e){if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e:e,label:t.edge(e)}),t.removeEdge(e)}}))}(t)})),e("    acyclic",(function(){a.default.run(t)})),e("    nestingGraph.run",(function(){l.default.run(t)})),e("    rank",(function(){(0,s.default)(c.default.asNonCompoundGraph(t))})),e("    injectEdgeLabelProxies",(function(){!function(t){r.default.forEach(t.edges(),(function(e){var n=t.edge(e);if(n.width&&n.height){var r=t.node(e.v),i={rank:(t.node(e.w).rank-r.rank)/2+r.rank,e:e};c.default.addDummyNode(t,"edge-proxy",i,"_ep")}}))}(t)})),e("    removeEmptyRanks",(function(){(0,u.removeEmptyRanks)(t)})),e("    nestingGraph.cleanup",(function(){l.default.cleanup(t)})),e("    normalizeRanks",(function(){(0,u.normalizeRanks)(t)})),e("    assignRankMinMax",(function(){!function(t){var e=0;r.default.forEach(t.nodes(),(function(n){var r=t.node(n);r.borderTop&&(r.minRank=t.node(r.borderTop).rank,r.maxRank=t.node(r.borderBottom).rank,e=Math.max(e,r.maxRank))})),t.graph().maxRank=e}(t)})),e("    removeEdgeLabelProxies",(function(){!function(t){r.default.forEach(t.nodes(),(function(e){var n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t)})),e("    normalize.run",(function(){o.default.run(t)})),e("    parentDummyChains",(function(){(0,f.default)(t)})),e("    addBorderSegments",(function(){(0,h.default)(t)})),e("    order",(function(){(0,p.default)(t)})),e("    insertSelfEdges",(function(){!function(t){var e=c.default.buildLayerMatrix(t);r.default.forEach(e,(function(e){var n=0;r.default.forEach(e,(function(e,i){var a=t.node(e);a.order=i+n,r.default.forEach(a.selfEdges,(function(e){c.default.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:a.rank,order:i+ ++n,e:e.e,label:e.label},"_se")})),delete a.selfEdges}))}))}(t)})),e("    adjustCoordinateSystem",(function(){d.default.adjust(t)})),e("    position",(function(){(0,g.default)(t)})),e("    positionSelfEdges",(function(){!function(t){r.default.forEach(t.nodes(),(function(e){var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,a=r.y,o=n.x-i,s=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*o/3,y:a-s},{x:i+5*o/6,y:a-s},{x:i+o,y:a},{x:i+5*o/6,y:a+s},{x:i+2*o/3,y:a+s}],n.label.x=n.x,n.label.y=n.y}}))}(t)})),e("    removeBorderNodes",(function(){!function(t){r.default.forEach(t.nodes(),(function(e){if(t.children(e).length){var n=t.node(e),i=t.node(n.borderTop),a=t.node(n.borderBottom),o=t.node(r.default.last(n.borderLeft)),s=t.node(r.default.last(n.borderRight));n.width=Math.abs(s.x-o.x),n.height=Math.abs(a.y-i.y),n.x=o.x+n.width/2,n.y=i.y+n.height/2}})),r.default.forEach(t.nodes(),(function(e){"border"===t.node(e).dummy&&t.removeNode(e)}))}(t)})),e("    normalize.undo",(function(){o.default.undo(t)})),e("    fixupEdgeLabelCoords",(function(){!function(t){r.default.forEach(t.edges(),(function(e){var n=t.edge(e);if(r.default.has(n,"x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t)})),e("    undoCoordinateSystem",(function(){d.default.undo(t)})),e("    translateGraph",(function(){!function(t){var e=Number.POSITIVE_INFINITY,n=0,i=Number.POSITIVE_INFINITY,a=0,o=t.graph(),s=o.marginx||0,u=o.marginy||0;function c(t){var r=t.x,o=t.y,s=t.width,u=t.height;e=Math.min(e,r-s/2),n=Math.max(n,r+s/2),i=Math.min(i,o-u/2),a=Math.max(a,o+u/2)}r.default.forEach(t.nodes(),(function(e){c(t.node(e))})),r.default.forEach(t.edges(),(function(e){var n=t.edge(e);r.default.has(n,"x")&&c(n)})),e-=s,i-=u,r.default.forEach(t.nodes(),(function(n){var r=t.node(n);r.x-=e,r.y-=i})),r.default.forEach(t.edges(),(function(n){var a=t.edge(n);r.default.forEach(a.points,(function(t){t.x-=e,t.y-=i})),r.default.has(a,"x")&&(a.x-=e),r.default.has(a,"y")&&(a.y-=i)})),o.width=n-e+s,o.height=a-i+u}(t)})),e("    assignNodeIntersects",(function(){!function(t){r.default.forEach(t.edges(),(function(e){var n=t.edge(e),r=t.node(e.v),i=t.node(e.w),a=null,o=null;n.points?(a=n.points[0],o=n.points[n.points.length-1]):(n.points=[],a=i,o=r),n.points.unshift(c.default.intersectRect(r,a)),n.points.push(c.default.intersectRect(i,o))}))}(t)})),e("    reversePoints",(function(){!function(t){r.default.forEach(t.edges(),(function(e){var n=t.edge(e);n.reversed&&n.points.reverse()}))}(t)})),e("    acyclic.undo",(function(){a.default.undo(t)}))}(e,n)})),n("  updateInputGraph",(function(){!function(t,e){r.default.forEach(t.nodes(),(function(n){var r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,e.children(n).length&&(r.width=i.width,r.height=i.height))})),r.default.forEach(t.edges(),(function(n){var i=t.edge(n),a=e.edge(n);i.points=a.points,r.default.has(a,"x")&&(i.x=a.x,i.y=a.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,e)}))}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,i=(r=n(26))&&r.__esModule?r:{default:r};e.default={layout:i.default}}])},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[1,4],n=[1,3],r=[1,5],i=[1,8,9,10,11,26,89,90,91,92,93,94,106,107,110,111,112,114,115,121,122,123,124,125,126],a=[2,2],o=[1,12],s=[1,13],u=[1,14],c=[1,15],f=[1,22],l=[1,24],h=[1,25],d=[1,26],p=[1,27],g=[1,28],y=[1,40],b=[1,35],m=[1,37],v=[1,32],_=[1,36],w=[1,39],x=[1,43],k=[1,44],E=[1,45],A=[1,34],S=[1,38],M=[1,41],T=[1,42],D=[1,33],C=[1,50],O=[1,8,9,10,11,26,30,89,90,91,92,93,94,106,107,110,111,112,114,115,121,122,123,124,125,126],R=[1,54],N=[1,53],I=[1,55],B=[8,9,11,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],L=[8,9,11,34,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],P=[8,9,10,11,28,34,36,38,40,42,43,45,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,94,106,107,110,111,112,114,115,121,122,123,124,125,126],F=[94,106,107,110,111,112,114,115,121,122,123,124,125,126],q=[1,129],j=[1,149],U=[1,150],z=[1,151],Y=[1,152],H=[1,123],V=[1,125],$=[1,124],G=[1,120],W=[1,144],K=[1,145],X=[1,146],Z=[1,147],J=[1,148],Q=[1,153],tt=[1,154],et=[1,127],nt=[1,126],rt=[1,134],it=[1,137],at=[1,135],ot=[1,136],st=[1,130],ut=[1,142],ct=[1,141],ft=[1,122],lt=[1,132],ht=[1,133],dt=[1,138],pt=[1,139],gt=[1,140],yt=[1,143],bt=[49,83,94,106,107,110,111,112,114,115,121,122,123,124,125,126],mt=[8,9,10,11,26,30,89,90,91,92,93,94,106,107,110,111,112,114,115,121,122,123,124,125,126],vt=[1,171],_t=[1,173],wt=[1,174],xt=[8,9,10,11,12,13,26,28,29,30,37,39,41,42,44,46,50,51,53,55,57,59,61,63,65,66,67,69,71,73,83,89,90,91,92,93,94,95,98,105,106,107,110,111,112,114,115,117,121,122,123,124,125,126],kt=[8,9,10,11,13,94,106,107,110,111,112,114,115,121,122,123,124,125,126],Et=[10,107],At=[1,252],St=[1,256],Mt=[1,253],Tt=[1,257],Dt=[1,250],Ct=[1,247],Ot=[1,248],Rt=[1,249],Nt=[1,251],It=[1,254],Bt=[1,255],Lt=[8,9,11],Pt=[1,282],Ft=[8,9,11,107],qt=[8,9,10,11,89,101,105,106,107,110,111,112,113,114,115],jt={trace:function(){},yy:{},symbols_:{error:2,mermaidDoc:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,DIR:13,FirstStmtSeperator:14,ending:15,endToken:16,spaceList:17,spaceListNewline:18,verticeStatement:19,separator:20,styleStatement:21,linkStyleStatement:22,classDefStatement:23,classStatement:24,clickStatement:25,subgraph:26,text:27,SQS:28,SQE:29,end:30,link:31,node:32,vertex:33,STYLE_SEPARATOR:34,idString:35,PS:36,PE:37,"(-":38,"-)":39,DIAMOND_START:40,DIAMOND_STOP:41,TAGEND:42,TRAPSTART:43,TRAPEND:44,INVTRAPSTART:45,INVTRAPEND:46,linkStatement:47,arrowText:48,TESTSTR:49,"--":50,ARROW_POINT:51,START_DOUBLE_ARROW_POINT:52,ARROW_CIRCLE:53,START_DOUBLE_ARROW_CIRCLE:54,ARROW_CROSS:55,START_DOUBLE_ARROW_CROSS:56,ARROW_OPEN:57,"-.":58,DOTTED_ARROW_POINT:59,START_DOUBLE_DOTTED_ARROW_POINT:60,DOTTED_ARROW_CIRCLE:61,START_DOUBLE_DOTTED_ARROW_CIRCLE:62,DOTTED_ARROW_CROSS:63,START_DOUBLE_DOTTED_ARROW_CROSS:64,DOTTED_ARROW_OPEN:65,"==":66,THICK_ARROW_POINT:67,START_DOUBLE_THICK_ARROW_POINT:68,THICK_ARROW_CIRCLE:69,START_DOUBLE_THICK_ARROW_CIRCLE:70,THICK_ARROW_CROSS:71,START_DOUBLE_THICK_ARROW_CROSS:72,THICK_ARROW_OPEN:73,DOUBLE_ARROW_POINT:74,DOUBLE_ARROW_CIRCLE:75,DOUBLE_ARROW_CROSS:76,DOUBLE_DOTTED_ARROW_POINT:77,DOUBLE_DOTTED_ARROW_CIRCLE:78,DOUBLE_DOTTED_ARROW_CROSS:79,DOUBLE_THICK_ARROW_POINT:80,DOUBLE_THICK_ARROW_CIRCLE:81,DOUBLE_THICK_ARROW_CROSS:82,PIPE:83,textToken:84,STR:85,commentText:86,commentToken:87,keywords:88,STYLE:89,LINKSTYLE:90,CLASSDEF:91,CLASS:92,CLICK:93,DOWN:94,UP:95,textNoTags:96,textNoTagsToken:97,DEFAULT:98,stylesOpt:99,alphaNum:100,HEX:101,numList:102,INTERPOLATE:103,commentStatement:104,PCT:105,NUM:106,COMMA:107,style:108,styleComponent:109,ALPHA:110,COLON:111,MINUS:112,UNIT:113,BRKT:114,DOT:115,graphCodeTokens:116,TAGSTART:117,alphaNumToken:118,idStringToken:119,alphaNumStatement:120,PUNCTUATION:121,UNICODE_TEXT:122,PLUS:123,EQUALS:124,MULT:125,UNDERSCORE:126,QUOTE:127,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"DIR",26:"subgraph",28:"SQS",29:"SQE",30:"end",34:"STYLE_SEPARATOR",36:"PS",37:"PE",38:"(-",39:"-)",40:"DIAMOND_START",41:"DIAMOND_STOP",42:"TAGEND",43:"TRAPSTART",44:"TRAPEND",45:"INVTRAPSTART",46:"INVTRAPEND",49:"TESTSTR",50:"--",51:"ARROW_POINT",52:"START_DOUBLE_ARROW_POINT",53:"ARROW_CIRCLE",54:"START_DOUBLE_ARROW_CIRCLE",55:"ARROW_CROSS",56:"START_DOUBLE_ARROW_CROSS",57:"ARROW_OPEN",58:"-.",59:"DOTTED_ARROW_POINT",60:"START_DOUBLE_DOTTED_ARROW_POINT",61:"DOTTED_ARROW_CIRCLE",62:"START_DOUBLE_DOTTED_ARROW_CIRCLE",63:"DOTTED_ARROW_CROSS",64:"START_DOUBLE_DOTTED_ARROW_CROSS",65:"DOTTED_ARROW_OPEN",66:"==",67:"THICK_ARROW_POINT",68:"START_DOUBLE_THICK_ARROW_POINT",69:"THICK_ARROW_CIRCLE",70:"START_DOUBLE_THICK_ARROW_CIRCLE",71:"THICK_ARROW_CROSS",72:"START_DOUBLE_THICK_ARROW_CROSS",73:"THICK_ARROW_OPEN",74:"DOUBLE_ARROW_POINT",75:"DOUBLE_ARROW_CIRCLE",76:"DOUBLE_ARROW_CROSS",77:"DOUBLE_DOTTED_ARROW_POINT",78:"DOUBLE_DOTTED_ARROW_CIRCLE",79:"DOUBLE_DOTTED_ARROW_CROSS",80:"DOUBLE_THICK_ARROW_POINT",81:"DOUBLE_THICK_ARROW_CIRCLE",82:"DOUBLE_THICK_ARROW_CROSS",83:"PIPE",85:"STR",89:"STYLE",90:"LINKSTYLE",91:"CLASSDEF",92:"CLASS",93:"CLICK",94:"DOWN",95:"UP",98:"DEFAULT",101:"HEX",103:"INTERPOLATE",105:"PCT",106:"NUM",107:"COMMA",110:"ALPHA",111:"COLON",112:"MINUS",113:"UNIT",114:"BRKT",115:"DOT",117:"TAGSTART",121:"PUNCTUATION",122:"UNICODE_TEXT",123:"PLUS",124:"EQUALS",125:"MULT",126:"UNDERSCORE",127:"QUOTE"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,3],[15,2],[15,1],[16,1],[16,1],[16,1],[14,1],[14,1],[14,2],[18,2],[18,2],[18,1],[18,1],[17,2],[17,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[20,1],[20,1],[20,1],[19,3],[19,1],[32,1],[32,3],[33,4],[33,5],[33,6],[33,7],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,6],[33,7],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,4],[33,5],[33,1],[33,2],[31,2],[31,3],[31,3],[31,1],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[31,3],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[47,1],[48,3],[27,1],[27,2],[27,1],[86,1],[86,2],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[96,1],[96,2],[23,5],[23,5],[24,5],[25,5],[25,7],[25,5],[25,7],[21,5],[21,5],[22,5],[22,5],[22,9],[22,9],[22,7],[22,7],[104,3],[102,1],[102,3],[99,1],[99,3],[108,1],[108,2],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[109,1],[87,1],[87,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[84,1],[97,1],[97,1],[97,1],[97,1],[35,1],[35,2],[100,1],[100,2],[120,1],[120,1],[120,1],[120,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[118,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1],[116,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 2:this.$=[];break;case 3:a[s]!==[]&&a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 113:case 115:case 116:case 129:case 179:case 181:case 182:this.$=a[s];break;case 11:r.setDirection(a[s-1]),this.$=a[s-1];break;case 26:this.$=a[s-1];break;case 27:case 28:case 29:case 30:case 31:this.$=[];break;case 32:this.$=r.addSubGraph(a[s-6],a[s-1],a[s-4]);break;case 33:this.$=r.addSubGraph(a[s-3],a[s-1],a[s-3]);break;case 34:this.$=r.addSubGraph(void 0,a[s-1],void 0);break;case 38:r.addLink(a[s-2][0],a[s][0],a[s-1]),this.$=a[s].concat(a[s-2]);break;case 39:this.$=a[s];break;case 40:this.$=[a[s]];break;case 41:this.$=[a[s-2]],r.setClass(a[s-2],a[s]);break;case 42:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"square");break;case 43:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"square");break;case 44:this.$=a[s-5],r.addVertex(a[s-5],a[s-2],"circle");break;case 45:this.$=a[s-6],r.addVertex(a[s-6],a[s-3],"circle");break;case 46:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"ellipse");break;case 47:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"ellipse");break;case 48:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"round");break;case 49:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"round");break;case 50:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"diamond");break;case 51:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"diamond");break;case 52:this.$=a[s-5],r.addVertex(a[s-5],a[s-2],"hexagon");break;case 53:this.$=a[s-6],r.addVertex(a[s-6],a[s-3],"hexagon");break;case 54:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"odd");break;case 55:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"odd");break;case 56:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"trapezoid");break;case 57:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"trapezoid");break;case 58:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"inv_trapezoid");break;case 59:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"inv_trapezoid");break;case 60:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"lean_right");break;case 61:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"lean_right");break;case 62:this.$=a[s-3],r.addVertex(a[s-3],a[s-1],"lean_left");break;case 63:this.$=a[s-4],r.addVertex(a[s-4],a[s-2],"lean_left");break;case 64:this.$=a[s],r.addVertex(a[s]);break;case 65:this.$=a[s-1],r.addVertex(a[s-1]);break;case 66:a[s-1].text=a[s],this.$=a[s-1];break;case 67:case 68:a[s-2].text=a[s-1],this.$=a[s-2];break;case 69:this.$=a[s];break;case 70:this.$={type:"arrow",stroke:"normal",text:a[s-1]};break;case 71:this.$={type:"double_arrow_point",stroke:"normal",text:a[s-1]};break;case 72:this.$={type:"arrow_circle",stroke:"normal",text:a[s-1]};break;case 73:this.$={type:"double_arrow_circle",stroke:"normal",text:a[s-1]};break;case 74:this.$={type:"arrow_cross",stroke:"normal",text:a[s-1]};break;case 75:this.$={type:"double_arrow_cross",stroke:"normal",text:a[s-1]};break;case 76:this.$={type:"arrow_open",stroke:"normal",text:a[s-1]};break;case 77:this.$={type:"arrow",stroke:"dotted",text:a[s-1]};break;case 78:this.$={type:"double_arrow_point",stroke:"dotted",text:a[s-1]};break;case 79:this.$={type:"arrow_circle",stroke:"dotted",text:a[s-1]};break;case 80:this.$={type:"double_arrow_circle",stroke:"dotted",text:a[s-1]};break;case 81:this.$={type:"arrow_cross",stroke:"dotted",text:a[s-1]};break;case 82:this.$={type:"double_arrow_cross",stroke:"dotted",text:a[s-1]};break;case 83:this.$={type:"arrow_open",stroke:"dotted",text:a[s-1]};break;case 84:this.$={type:"arrow",stroke:"thick",text:a[s-1]};break;case 85:this.$={type:"double_arrow_point",stroke:"thick",text:a[s-1]};break;case 86:this.$={type:"arrow_circle",stroke:"thick",text:a[s-1]};break;case 87:this.$={type:"double_arrow_circle",stroke:"thick",text:a[s-1]};break;case 88:this.$={type:"arrow_cross",stroke:"thick",text:a[s-1]};break;case 89:this.$={type:"double_arrow_cross",stroke:"thick",text:a[s-1]};break;case 90:this.$={type:"arrow_open",stroke:"thick",text:a[s-1]};break;case 91:this.$={type:"arrow",stroke:"normal"};break;case 92:this.$={type:"double_arrow_point",stroke:"normal"};break;case 93:this.$={type:"arrow_circle",stroke:"normal"};break;case 94:this.$={type:"double_arrow_circle",stroke:"normal"};break;case 95:this.$={type:"arrow_cross",stroke:"normal"};break;case 96:this.$={type:"double_arrow_cross",stroke:"normal"};break;case 97:this.$={type:"arrow_open",stroke:"normal"};break;case 98:this.$={type:"arrow",stroke:"dotted"};break;case 99:this.$={type:"double_arrow_point",stroke:"dotted"};break;case 100:this.$={type:"arrow_circle",stroke:"dotted"};break;case 101:this.$={type:"double_arrow_circle",stroke:"dotted"};break;case 102:this.$={type:"arrow_cross",stroke:"dotted"};break;case 103:this.$={type:"double_arrow_cross",stroke:"dotted"};break;case 104:this.$={type:"arrow_open",stroke:"dotted"};break;case 105:this.$={type:"arrow",stroke:"thick"};break;case 106:this.$={type:"double_arrow_point",stroke:"thick"};break;case 107:this.$={type:"arrow_circle",stroke:"thick"};break;case 108:this.$={type:"double_arrow_circle",stroke:"thick"};break;case 109:this.$={type:"arrow_cross",stroke:"thick"};break;case 110:this.$={type:"double_arrow_cross",stroke:"thick"};break;case 111:this.$={type:"arrow_open",stroke:"thick"};break;case 112:this.$=a[s-1];break;case 114:case 117:case 130:case 180:this.$=a[s-1]+""+a[s];break;case 131:case 132:this.$=a[s-4],r.addClass(a[s-2],a[s]);break;case 133:this.$=a[s-4],r.setClass(a[s-2],a[s]);break;case 134:this.$=a[s-4],r.setClickEvent(a[s-2],a[s],void 0);break;case 135:this.$=a[s-6],r.setClickEvent(a[s-4],a[s-2],a[s]);break;case 136:this.$=a[s-4],r.setLink(a[s-2],a[s],void 0);break;case 137:this.$=a[s-6],r.setLink(a[s-4],a[s-2],a[s]);break;case 138:this.$=a[s-4],r.addVertex(a[s-2],void 0,void 0,a[s]);break;case 139:case 141:this.$=a[s-4],r.updateLink(a[s-2],a[s]);break;case 140:this.$=a[s-4],r.updateLink([a[s-2]],a[s]);break;case 142:this.$=a[s-8],r.updateLinkInterpolate([a[s-6]],a[s-2]),r.updateLink([a[s-6]],a[s]);break;case 143:this.$=a[s-8],r.updateLinkInterpolate(a[s-6],a[s-2]),r.updateLink(a[s-6],a[s]);break;case 144:this.$=a[s-6],r.updateLinkInterpolate([a[s-4]],a[s]);break;case 145:this.$=a[s-6],r.updateLinkInterpolate(a[s-4],a[s]);break;case 147:case 149:this.$=[a[s]];break;case 148:case 150:a[s-2].push(a[s]),this.$=a[s-2];break;case 152:this.$=a[s-1]+a[s];break;case 177:this.$=a[s];break;case 178:this.$=a[s-1]+""+a[s];break;case 183:this.$="v";break;case 184:this.$="-"}},table:[{3:1,4:2,9:e,10:n,12:r},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:n,12:r},{4:8,9:e,10:n,12:r},{13:[1,9]},{1:[2,1],6:10,7:11,8:o,9:s,10:u,11:c,19:16,21:17,22:18,23:19,24:20,25:21,26:f,32:23,33:29,35:30,89:l,90:h,91:d,92:p,93:g,94:y,106:b,107:m,110:v,111:_,112:w,114:x,115:k,119:31,121:E,122:A,123:S,124:M,125:T,126:D},t(i,[2,9]),t(i,[2,10]),{8:[1,47],9:[1,48],10:C,14:46,17:49},t(O,[2,3]),t(O,[2,4]),t(O,[2,5]),t(O,[2,6]),t(O,[2,7]),t(O,[2,8]),{8:R,9:N,11:I,20:51,31:52,47:56,50:[1,57],51:[1,69],52:[1,58],53:[1,71],54:[1,59],55:[1,73],56:[1,60],57:[1,75],58:[1,61],59:[1,76],60:[1,62],61:[1,78],62:[1,63],63:[1,80],64:[1,64],65:[1,82],66:[1,65],67:[1,83],68:[1,66],69:[1,85],70:[1,67],71:[1,87],72:[1,68],73:[1,89],74:[1,70],75:[1,72],76:[1,74],77:[1,77],78:[1,79],79:[1,81],80:[1,84],81:[1,86],82:[1,88]},{8:R,9:N,11:I,20:90},{8:R,9:N,11:I,20:91},{8:R,9:N,11:I,20:92},{8:R,9:N,11:I,20:93},{8:R,9:N,11:I,20:94},{8:R,9:N,10:[1,95],11:I,20:96},t(B,[2,39]),{10:[1,97]},{10:[1,98]},{10:[1,99]},{10:[1,100]},{10:[1,101]},t(B,[2,40],{34:[1,102]}),t(L,[2,64],{17:110,119:111,10:C,28:[1,103],36:[1,104],38:[1,105],40:[1,106],42:[1,107],43:[1,108],45:[1,109],94:y,106:b,107:m,110:v,111:_,112:w,114:x,115:k,121:E,122:A,123:S,124:M,125:T,126:D}),t(P,[2,177]),t(P,[2,197]),t(P,[2,198]),t(P,[2,199]),t(P,[2,200]),t(P,[2,201]),t(P,[2,202]),t(P,[2,203]),t(P,[2,204]),t(P,[2,205]),t(P,[2,206]),t(P,[2,207]),t(P,[2,208]),t(P,[2,209]),t(P,[2,210]),t(i,[2,11]),t(i,[2,17]),t(i,[2,18]),{9:[1,112]},t(L,[2,25],{17:113,10:C}),t(O,[2,26]),{32:114,33:29,35:30,94:y,106:b,107:m,110:v,111:_,112:w,114:x,115:k,119:31,121:E,122:A,123:S,124:M,125:T,126:D},t(O,[2,35]),t(O,[2,36]),t(O,[2,37]),t(F,[2,69],{48:115,49:[1,116],83:[1,117]}),{10:q,12:j,13:U,26:z,27:118,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:155,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:156,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:157,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:158,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:159,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:160,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:161,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:162,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:163,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:164,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:165,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(bt,[2,91]),t(bt,[2,92]),t(bt,[2,93]),t(bt,[2,94]),t(bt,[2,95]),t(bt,[2,96]),t(bt,[2,97]),t(bt,[2,98]),t(bt,[2,99]),t(bt,[2,100]),t(bt,[2,101]),t(bt,[2,102]),t(bt,[2,103]),t(bt,[2,104]),t(bt,[2,105]),t(bt,[2,106]),t(bt,[2,107]),t(bt,[2,108]),t(bt,[2,109]),t(bt,[2,110]),t(bt,[2,111]),t(O,[2,27]),t(O,[2,28]),t(O,[2,29]),t(O,[2,30]),t(O,[2,31]),{10:q,12:j,13:U,26:z,27:166,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(mt,a,{5:167}),{13:vt,94:_t,100:168,101:[1,169],106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:170,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{98:[1,175],102:176,106:[1,177]},{13:vt,94:_t,98:[1,178],100:179,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:170,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{13:vt,94:_t,100:180,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:170,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{13:vt,94:_t,100:181,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:170,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{35:182,94:y,106:b,107:m,110:v,111:_,112:w,114:x,115:k,119:31,121:E,122:A,123:S,124:M,125:T,126:D},{10:q,12:j,13:U,26:z,27:183,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:185,30:Y,36:[1,184],42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:186,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:187,30:Y,40:[1,188],42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:189,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:190,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:191,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(L,[2,65]),t(P,[2,178]),t(i,[2,19]),t(L,[2,24]),t(B,[2,38]),t(F,[2,66],{10:[1,192]}),{10:[1,193]},{10:q,12:j,13:U,26:z,27:194,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,51:[1,195],53:[1,196],55:[1,197],57:[1,198],66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(xt,[2,113]),t(xt,[2,115]),t(xt,[2,166]),t(xt,[2,167]),t(xt,[2,168]),t(xt,[2,169]),t(xt,[2,170]),t(xt,[2,171]),t(xt,[2,172]),t(xt,[2,173]),t(xt,[2,174]),t(xt,[2,175]),t(xt,[2,176]),t(xt,[2,185]),t(xt,[2,186]),t(xt,[2,187]),t(xt,[2,188]),t(xt,[2,189]),t(xt,[2,190]),t(xt,[2,191]),t(xt,[2,192]),t(xt,[2,193]),t(xt,[2,194]),t(xt,[2,195]),t(xt,[2,196]),t(xt,[2,118]),t(xt,[2,119]),t(xt,[2,120]),t(xt,[2,121]),t(xt,[2,122]),t(xt,[2,123]),t(xt,[2,124]),t(xt,[2,125]),t(xt,[2,126]),t(xt,[2,127]),t(xt,[2,128]),{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,51:[1,200],66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,53:[1,201],66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,55:[1,202],66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,59:[1,203],61:[1,204],63:[1,205],65:[1,206],66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,59:[1,207],66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,61:[1,208],66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,63:[1,209],66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,66:$,67:[1,210],69:[1,211],71:[1,212],73:[1,213],84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,66:$,67:[1,214],84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,66:$,69:[1,215],84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,66:$,71:[1,216],84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{8:R,9:N,10:q,11:I,12:j,13:U,20:218,26:z,28:[1,217],30:Y,42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{6:10,7:11,8:o,9:s,10:u,11:c,19:16,21:17,22:18,23:19,24:20,25:21,26:f,30:[1,219],32:23,33:29,35:30,89:l,90:h,91:d,92:p,93:g,94:y,106:b,107:m,110:v,111:_,112:w,114:x,115:k,119:31,121:E,122:A,123:S,124:M,125:T,126:D},{10:[1,220],13:vt,94:_t,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:221,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:[1,222]},t(kt,[2,179]),t(kt,[2,181]),t(kt,[2,182]),t(kt,[2,183]),t(kt,[2,184]),{10:[1,223]},{10:[1,224],107:[1,225]},t(Et,[2,147]),{10:[1,226]},{10:[1,227],13:vt,94:_t,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:221,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:[1,228],13:vt,94:_t,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:221,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:[1,229],13:vt,94:_t,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:221,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(B,[2,41],{119:111,94:y,106:b,107:m,110:v,111:_,112:w,114:x,115:k,121:E,122:A,123:S,124:M,125:T,126:D}),{10:q,12:j,13:U,26:z,29:[1,230],30:Y,42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:231,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,37:[1,232],42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,39:[1,233],42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,41:[1,234],42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,27:235,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,29:[1,236],30:Y,42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,44:[1,237],46:[1,238],50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{10:q,12:j,13:U,26:z,30:Y,42:H,44:[1,240],46:[1,239],50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(F,[2,68]),t(F,[2,67]),{10:q,12:j,13:U,26:z,30:Y,42:H,50:V,66:$,83:[1,241],84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(F,[2,70]),t(F,[2,72]),t(F,[2,74]),t(F,[2,76]),t(xt,[2,114]),t(F,[2,71]),t(F,[2,73]),t(F,[2,75]),t(F,[2,77]),t(F,[2,79]),t(F,[2,81]),t(F,[2,83]),t(F,[2,78]),t(F,[2,80]),t(F,[2,82]),t(F,[2,84]),t(F,[2,86]),t(F,[2,88]),t(F,[2,90]),t(F,[2,85]),t(F,[2,87]),t(F,[2,89]),{10:q,12:j,13:U,26:z,27:242,30:Y,42:H,50:V,66:$,84:119,85:G,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(mt,a,{5:243}),t(O,[2,34]),{10:At,89:St,99:244,101:Mt,105:Tt,106:Dt,108:245,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},t(kt,[2,180]),{10:At,89:St,99:258,101:Mt,105:Tt,106:Dt,108:245,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},{10:At,89:St,99:259,101:Mt,103:[1,260],105:Tt,106:Dt,108:245,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},{10:At,89:St,99:261,101:Mt,103:[1,262],105:Tt,106:Dt,108:245,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},{106:[1,263]},{10:At,89:St,99:264,101:Mt,105:Tt,106:Dt,108:245,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},{10:At,89:St,99:265,101:Mt,105:Tt,106:Dt,108:245,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},{13:vt,94:_t,100:266,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:170,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{13:vt,85:[1,268],94:_t,100:267,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:170,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(L,[2,42],{17:269,10:C}),{10:q,12:j,13:U,26:z,30:Y,37:[1,270],42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(L,[2,48],{17:271,10:C}),t(L,[2,46],{17:272,10:C}),t(L,[2,50],{17:273,10:C}),{10:q,12:j,13:U,26:z,30:Y,41:[1,274],42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},t(L,[2,54],{17:275,10:C}),t(L,[2,56],{17:276,10:C}),t(L,[2,60],{17:277,10:C}),t(L,[2,58],{17:278,10:C}),t(L,[2,62],{17:279,10:C}),t([10,94,106,107,110,111,112,114,115,121,122,123,124,125,126],[2,112]),{10:q,12:j,13:U,26:z,29:[1,280],30:Y,42:H,50:V,66:$,84:199,88:131,89:W,90:K,91:X,92:Z,93:J,94:Q,95:tt,97:121,98:et,105:nt,106:rt,107:it,110:at,111:ot,112:st,114:ut,115:ct,117:ft,118:128,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{6:10,7:11,8:o,9:s,10:u,11:c,19:16,21:17,22:18,23:19,24:20,25:21,26:f,30:[1,281],32:23,33:29,35:30,89:l,90:h,91:d,92:p,93:g,94:y,106:b,107:m,110:v,111:_,112:w,114:x,115:k,119:31,121:E,122:A,123:S,124:M,125:T,126:D},t(Lt,[2,138],{107:Pt}),t(Ft,[2,149],{109:283,10:At,89:St,101:Mt,105:Tt,106:Dt,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt}),t(qt,[2,151]),t(qt,[2,153]),t(qt,[2,154]),t(qt,[2,155]),t(qt,[2,156]),t(qt,[2,157]),t(qt,[2,158]),t(qt,[2,159]),t(qt,[2,160]),t(qt,[2,161]),t(qt,[2,162]),t(qt,[2,163]),t(Lt,[2,139],{107:Pt}),t(Lt,[2,140],{107:Pt}),{10:[1,284]},t(Lt,[2,141],{107:Pt}),{10:[1,285]},t(Et,[2,148]),t(Lt,[2,131],{107:Pt}),t(Lt,[2,132],{107:Pt}),t(Lt,[2,133],{118:172,120:221,13:vt,94:_t,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt}),t(Lt,[2,134],{118:172,120:221,10:[1,286],13:vt,94:_t,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt}),t(Lt,[2,136],{10:[1,287]}),t(L,[2,43]),{37:[1,288]},t(L,[2,49]),t(L,[2,47]),t(L,[2,51]),{41:[1,289]},t(L,[2,55]),t(L,[2,57]),t(L,[2,61]),t(L,[2,59]),t(L,[2,63]),{8:R,9:N,11:I,20:290},t(O,[2,33]),{10:At,89:St,101:Mt,105:Tt,106:Dt,108:291,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},t(qt,[2,152]),{13:vt,94:_t,100:292,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:170,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{13:vt,94:_t,100:293,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,118:172,120:170,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt},{85:[1,294]},{85:[1,295]},t(L,[2,44],{17:296,10:C}),t(L,[2,52],{17:297,10:C}),t(mt,a,{5:298}),t(Ft,[2,150],{109:283,10:At,89:St,101:Mt,105:Tt,106:Dt,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt}),t(Lt,[2,144],{118:172,120:221,10:[1,299],13:vt,94:_t,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt}),t(Lt,[2,145],{118:172,120:221,10:[1,300],13:vt,94:_t,106:rt,107:it,110:at,111:ot,112:wt,114:ut,115:ct,121:lt,122:ht,123:dt,124:pt,125:gt,126:yt}),t(Lt,[2,135]),t(Lt,[2,137]),t(L,[2,45]),t(L,[2,53]),{6:10,7:11,8:o,9:s,10:u,11:c,19:16,21:17,22:18,23:19,24:20,25:21,26:f,30:[1,301],32:23,33:29,35:30,89:l,90:h,91:d,92:p,93:g,94:y,106:b,107:m,110:v,111:_,112:w,114:x,115:k,119:31,121:E,122:A,123:S,124:M,125:T,126:D},{10:At,89:St,99:302,101:Mt,105:Tt,106:Dt,108:245,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},{10:At,89:St,99:303,101:Mt,105:Tt,106:Dt,108:245,109:246,110:Ct,111:Ot,112:Rt,113:Nt,114:It,115:Bt},t(O,[2,32]),t(Lt,[2,142],{107:Pt}),t(Lt,[2,143],{107:Pt})],defaultActions:{},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,f=0,l=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;a.push(b);var m=p.options&&p.options.ranges;function v(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,w,x,k,E,A,S,M,T,D={};;){if(x=n[n.length-1],this.defaultActions[x]?k=this.defaultActions[x]:(null==_&&(_=v()),k=o[x]&&o[x][_]),void 0===k||!k.length||!k[0]){var C="";for(A in T=[],o[x])this.terminals_[A]&&A>l&&T.push("'"+this.terminals_[A]+"'");C=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(u+1)+": Unexpected "+(_==h?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:b,expected:T})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,w?(_=w,w=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,b=p.yylloc,f>0&&f--);break;case 2:if(S=this.productions_[k[1]][1],D.$=i[i.length-S],D._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(D._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(D,[s,c,u,g.yy,k[1],i,a].concat(d))))return E;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[k[1]][0]),i.push(D.$),a.push(D._$),M=o[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},Ut={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,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},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={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},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,n,r){switch(n){case 0:break;case 1:this.begin("string");break;case 2:this.popState();break;case 3:return"STR";case 4:return 89;case 5:return 98;case 6:return 90;case 7:return 103;case 8:return 91;case 9:return 92;case 10:return 93;case 11:return t.lex.firstGraph()&&this.begin("dir"),12;case 12:return 26;case 13:return 30;case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:return this.popState(),13;case 24:return 106;case 25:return 114;case 26:return 34;case 27:return 111;case 28:return 8;case 29:return 107;case 30:return 125;case 31:return 55;case 32:return 51;case 33:return 74;case 34:return 76;case 35:return 75;case 36:return 78;case 37:return 80;case 38:return 81;case 39:return 82;case 40:case 41:return 79;case 42:case 43:return 77;case 44:return 78;case 45:return 53;case 46:return 57;case 47:return 63;case 48:return 59;case 49:return 61;case 50:return 65;case 51:return 63;case 52:return 59;case 53:return 61;case 54:return 65;case 55:return 71;case 56:return 67;case 57:return 69;case 58:return 73;case 59:return 52;case 60:return 56;case 61:return 54;case 62:return 60;case 63:return 64;case 64:return 62;case 65:return 68;case 66:return 72;case 67:return 70;case 68:return 50;case 69:return 58;case 70:return 66;case 71:return 38;case 72:return 39;case 73:return 112;case 74:return 115;case 75:return 126;case 76:return 123;case 77:return 105;case 78:case 79:return 124;case 80:return 117;case 81:return 42;case 82:return 95;case 83:return 94;case 84:return 110;case 85:return 44;case 86:return 43;case 87:return 46;case 88:return 45;case 89:return 121;case 90:return 122;case 91:return 83;case 92:return 36;case 93:return 37;case 94:return 28;case 95:return 29;case 96:return 40;case 97:return 41;case 98:return 127;case 99:return 9;case 100:return 10;case 101:return 11}},rules:[/^(?:%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:click\b)/,/^(?:graph\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:\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*--[x]\s*)/,/^(?:\s*-->\s*)/,/^(?:\s*<-->\s*)/,/^(?:\s*[x]--[x]\s*)/,/^(?:\s*[o]--[o]\s*)/,/^(?:\s*[o]\.-[o]\s*)/,/^(?:\s*<==>\s*)/,/^(?:\s*[o]==[o]\s*)/,/^(?:\s*[x]==[x]\s*)/,/^(?:\s*[x].-[x]\s*)/,/^(?:\s*[x]-\.-[x]\s*)/,/^(?:\s*<\.->\s*)/,/^(?:\s*<-\.->\s*)/,/^(?:\s*[o]-\.-[o]\s*)/,/^(?:\s*--[o]\s*)/,/^(?:\s*---\s*)/,/^(?:\s*-\.-[x]\s*)/,/^(?:\s*-\.->\s*)/,/^(?:\s*-\.-[o]\s*)/,/^(?:\s*-\.-\s*)/,/^(?:\s*.-[x]\s*)/,/^(?:\s*\.->\s*)/,/^(?:\s*\.-[o]\s*)/,/^(?:\s*\.-\s*)/,/^(?:\s*==[x]\s*)/,/^(?:\s*==>\s*)/,/^(?:\s*==[o]\s*)/,/^(?:\s*==[\=]\s*)/,/^(?:\s*<--\s*)/,/^(?:\s*[x]--\s*)/,/^(?:\s*[o]--\s*)/,/^(?:\s*<-\.\s*)/,/^(?:\s*[x]-\.\s*)/,/^(?:\s*[o]-\.\s*)/,/^(?:\s*<==\s*)/,/^(?:\s*[x]==\s*)/,/^(?:\s*[o]==\s*)/,/^(?:\s*--\s*)/,/^(?:\s*-\.\s*)/,/^(?:\s*==\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|\r\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{dir:{rules:[14,15,16,17,18,19,20,21,22,23],inclusive:!1},string:{rules:[2,3],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,8,9,10,11,12,13,24,25,26,27,28,29,30,31,32,33,34,35,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,88,89,90,91,92,93,94,95,96,97,98,99,100,101],inclusive:!0}}};function zt(){this.yy={}}return jt.lexer=Ut,zt.prototype=jt,jt.Parser=zt,new zt}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(17).readFileSync(n(18).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(5),n(7)(t))},function(t){t.exports=JSON.parse('{"name":"mermaid","version":"8.4.0","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":"webpack --progress --colors","postbuild":"documentation build src/mermaidAPI.js --shallow -f md --markdown-toc false -o docs/mermaidAPI.md","build:watch":"yarn build --watch","minify":"minify ./dist/mermaid.js > ./dist/mermaid.min.js","release":"yarn build -p --config webpack.config.prod.babel.js","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 release && yarn test","prepush":"yarn test"},"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","crypto-random-string":"^3.0.1","d3":"^5.7.0","dagre-d3-renderer":"^0.5.8","dagre-layout":"^0.8.8","graphlibrary":"^2.2.0","he":"^1.2.0","lodash":"^4.17.11","minify":"^4.1.1","moment-mini":"^2.22.1","prettier":"^1.18.2","scope-css":"^1.2.1"},"devDependencies":{"documentation":"^12.0.1","eslint":"^6.3.0","eslint-config-prettier":"^6.3.0","eslint-plugin-prettier":"^3.1.0","@babel/core":"^7.2.2","@babel/preset-env":"^7.2.0","@babel/register":"^7.0.0","@percy/cypress":"^2.0.1","babel-core":"7.0.0-bridge.0","babel-jest":"^23.6.0","babel-loader":"^8.0.4","coveralls":"^3.0.2","css-loader":"^2.0.1","css-to-string-loader":"^0.1.3","cypress":"3.4.0","husky":"^1.2.1","identity-obj-proxy":"^3.0.0","jest":"^23.6.0","jest-environment-puppeteer":"^4.2.0","jest-image-snapshot":"^2.8.2","jest-puppeteer":"^4.2.0","jison":"^0.4.18","moment":"^2.23.0","node-sass":"^4.12.0","puppeteer":"^1.17.0","sass-loader":"^7.1.0","start-server-and-test":"^1.10.0","webpack":"^4.27.1","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"]}}')},function(t,e,n){"use strict";(function(e){void 0===e||!e.version||0===e.version.indexOf("v0.")||0===e.version.indexOf("v1.")&&0!==e.version.indexOf("v1.8.")?t.exports={nextTick:function(t,n,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var a,o,s=arguments.length;switch(s){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick((function(){t.call(null,n)}));case 3:return e.nextTick((function(){t.call(null,n,r)}));case 4:return e.nextTick((function(){t.call(null,n,r,i)}));default:for(a=new Array(s-1),o=0;o<a.length;)a[o++]=arguments[o];return e.nextTick((function(){t.apply(null,a)}))}}}:t.exports=e}).call(this,n(5))},function(t,e,n){var r=n(3).Buffer;function i(t){r.isBuffer(t)||(t=r.from(t));for(var e=t.length/4|0,n=new Array(e),i=0;i<e;i++)n[i]=t.readUInt32BE(4*i);return n}function a(t){for(;0<t.length;t++)t[0]=0}function o(t,e,n,r,i){for(var a,o,s,u,c=n[0],f=n[1],l=n[2],h=n[3],d=t[0]^e[0],p=t[1]^e[1],g=t[2]^e[2],y=t[3]^e[3],b=4,m=1;m<i;m++)a=c[d>>>24]^f[p>>>16&255]^l[g>>>8&255]^h[255&y]^e[b++],o=c[p>>>24]^f[g>>>16&255]^l[y>>>8&255]^h[255&d]^e[b++],s=c[g>>>24]^f[y>>>16&255]^l[d>>>8&255]^h[255&p]^e[b++],u=c[y>>>24]^f[d>>>16&255]^l[p>>>8&255]^h[255&g]^e[b++],d=a,p=o,g=s,y=u;return a=(r[d>>>24]<<24|r[p>>>16&255]<<16|r[g>>>8&255]<<8|r[255&y])^e[b++],o=(r[p>>>24]<<24|r[g>>>16&255]<<16|r[y>>>8&255]<<8|r[255&d])^e[b++],s=(r[g>>>24]<<24|r[y>>>16&255]<<16|r[d>>>8&255]<<8|r[255&p])^e[b++],u=(r[y>>>24]<<24|r[d>>>16&255]<<16|r[p>>>8&255]<<8|r[255&g])^e[b++],[a>>>=0,o>>>=0,s>>>=0,u>>>=0]}var s=[0,1,2,4,8,16,32,64,128,27,54],u=function(){for(var t=new Array(256),e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;for(var n=[],r=[],i=[[],[],[],[]],a=[[],[],[],[]],o=0,s=0,u=0;u<256;++u){var c=s^s<<1^s<<2^s<<3^s<<4;c=c>>>8^255&c^99,n[o]=c,r[c]=o;var f=t[o],l=t[f],h=t[l],d=257*t[c]^16843008*c;i[0][o]=d<<24|d>>>8,i[1][o]=d<<16|d>>>16,i[2][o]=d<<8|d>>>24,i[3][o]=d,d=16843009*h^65537*l^257*f^16843008*o,a[0][c]=d<<24|d>>>8,a[1][c]=d<<16|d>>>16,a[2][c]=d<<8|d>>>24,a[3][c]=d,0===o?o=s=1:(o=f^t[t[t[h^f]]],s^=t[t[s]])}return{SBOX:n,INV_SBOX:r,SUB_MIX:i,INV_SUB_MIX:a}}();function c(t){this._key=i(t),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var t=this._key,e=t.length,n=e+6,r=4*(n+1),i=[],a=0;a<e;a++)i[a]=t[a];for(a=e;a<r;a++){var o=i[a-1];a%e==0?(o=o<<8|o>>>24,o=u.SBOX[o>>>24]<<24|u.SBOX[o>>>16&255]<<16|u.SBOX[o>>>8&255]<<8|u.SBOX[255&o],o^=s[a/e|0]<<24):e>6&&a%e==4&&(o=u.SBOX[o>>>24]<<24|u.SBOX[o>>>16&255]<<16|u.SBOX[o>>>8&255]<<8|u.SBOX[255&o]),i[a]=i[a-e]^o}for(var c=[],f=0;f<r;f++){var l=r-f,h=i[l-(f%4?0:4)];c[f]=f<4||l<=4?h:u.INV_SUB_MIX[0][u.SBOX[h>>>24]]^u.INV_SUB_MIX[1][u.SBOX[h>>>16&255]]^u.INV_SUB_MIX[2][u.SBOX[h>>>8&255]]^u.INV_SUB_MIX[3][u.SBOX[255&h]]}this._nRounds=n,this._keySchedule=i,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(t){return o(t=i(t),this._keySchedule,u.SUB_MIX,u.SBOX,this._nRounds)},c.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),n=r.allocUnsafe(16);return n.writeUInt32BE(e[0],0),n.writeUInt32BE(e[1],4),n.writeUInt32BE(e[2],8),n.writeUInt32BE(e[3],12),n},c.prototype.decryptBlock=function(t){var e=(t=i(t))[1];t[1]=t[3],t[3]=e;var n=o(t,this._invKeySchedule,u.INV_SUB_MIX,u.INV_SBOX,this._nRounds),a=r.allocUnsafe(16);return a.writeUInt32BE(n[0],0),a.writeUInt32BE(n[3],4),a.writeUInt32BE(n[2],8),a.writeUInt32BE(n[1],12),a},c.prototype.scrub=function(){a(this._keySchedule),a(this._invKeySchedule),a(this._key)},t.exports.AES=c},function(t,e,n){var r=n(3).Buffer,i=n(46);t.exports=function(t,e,n,a){if(r.isBuffer(t)||(t=r.from(t,"binary")),e&&(r.isBuffer(e)||(e=r.from(e,"binary")),8!==e.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var o=n/8,s=r.alloc(o),u=r.alloc(a||0),c=r.alloc(0);o>0||a>0;){var f=new i;f.update(c),f.update(t),e&&f.update(e),c=f.digest();var l=0;if(o>0){var h=s.length-o;l=Math.min(o,c.length),c.copy(s,h,0,l),o-=l}if(l<c.length&&a>0){var d=u.length-a,p=Math.min(a,c.length-l);c.copy(u,d,l,l+p),a-=p}}return c.fill(0),{key:s,iv:u}}},function(t,e,n){"use strict";var r=n(4),i=n(10),a=i.getNAF,o=i.getJSF,s=i.assert;function u(t,e){this.type=t,this.p=new r(e.p,16),this.red=e.prime?r.red(e.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=e.n&&new r(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var n=this.n&&this.p.div(this.n);!n||n.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=u,u.prototype.point=function(){throw new Error("Not implemented")},u.prototype.validate=function(){throw new Error("Not implemented")},u.prototype._fixedNafMul=function(t,e){s(t.precomputed);var n=t._getDoubles(),r=a(e,1),i=(1<<n.step+1)-(n.step%2==0?2:1);i/=3;for(var o=[],u=0;u<r.length;u+=n.step){var c=0;for(e=u+n.step-1;e>=u;e--)c=(c<<1)+r[e];o.push(c)}for(var f=this.jpoint(null,null,null),l=this.jpoint(null,null,null),h=i;h>0;h--){for(u=0;u<o.length;u++){(c=o[u])===h?l=l.mixedAdd(n.points[u]):c===-h&&(l=l.mixedAdd(n.points[u].neg()))}f=f.add(l)}return f.toP()},u.prototype._wnafMul=function(t,e){var n=4,r=t._getNAFPoints(n);n=r.wnd;for(var i=r.points,o=a(e,n),u=this.jpoint(null,null,null),c=o.length-1;c>=0;c--){for(e=0;c>=0&&0===o[c];c--)e++;if(c>=0&&e++,u=u.dblp(e),c<0)break;var f=o[c];s(0!==f),u="affine"===t.type?f>0?u.mixedAdd(i[f-1>>1]):u.mixedAdd(i[-f-1>>1].neg()):f>0?u.add(i[f-1>>1]):u.add(i[-f-1>>1].neg())}return"affine"===t.type?u.toP():u},u.prototype._wnafMulAdd=function(t,e,n,r,i){for(var s=this._wnafT1,u=this._wnafT2,c=this._wnafT3,f=0,l=0;l<r;l++){var h=(A=e[l])._getNAFPoints(t);s[l]=h.wnd,u[l]=h.points}for(l=r-1;l>=1;l-=2){var d=l-1,p=l;if(1===s[d]&&1===s[p]){var g=[e[d],null,null,e[p]];0===e[d].y.cmp(e[p].y)?(g[1]=e[d].add(e[p]),g[2]=e[d].toJ().mixedAdd(e[p].neg())):0===e[d].y.cmp(e[p].y.redNeg())?(g[1]=e[d].toJ().mixedAdd(e[p]),g[2]=e[d].add(e[p].neg())):(g[1]=e[d].toJ().mixedAdd(e[p]),g[2]=e[d].toJ().mixedAdd(e[p].neg()));var y=[-3,-1,-5,-7,0,7,5,1,3],b=o(n[d],n[p]);f=Math.max(b[0].length,f),c[d]=new Array(f),c[p]=new Array(f);for(var m=0;m<f;m++){var v=0|b[0][m],_=0|b[1][m];c[d][m]=y[3*(v+1)+(_+1)],c[p][m]=0,u[d]=g}}else c[d]=a(n[d],s[d]),c[p]=a(n[p],s[p]),f=Math.max(c[d].length,f),f=Math.max(c[p].length,f)}var w=this.jpoint(null,null,null),x=this._wnafT4;for(l=f;l>=0;l--){for(var k=0;l>=0;){var E=!0;for(m=0;m<r;m++)x[m]=0|c[m][l],0!==x[m]&&(E=!1);if(!E)break;k++,l--}if(l>=0&&k++,w=w.dblp(k),l<0)break;for(m=0;m<r;m++){var A,S=x[m];0!==S&&(S>0?A=u[m][S-1>>1]:S<0&&(A=u[m][-S-1>>1].neg()),w="affine"===A.type?w.mixedAdd(A):w.add(A))}}for(l=0;l<r;l++)u[l]=null;return i?w:w.toP()},u.BasePoint=c,c.prototype.eq=function(){throw new Error("Not implemented")},c.prototype.validate=function(){return this.curve.validate(this)},u.prototype.decodePoint=function(t,e){t=i.toArray(t,e);var n=this.p.byteLength();if((4===t[0]||6===t[0]||7===t[0])&&t.length-1==2*n)return 6===t[0]?s(t[t.length-1]%2==0):7===t[0]&&s(t[t.length-1]%2==1),this.point(t.slice(1,1+n),t.slice(1+n,1+2*n));if((2===t[0]||3===t[0])&&t.length-1===n)return this.pointFromX(t.slice(1,1+n),3===t[0]);throw new Error("Unknown point format")},c.prototype.encodeCompressed=function(t){return this.encode(t,!0)},c.prototype._encode=function(t){var e=this.curve.p.byteLength(),n=this.getX().toArray("be",e);return t?[this.getY().isEven()?2:3].concat(n):[4].concat(n,this.getY().toArray("be",e))},c.prototype.encode=function(t,e){return i.encode(this._encode(e),t)},c.prototype.precompute=function(t){if(this.precomputed)return this;var e={doubles:null,naf:null,beta:null};return e.naf=this._getNAFPoints(8),e.doubles=this._getDoubles(4,t),e.beta=this._getBeta(),this.precomputed=e,this},c.prototype._hasDoubles=function(t){if(!this.precomputed)return!1;var e=this.precomputed.doubles;return!!e&&e.points.length>=Math.ceil((t.bitLength()+1)/e.step)},c.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],r=this,i=0;i<e;i+=t){for(var a=0;a<t;a++)r=r.dbl();n.push(r)}return{step:t,points:n}},c.prototype._getNAFPoints=function(t){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var e=[this],n=(1<<t)-1,r=1===n?null:this.dbl(),i=1;i<n;i++)e[i]=e[i-1].add(r);return{wnd:t,points:e}},c.prototype._getBeta=function(){return null},c.prototype.dblp=function(t){for(var e=this,n=0;n<t;n++)e=e.dbl();return e}},function(t,e,n){var r=n(185),i=n(196),a=n(197),o=n(56),s=n(80),u=n(3).Buffer;function c(t){var e;"object"!=typeof t||u.isBuffer(t)||(e=t.passphrase,t=t.key),"string"==typeof t&&(t=u.from(t));var n,c,f=a(t,e),l=f.tag,h=f.data;switch(l){case"CERTIFICATE":c=r.certificate.decode(h,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(c||(c=r.PublicKey.decode(h,"der")),n=c.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return r.RSAPublicKey.decode(c.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return c.subjectPrivateKey=c.subjectPublicKey,{type:"ec",data:c};case"1.2.840.10040.4.1":return c.algorithm.params.pub_key=r.DSAparam.decode(c.subjectPublicKey.data,"der"),{type:"dsa",data:c.algorithm.params};default:throw new Error("unknown key id "+n)}throw new Error("unknown key type "+l);case"ENCRYPTED PRIVATE KEY":h=function(t,e){var n=t.algorithm.decrypt.kde.kdeparams.salt,r=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=i[t.algorithm.decrypt.cipher.algo.join(".")],c=t.algorithm.decrypt.cipher.iv,f=t.subjectPrivateKey,l=parseInt(a.split("-")[1],10)/8,h=s.pbkdf2Sync(e,n,r,l,"sha1"),d=o.createDecipheriv(a,h,c),p=[];return p.push(d.update(f)),p.push(d.final()),u.concat(p)}(h=r.EncryptedPrivateKey.decode(h,"der"),e);case"PRIVATE KEY":switch(n=(c=r.PrivateKey.decode(h,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return r.RSAPrivateKey.decode(c.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:c.algorithm.curve,privateKey:r.ECPrivateKey.decode(c.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return c.algorithm.params.priv_key=r.DSAparam.decode(c.subjectPrivateKey,"der"),{type:"dsa",params:c.algorithm.params};default:throw new Error("unknown key id "+n)}throw new Error("unknown key type "+l);case"RSA PUBLIC KEY":return r.RSAPublicKey.decode(h,"der");case"RSA PRIVATE KEY":return r.RSAPrivateKey.decode(h,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:r.DSAPrivateKey.decode(h,"der")};case"EC PRIVATE KEY":return{curve:(h=r.ECPrivateKey.decode(h,"der")).parameters.value,privateKey:h.privateKey};default:throw new Error("unknown key type "+l)}}t.exports=c,c.signature=r.signature},function(t,e,n){"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=function(t,e){var n=t[1]||"",r=t[3];if(!r)return n;if(e&&"function"==typeof btoa){var i=(o=r,"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),a=r.sources.map((function(t){return"/*# sourceURL="+r.sourceRoot+t+" */"}));return[n].concat(a).concat([i]).join("\n")}var o;return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n})).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;i<this.length;i++){var a=this[i][0];null!=a&&(r[a]=!0)}for(i=0;i<t.length;i++){var o=t[i];null!=o[0]&&r[o[0]]||(n&&!o[2]?o[2]=n:n&&(o[2]="("+o[2]+") and ("+n+")"),e.push(o))}},e}},function(t,e,n){"use strict";var r=/^(%20|\s)*(javascript|data)/im,i=/[^\x20-\x7E]/gim,a=/^([^:]+):/gm,o=[".","/"];t.exports={sanitizeUrl:function(t){if(!t)return"about:blank";var e,n,s=t.replace(i,"").trim();return function(t){return o.indexOf(t[0])>-1}(s)?s:(n=s.match(a))?(e=n[0],r.test(e)?"about:blank":s):"about:blank"}}},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[2,3],n=[1,7],r=[7,12,15,17,19,20,21],i=[7,11,12,15,17,19,20,21],a=[2,20],o=[1,32],s={trace:function(){},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(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 1:return a[s-1];case 2:return r.setDirection(a[s-3]),a[s-1];case 4:r.setOptions(a[s-1]),this.$=a[s];break;case 5:a[s-1]+=a[s],this.$=a[s-1];break;case 7:this.$=[];break;case 8:a[s-1].push(a[s]),this.$=a[s-1];break;case 9:this.$=a[s-1];break;case 11:r.commit(a[s]);break;case 12:r.branch(a[s]);break;case 13:r.checkout(a[s]);break;case 14:r.merge(a[s]);break;case 15:r.reset(a[s]);break;case 16:this.$="";break;case 17:this.$=a[s];break;case 18:this.$=a[s-1]+":"+a[s];break;case 19:this.$=a[s-1]+":"+r.count,r.count=0;break;case 20:r.count=0;break;case 21:r.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:e,9:6,12:n},{5:[1,8]},{7:[1,9]},t(r,[2,7],{10:10,11:[1,11]}),t(i,[2,6]),{6:12,7:e,9:6,12:n},{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]},t(i,[2,5]),{7:[1,21]},t(r,[2,8]),{12:[1,22]},t(r,[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]},t(r,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:a,25:31,26:o},{12:a,25:33,26:o},{12:[2,18]},{12:a,25:34,26:o},{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(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,f=0,l=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;a.push(b);var m=p.options&&p.options.ranges;function v(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,w,x,k,E,A,S,M,T,D={};;){if(x=n[n.length-1],this.defaultActions[x]?k=this.defaultActions[x]:(null==_&&(_=v()),k=o[x]&&o[x][_]),void 0===k||!k.length||!k[0]){var C="";for(A in T=[],o[x])this.terminals_[A]&&A>l&&T.push("'"+this.terminals_[A]+"'");C=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(u+1)+": Unexpected "+(_==h?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:b,expected:T})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,w?(_=w,w=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,b=p.yylloc,f>0&&f--);break;case 2:if(S=this.productions_[k[1]][1],D.$=i[i.length-S],D._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(D._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(D,[s,c,u,g.yy,k[1],i,a].concat(d))))return E;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[k[1]][0]),i.push(D.$),a.push(D._$),M=o[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},u={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,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},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={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},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 18:this.popState();break;case 19:return 23;case 20:return 18;case 21:return 7}},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_]+)/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function c(){this.yy={}}return s.lexer=u,c.prototype=s,s.Parser=c,new c}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(17).readFileSync(n(18).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(5),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10],n={trace:function(){},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(t,e,n,r,i,a,o){a.length;switch(i){case 1:return r;case 4:break;case 6:r.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,f=0,l=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;a.push(b);var m=p.options&&p.options.ranges;function v(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,w,x,k,E,A,S,M,T,D={};;){if(x=n[n.length-1],this.defaultActions[x]?k=this.defaultActions[x]:(null==_&&(_=v()),k=o[x]&&o[x][_]),void 0===k||!k.length||!k[0]){var C="";for(A in T=[],o[x])this.terminals_[A]&&A>l&&T.push("'"+this.terminals_[A]+"'");C=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(u+1)+": Unexpected "+(_==h?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:b,expected:T})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,w?(_=w,w=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,b=p.yylloc,f>0&&f--);break;case 2:if(S=this.productions_[k[1]][1],D.$=i[i.length-S],D._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(D._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(D,[s,c,u,g.yy,k[1],i,a].concat(d))))return E;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[k[1]][0]),i.push(D.$),a.push(D._$),M=o[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,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},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={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},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},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:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(17).readFileSync(n(18).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(5),n(7)(t))},function(t,e,n){(function(t,r){var i=function(){var t=function(t,e,n,r){for(n=n||{},r=t.length;r--;n[t[r]]=e);return n},e=[6,9,10,12],n={trace:function(){},yy:{},symbols_:{error:2,start:3,pie:4,document:5,EOF:6,line:7,statement:8,NL:9,STR:10,VALUE:11,title:12,$accept:0,$end:1},terminals_:{2:"error",4:"pie",6:"EOF",9:"NL",10:"STR",11:"VALUE",12:"title"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,2],[8,1]],performAction:function(t,e,n,r,i,a,o){var s=a.length-1;switch(i){case 4:break;case 6:console.log("str:"+a[s-1]+" value: "+a[s]),r.addSection(a[s-1],r.cleanupValue(a[s]));break;case 7:r.setTitle(a[s].substr(6)),this.$=a[s].substr(6)}},table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8],12:[1,9]},{1:[2,1]},t(e,[2,3]),t(e,[2,4]),t(e,[2,5]),{11:[1,10]},t(e,[2,7]),t(e,[2,6])],defaultActions:{4:[2,1]},parseError:function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)},parse:function(t){var e=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",u=0,c=0,f=0,l=2,h=1,d=a.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(g.yy[y]=this.yy[y]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;a.push(b);var m=p.options&&p.options.ranges;function v(){var t;return"number"!=typeof(t=r.pop()||p.lex()||h)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var _,w,x,k,E,A,S,M,T,D={};;){if(x=n[n.length-1],this.defaultActions[x]?k=this.defaultActions[x]:(null==_&&(_=v()),k=o[x]&&o[x][_]),void 0===k||!k.length||!k[0]){var C="";for(A in T=[],o[x])this.terminals_[A]&&A>l&&T.push("'"+this.terminals_[A]+"'");C=p.showPosition?"Parse error on line "+(u+1)+":\n"+p.showPosition()+"\nExpecting "+T.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(u+1)+": Unexpected "+(_==h?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:b,expected:T})}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+_);switch(k[0]){case 1:n.push(_),i.push(p.yytext),a.push(p.yylloc),n.push(k[1]),_=null,w?(_=w,w=null):(c=p.yyleng,s=p.yytext,u=p.yylineno,b=p.yylloc,f>0&&f--);break;case 2:if(S=this.productions_[k[1]][1],D.$=i[i.length-S],D._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(D._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(E=this.performAction.apply(D,[s,c,u,g.yy,k[1],i,a].concat(d))))return E;S&&(n=n.slice(0,-1*S*2),i=i.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[k[1]][0]),i.push(D.$),a.push(D._$),M=o[n[n.length-2]][n[n.length-1]],n.push(M);break;case 3:return!0}}return!0}},r={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,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},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var n,r,i;if(this.options.backtrack_lexer&&(i={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},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;a<i.length;a++)if((n=this._input.match(this.rules[i[a]]))&&(!e||n[0].length>e[0].length)){if(e=n,r=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,i[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,n,r){switch(n){case 0:case 1:break;case 2:return 4;case 3:return 9;case 4:return"space";case 5:return 12;case 6:this.begin("string");break;case 7:this.popState();break;case 8:return"STR";case 9:return"VALUE";case 10:return 6}},rules:[/^(?:%%[^\n]*)/i,/^(?:\s+)/i,/^(?:pie\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:title\s[^#\n;]+)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{string:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,9,10],inclusive:!0}}};function i(){this.yy={}}return n.lexer=r,i.prototype=n,n.Parser=i,new i}();e.parser=i,e.Parser=i.Parser,e.parse=function(){return i.parse.apply(i,arguments)},e.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=n(17).readFileSync(n(18).normalize(r[1]),"utf8");return e.parser.parse(i)},n.c[n.s]===r&&e.main(t.argv.slice(1))}).call(this,n(5),n(7)(t))},function(t,e,n){const r=n(8);t.exports=s;const i="\0",a="\0",o="";function s(t){this._isDirected=!r.has(t,"directed")||t.directed,this._isMultigraph=!!r.has(t,"multigraph")&&t.multigraph,this._isCompound=!!r.has(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=r.constant(void 0),this._defaultEdgeLabelFn=r.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[a]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function u(t,e){t[e]?t[e]++:t[e]=1}function c(t,e){--t[e]||delete t[e]}function f(t,e,n,a){var s=""+e,u=""+n;if(!t&&s>u){var c=s;s=u,u=c}return s+o+u+o+(r.isUndefined(a)?i:a)}function l(t,e,n,r){var i=""+e,a=""+n;if(!t&&i>a){var o=i;i=a,a=o}var s={v:i,w:a};return r&&(s.name=r),s}function h(t,e){return f(t,e.v,e.w,e.name)}s.prototype._nodeCount=0,s.prototype._edgeCount=0,s.prototype.isDirected=function(){return this._isDirected},s.prototype.isMultigraph=function(){return this._isMultigraph},s.prototype.isCompound=function(){return this._isCompound},s.prototype.setGraph=function(t){return this._label=t,this},s.prototype.graph=function(){return this._label},s.prototype.setDefaultNodeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultNodeLabelFn=t,this},s.prototype.nodeCount=function(){return this._nodeCount},s.prototype.nodes=function(){return r.keys(this._nodes)},s.prototype.sources=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._in[e])}))},s.prototype.sinks=function(){var t=this;return r.filter(this.nodes(),(function(e){return r.isEmpty(t._out[e])}))},s.prototype.setNodes=function(t,e){var n=arguments,i=this;return r.each(t,(function(t){n.length>1?i.setNode(t,e):i.setNode(t)})),this},s.prototype.setNode=function(t,e){return r.has(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=a,this._children[t]={},this._children[a][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)},s.prototype.node=function(t){return this._nodes[t]},s.prototype.hasNode=function(t){return r.has(this._nodes,t)},s.prototype.removeNode=function(t){var e=this;if(r.has(this._nodes,t)){var n=function(t){e.removeEdge(e._edgeObjs[t])};delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],r.each(this.children(t),(function(t){e.setParent(t)})),delete this._children[t]),r.each(r.keys(this._in[t]),n),delete this._in[t],delete this._preds[t],r.each(r.keys(this._out[t]),n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this},s.prototype.setParent=function(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(r.isUndefined(e))e=a;else{for(var n=e+="";!r.isUndefined(n);n=this.parent(n))if(n===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this},s.prototype._removeFromParentsChildList=function(t){delete this._children[this._parent[t]][t]},s.prototype.parent=function(t){if(this._isCompound){var e=this._parent[t];if(e!==a)return e}},s.prototype.children=function(t){if(r.isUndefined(t)&&(t=a),this._isCompound){var e=this._children[t];if(e)return r.keys(e)}else{if(t===a)return this.nodes();if(this.hasNode(t))return[]}},s.prototype.predecessors=function(t){var e=this._preds[t];if(e)return r.keys(e)},s.prototype.successors=function(t){var e=this._sucs[t];if(e)return r.keys(e)},s.prototype.neighbors=function(t){var e=this.predecessors(t);if(e)return r.union(e,this.successors(t))},s.prototype.isLeaf=function(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length},s.prototype.filterNodes=function(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;r.each(this._nodes,(function(n,r){t(r)&&e.setNode(r,n)})),r.each(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var i={};return this._isCompound&&r.each(e.nodes(),(function(t){e.setParent(t,function t(r){var a=n.parent(r);return void 0===a||e.hasNode(a)?(i[r]=a,a):a in i?i[a]:t(a)}(t))})),e},s.prototype.setDefaultEdgeLabel=function(t){return r.isFunction(t)||(t=r.constant(t)),this._defaultEdgeLabelFn=t,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return r.values(this._edgeObjs)},s.prototype.setPath=function(t,e){const n=this,i=arguments;return r.reduce(t,(function(t,r){return i.length>1?n.setEdge(t,r,e):n.setEdge(t,r),r})),this},s.prototype.setEdge=function(){let t,e,n,i,a=!1;const o=arguments[0];"object"==typeof o&&null!==o&&"v"in o?(t=o.v,e=o.w,n=o.name,2===arguments.length&&(i=arguments[1],a=!0)):(t=o,e=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),t=""+t,e=""+e,r.isUndefined(n)||(n=""+n);var s=f(this._isDirected,t,e,n);if(r.has(this._edgeLabels,s))return a&&(this._edgeLabels[s]=i),this;if(!r.isUndefined(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[s]=a?i:this._defaultEdgeLabelFn(t,e,n);var c=l(this._isDirected,t,e,n);return t=c.v,e=c.w,Object.freeze(c),this._edgeObjs[s]=c,u(this._preds[e],t),u(this._sucs[t],e),this._in[e][s]=c,this._out[t][s]=c,this._edgeCount++,this},s.prototype.edge=function(t,e,n){var r=1===arguments.length?h(this._isDirected,arguments[0]):f(this._isDirected,t,e,n);return this._edgeLabels[r]},s.prototype.hasEdge=function(t,e,n){var i=1===arguments.length?h(this._isDirected,arguments[0]):f(this._isDirected,t,e,n);return r.has(this._edgeLabels,i)},s.prototype.removeEdge=function(t,e,n){const r=1===arguments.length?h(this._isDirected,arguments[0]):f(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],c(this._preds[e],t),c(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this},s.prototype.inEdges=function(t,e){var n=this._in[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.v===e})):i}},s.prototype.outEdges=function(t,e){var n=this._out[t];if(n){var i=r.values(n);return e?r.filter(i,(function(t){return t.w===e})):i}},s.prototype.nodeEdges=function(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}},function(t,e,n){"use strict";var r=n(2),i=n(70),a=n(3).Buffer,o=new Array(16);function s(){i.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function u(t,e){return t<<e|t>>>32-e}function c(t,e,n,r,i,a,o){return u(t+(e&n|~e&r)+i+a|0,o)+e|0}function f(t,e,n,r,i,a,o){return u(t+(e&r|n&~r)+i+a|0,o)+e|0}function l(t,e,n,r,i,a,o){return u(t+(e^n^r)+i+a|0,o)+e|0}function h(t,e,n,r,i,a,o){return u(t+(n^(e|~r))+i+a|0,o)+e|0}r(s,i),s.prototype._update=function(){for(var t=o,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var n=this._a,r=this._b,i=this._c,a=this._d;n=c(n,r,i,a,t[0],3614090360,7),a=c(a,n,r,i,t[1],3905402710,12),i=c(i,a,n,r,t[2],606105819,17),r=c(r,i,a,n,t[3],3250441966,22),n=c(n,r,i,a,t[4],4118548399,7),a=c(a,n,r,i,t[5],1200080426,12),i=c(i,a,n,r,t[6],2821735955,17),r=c(r,i,a,n,t[7],4249261313,22),n=c(n,r,i,a,t[8],1770035416,7),a=c(a,n,r,i,t[9],2336552879,12),i=c(i,a,n,r,t[10],4294925233,17),r=c(r,i,a,n,t[11],2304563134,22),n=c(n,r,i,a,t[12],1804603682,7),a=c(a,n,r,i,t[13],4254626195,12),i=c(i,a,n,r,t[14],2792965006,17),n=f(n,r=c(r,i,a,n,t[15],1236535329,22),i,a,t[1],4129170786,5),a=f(a,n,r,i,t[6],3225465664,9),i=f(i,a,n,r,t[11],643717713,14),r=f(r,i,a,n,t[0],3921069994,20),n=f(n,r,i,a,t[5],3593408605,5),a=f(a,n,r,i,t[10],38016083,9),i=f(i,a,n,r,t[15],3634488961,14),r=f(r,i,a,n,t[4],3889429448,20),n=f(n,r,i,a,t[9],568446438,5),a=f(a,n,r,i,t[14],3275163606,9),i=f(i,a,n,r,t[3],4107603335,14),r=f(r,i,a,n,t[8],1163531501,20),n=f(n,r,i,a,t[13],2850285829,5),a=f(a,n,r,i,t[2],4243563512,9),i=f(i,a,n,r,t[7],1735328473,14),n=l(n,r=f(r,i,a,n,t[12],2368359562,20),i,a,t[5],4294588738,4),a=l(a,n,r,i,t[8],2272392833,11),i=l(i,a,n,r,t[11],1839030562,16),r=l(r,i,a,n,t[14],4259657740,23),n=l(n,r,i,a,t[1],2763975236,4),a=l(a,n,r,i,t[4],1272893353,11),i=l(i,a,n,r,t[7],4139469664,16),r=l(r,i,a,n,t[10],3200236656,23),n=l(n,r,i,a,t[13],681279174,4),a=l(a,n,r,i,t[0],3936430074,11),i=l(i,a,n,r,t[3],3572445317,16),r=l(r,i,a,n,t[6],76029189,23),n=l(n,r,i,a,t[9],3654602809,4),a=l(a,n,r,i,t[12],3873151461,11),i=l(i,a,n,r,t[15],530742520,16),n=h(n,r=l(r,i,a,n,t[2],3299628645,23),i,a,t[0],4096336452,6),a=h(a,n,r,i,t[7],1126891415,10),i=h(i,a,n,r,t[14],2878612391,15),r=h(r,i,a,n,t[5],4237533241,21),n=h(n,r,i,a,t[12],1700485571,6),a=h(a,n,r,i,t[3],2399980690,10),i=h(i,a,n,r,t[10],4293915773,15),r=h(r,i,a,n,t[1],2240044497,21),n=h(n,r,i,a,t[8],1873313359,6),a=h(a,n,r,i,t[15],4264355552,10),i=h(i,a,n,r,t[6],2734768916,15),r=h(r,i,a,n,t[13],1309151649,21),n=h(n,r,i,a,t[4],4149444226,6),a=h(a,n,r,i,t[11],3174756917,10),i=h(i,a,n,r,t[2],718787259,15),r=h(r,i,a,n,t[9],3951481745,21),this._a=this._a+n|0,this._b=this._b+r|0,this._c=this._c+i|0,this._d=this._d+a|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=a.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=s},function(t,e,n){t.exports=i;var r=n(48).EventEmitter;function i(){r.call(this)}n(2)(i,r),i.Readable=n(49),i.Writable=n(132),i.Duplex=n(133),i.Transform=n(134),i.PassThrough=n(135),i.Stream=i,i.prototype.pipe=function(t,e){var n=this;function i(e){t.writable&&!1===t.write(e)&&n.pause&&n.pause()}function a(){n.readable&&n.resume&&n.resume()}n.on("data",i),t.on("drain",a),t._isStdio||e&&!1===e.end||(n.on("end",s),n.on("close",u));var o=!1;function s(){o||(o=!0,t.end())}function u(){o||(o=!0,"function"==typeof t.destroy&&t.destroy())}function c(t){if(f(),0===r.listenerCount(this,"error"))throw t}function f(){n.removeListener("data",i),t.removeListener("drain",a),n.removeListener("end",s),n.removeListener("close",u),n.removeListener("error",c),t.removeListener("error",c),n.removeListener("end",f),n.removeListener("close",f),t.removeListener("close",f)}return n.on("error",c),t.on("error",c),n.on("end",f),n.on("close",f),t.on("close",f),t.emit("pipe",n),t}},function(t,e,n){"use strict";var r,i="object"==typeof Reflect?Reflect:null,a=i&&"function"==typeof i.apply?i.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};r=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var o=Number.isNaN||function(t){return t!=t};function s(){s.init.call(this)}t.exports=s,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var u=10;function c(t){return void 0===t._maxListeners?s.defaultMaxListeners:t._maxListeners}function f(t,e,n,r){var i,a,o,s;if("function"!=typeof n)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n);if(void 0===(a=t._events)?(a=t._events=Object.create(null),t._eventsCount=0):(void 0!==a.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),a=t._events),o=a[e]),void 0===o)o=a[e]=n,++t._eventsCount;else if("function"==typeof o?o=a[e]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),(i=c(t))>0&&o.length>i&&!o.warned){o.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=t,u.type=e,u.count=o.length,s=u,console&&console.warn&&console.warn(s)}return t}function l(){for(var t=[],e=0;e<arguments.length;e++)t.push(arguments[e]);this.fired||(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,a(this.listener,this.target,t))}function h(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=l.bind(r);return i.listener=n,r.wrapFn=i,i}function d(t,e,n){var r=t._events;if(void 0===r)return[];var i=r[e];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(t){for(var e=new Array(t.length),n=0;n<e.length;++n)e[n]=t[n].listener||t[n];return e}(i):g(i,i.length)}function p(t){var e=this._events;if(void 0!==e){var n=e[t];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function g(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t[r];return n}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return u},set:function(t){if("number"!=typeof t||t<0||o(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");u=t}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||o(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this},s.prototype.getMaxListeners=function(){return c(this)},s.prototype.emit=function(t){for(var e=[],n=1;n<arguments.length;n++)e.push(arguments[n]);var r="error"===t,i=this._events;if(void 0!==i)r=r&&void 0===i.error;else if(!r)return!1;if(r){var o;if(e.length>0&&(o=e[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var u=i[t];if(void 0===u)return!1;if("function"==typeof u)a(u,this,e);else{var c=u.length,f=g(u,c);for(n=0;n<c;++n)a(f[n],this,e)}return!0},s.prototype.addListener=function(t,e){return f(this,t,e,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(t,e){return f(this,t,e,!0)},s.prototype.once=function(t,e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e);return this.on(t,h(this,t,e)),this},s.prototype.prependOnceListener=function(t,e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e);return this.prependListener(t,h(this,t,e)),this},s.prototype.removeListener=function(t,e){var n,r,i,a,o;if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e);if(void 0===(r=this._events))return this;if(void 0===(n=r[t]))return this;if(n===e||n.listener===e)0==--this._eventsCount?this._events=Object.create(null):(delete r[t],r.removeListener&&this.emit("removeListener",t,n.listener||e));else if("function"!=typeof n){for(i=-1,a=n.length-1;a>=0;a--)if(n[a]===e||n[a].listener===e){o=n[a].listener,i=a;break}if(i<0)return this;0===i?n.shift():function(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}(n,i),1===n.length&&(r[t]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",t,o||e)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(t){var e,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[t]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[t]),this;if(0===arguments.length){var i,a=Object.keys(n);for(r=0;r<a.length;++r)"removeListener"!==(i=a[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(e=n[t]))this.removeListener(t,e);else if(void 0!==e)for(r=e.length-1;r>=0;r--)this.removeListener(t,e[r]);return this},s.prototype.listeners=function(t){return d(this,t,!0)},s.prototype.rawListeners=function(t){return d(this,t,!1)},s.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):p.call(t,e)},s.prototype.listenerCount=p,s.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}},function(t,e,n){(e=t.exports=n(71)).Stream=e,e.Readable=e,e.Writable=n(51),e.Duplex=n(21),e.Transform=n(74),e.PassThrough=n(131)},function(t,e,n){var r=n(6),i=r.Buffer;function a(t,e){for(var n in t)e[n]=t[n]}function o(t,e,n){return i(t,e,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=r:(a(r,e),e.Buffer=o),a(i,o),o.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return i(t,e,n)},o.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=i(t);return void 0!==e?"string"==typeof n?r.fill(e,n):r.fill(e):r.fill(0),r},o.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i(t)},o.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r.SlowBuffer(t)}},function(t,e,n){"use strict";(function(e,r,i){var a=n(35);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,n){var r=t.entry;t.entry=null;for(;r;){var i=r.callback;e.pendingcb--,i(n),r=r.next}e.corkedRequestsFree?e.corkedRequestsFree.next=t:e.corkedRequestsFree=t}(e,t)}}t.exports=m;var s,u=!e.browser&&["v0.10","v0.9."].indexOf(e.version.slice(0,5))>-1?r:a.nextTick;m.WritableState=b;var c=n(27);c.inherits=n(2);var f={deprecate:n(130)},l=n(72),h=n(50).Buffer,d=i.Uint8Array||function(){};var p,g=n(73);function y(){}function b(t,e){s=s||n(21),t=t||{};var r=e instanceof s;this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var i=t.highWaterMark,c=t.writableHighWaterMark,f=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(c||0===c)?c:f,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var l=!1===t.decodeStrings;this.decodeStrings=!l,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var n=t._writableState,r=n.sync,i=n.writecb;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(n),e)!function(t,e,n,r,i){--e.pendingcb,n?(a.nextTick(i,r),a.nextTick(E,t,e),t._writableState.errorEmitted=!0,t.emit("error",r)):(i(r),t._writableState.errorEmitted=!0,t.emit("error",r),E(t,e))}(t,n,r,e,i);else{var o=x(n);o||n.corked||n.bufferProcessing||!n.bufferedRequest||w(t,n),r?u(_,t,n,o,i):_(t,n,o,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function m(t){if(s=s||n(21),!(p.call(m,this)||this instanceof s))return new m(t);this._writableState=new b(t,this),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),l.call(this)}function v(t,e,n,r,i,a,o){e.writelen=r,e.writecb=o,e.writing=!0,e.sync=!0,n?t._writev(i,e.onwrite):t._write(i,a,e.onwrite),e.sync=!1}function _(t,e,n,r){n||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,r(),E(t,e)}function w(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var r=e.bufferedRequestCount,i=new Array(r),a=e.corkedRequestsFree;a.entry=n;for(var s=0,u=!0;n;)i[s]=n,n.isBuf||(u=!1),n=n.next,s+=1;i.allBuffers=u,v(t,e,!0,e.length,i,"",a.finish),e.pendingcb++,e.lastBufferedRequest=null,a.next?(e.corkedRequestsFree=a.next,a.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,f=n.encoding,l=n.callback;if(v(t,e,!1,e.objectMode?1:c.length,c,f,l),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function x(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function k(t,e){t._final((function(n){e.pendingcb--,n&&t.emit("error",n),e.prefinished=!0,t.emit("prefinish"),E(t,e)}))}function E(t,e){var n=x(e);return n&&(!function(t,e){e.prefinished||e.finalCalled||("function"==typeof t._final?(e.pendingcb++,e.finalCalled=!0,a.nextTick(k,t,e)):(e.prefinished=!0,t.emit("prefinish")))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"))),n}c.inherits(m,l),b.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(b.prototype,"buffer",{get:f.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(m,Symbol.hasInstance,{value:function(t){return!!p.call(this,t)||this===m&&(t&&t._writableState instanceof b)}})):p=function(t){return t instanceof this},m.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},m.prototype.write=function(t,e,n){var r,i=this._writableState,o=!1,s=!i.objectMode&&(r=t,h.isBuffer(r)||r instanceof d);return s&&!h.isBuffer(t)&&(t=function(t){return h.from(t)}(t)),"function"==typeof e&&(n=e,e=null),s?e="buffer":e||(e=i.defaultEncoding),"function"!=typeof n&&(n=y),i.ended?function(t,e){var n=new Error("write after end");t.emit("error",n),a.nextTick(e,n)}(this,n):(s||function(t,e,n,r){var i=!0,o=!1;return null===n?o=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||e.objectMode||(o=new TypeError("Invalid non-string/buffer chunk")),o&&(t.emit("error",o),a.nextTick(r,o),i=!1),i}(this,i,t,n))&&(i.pendingcb++,o=function(t,e,n,r,i,a){if(!n){var o=function(t,e,n){t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=h.from(e,n));return e}(e,r,i);r!==o&&(n=!0,i="buffer",r=o)}var s=e.objectMode?1:r.length;e.length+=s;var u=e.length<e.highWaterMark;u||(e.needDrain=!0);if(e.writing||e.corked){var c=e.lastBufferedRequest;e.lastBufferedRequest={chunk:r,encoding:i,isBuf:n,callback:a,next:null},c?c.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else v(t,e,!1,s,r,i,a);return u}(this,i,s,t,e,n)),o},m.prototype.cork=function(){this._writableState.corked++},m.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,t.writing||t.corked||t.finished||t.bufferProcessing||!t.bufferedRequest||w(this,t))},m.prototype.setDefaultEncoding=function(t){if("string"==typeof t&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(m.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),m.prototype._write=function(t,e,n){n(new Error("_write() is not implemented"))},m.prototype._writev=null,m.prototype.end=function(t,e,n){var r=this._writableState;"function"==typeof t?(n=t,t=null,e=null):"function"==typeof e&&(n=e,e=null),null!=t&&this.write(t,e),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(t,e,n){e.ending=!0,E(t,e),n&&(e.finished?a.nextTick(n):t.once("finish",n));e.ended=!0,t.writable=!1}(this,r,n)},Object.defineProperty(m.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),m.prototype.destroy=g.destroy,m.prototype._undestroy=g.undestroy,m.prototype._destroy=function(t,e){this.end(),e(t)}}).call(this,n(5),n(128).setImmediate,n(13))},function(t,e,n){"use strict";var r=n(3).Buffer,i=r.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function a(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(r.isEncoding===i||!i(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=u,this.end=c,e=4;break;case"utf8":this.fillLast=s,e=4;break;case"base64":this.text=f,this.end=l,e=3;break;default:return this.write=h,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(e)}function o(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,n=function(t,e,n){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==n?n:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function u(t,e){if((t.length-e)%2==0){var n=t.toString("utf16le",e);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function f(t,e){var n=(t.length-e)%3;return 0===n?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function l(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):""}e.StringDecoder=a,a.prototype.write=function(t){if(0===t.length)return"";var e,n;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<t.length?e?e+this.text(t,n):this.text(t,n):e||""},a.prototype.end=function(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+"�":e},a.prototype.text=function(t,e){var n=function(t,e,n){var r=e.length-1;if(r<n)return 0;var i=o(e[r]);if(i>=0)return i>0&&(t.lastNeed=i-1),i;if(--r<n||-2===i)return 0;if((i=o(e[r]))>=0)return i>0&&(t.lastNeed=i-2),i;if(--r<n||-2===i)return 0;if((i=o(e[r]))>=0)return i>0&&(2===i?i=0:t.lastNeed=i-3),i;return 0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var r=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,r),t.toString("utf8",e,r)},a.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},function(t,e,n){"use strict";var r=n(6).Buffer,i=n(2),a=n(70),o=new Array(16),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],u=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],c=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],f=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],l=[0,1518500249,1859775393,2400959708,2840853838],h=[1352829926,1548603684,1836072691,2053994217,0];function d(){a.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function p(t,e){return t<<e|t>>>32-e}function g(t,e,n,r,i,a,o,s){return p(t+(e^n^r)+a+o|0,s)+i|0}function y(t,e,n,r,i,a,o,s){return p(t+(e&n|~e&r)+a+o|0,s)+i|0}function b(t,e,n,r,i,a,o,s){return p(t+((e|~n)^r)+a+o|0,s)+i|0}function m(t,e,n,r,i,a,o,s){return p(t+(e&r|n&~r)+a+o|0,s)+i|0}function v(t,e,n,r,i,a,o,s){return p(t+(e^(n|~r))+a+o|0,s)+i|0}i(d,a),d.prototype._update=function(){for(var t=o,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var n=0|this._a,r=0|this._b,i=0|this._c,a=0|this._d,d=0|this._e,_=0|this._a,w=0|this._b,x=0|this._c,k=0|this._d,E=0|this._e,A=0;A<80;A+=1){var S,M;A<16?(S=g(n,r,i,a,d,t[s[A]],l[0],c[A]),M=v(_,w,x,k,E,t[u[A]],h[0],f[A])):A<32?(S=y(n,r,i,a,d,t[s[A]],l[1],c[A]),M=m(_,w,x,k,E,t[u[A]],h[1],f[A])):A<48?(S=b(n,r,i,a,d,t[s[A]],l[2],c[A]),M=b(_,w,x,k,E,t[u[A]],h[2],f[A])):A<64?(S=m(n,r,i,a,d,t[s[A]],l[3],c[A]),M=y(_,w,x,k,E,t[u[A]],h[3],f[A])):(S=v(n,r,i,a,d,t[s[A]],l[4],c[A]),M=g(_,w,x,k,E,t[u[A]],h[4],f[A])),n=d,d=a,a=p(i,10),i=r,r=S,_=E,E=k,k=p(x,10),x=w,w=M}var T=this._b+i+k|0;this._b=this._c+a+E|0,this._c=this._d+d+_|0,this._d=this._e+n+w|0,this._e=this._a+r+x|0,this._a=T},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=r.alloc?r.alloc(20):new r(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=d},function(t,e,n){(e=t.exports=function(t){t=t.toLowerCase();var n=e[t];if(!n)throw new Error(t+" is not supported (we accept pull requests)");return new n}).sha=n(136),e.sha1=n(137),e.sha224=n(138),e.sha256=n(75),e.sha384=n(139),e.sha512=n(76)},function(t,e,n){"use strict";e.utils=n(145),e.Cipher=n(146),e.DES=n(147),e.CBC=n(148),e.EDE=n(149)},function(t,e,n){var r=n(150),i=n(158),a=n(86);e.createCipher=e.Cipher=r.createCipher,e.createCipheriv=e.Cipheriv=r.createCipheriv,e.createDecipher=e.Decipher=i.createDecipher,e.createDecipheriv=e.Decipheriv=i.createDecipheriv,e.listCiphers=e.getCiphers=function(){return Object.keys(a)}},function(t,e,n){var r={ECB:n(151),CBC:n(152),CFB:n(153),CFB8:n(154),CFB1:n(155),OFB:n(156),CTR:n(84),GCM:n(84)},i=n(86);for(var a in i)i[a].module=r[i[a].mode];t.exports=i},function(t,e,n){var r;function i(t){this.rand=t}if(t.exports=function(t){return r||(r=new i(null)),r.generate(t)},t.exports.Rand=i,i.prototype.generate=function(t){return this._rand(t)},i.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var e=new Uint8Array(t),n=0;n<e.length;n++)e[n]=this.rand.getByte();return e},"object"==typeof self)self.crypto&&self.crypto.getRandomValues?i.prototype._rand=function(t){var e=new Uint8Array(t);return self.crypto.getRandomValues(e),e}:self.msCrypto&&self.msCrypto.getRandomValues?i.prototype._rand=function(t){var e=new Uint8Array(t);return self.msCrypto.getRandomValues(e),e}:"object"==typeof window&&(i.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var a=n(162);if("function"!=typeof a.randomBytes)throw new Error("Not supported");i.prototype._rand=function(t){return a.randomBytes(t)}}catch(t){}},function(t,e,n){(function(e){var r=n(4),i=n(22);function a(t,n){var i=function(t){var e=o(t);return{blinder:e.toRed(r.mont(t.modulus)).redPow(new r(t.publicExponent)).fromRed(),unblinder:e.invm(t.modulus)}}(n),a=n.modulus.byteLength(),s=(r.mont(n.modulus),new r(t).mul(i.blinder).umod(n.modulus)),u=s.toRed(r.mont(n.prime1)),c=s.toRed(r.mont(n.prime2)),f=n.coefficient,l=n.prime1,h=n.prime2,d=u.redPow(n.exponent1),p=c.redPow(n.exponent2);d=d.fromRed(),p=p.fromRed();var g=d.isub(p).imul(f).umod(l);return g.imul(h),p.iadd(g),new e(p.imul(i.unblinder).umod(n.modulus).toArray(!1,a))}function o(t){for(var e=t.modulus.byteLength(),n=new r(i(e));n.cmp(t.modulus)>=0||!n.umod(t.prime1)||!n.umod(t.prime2);)n=new r(i(e));return n}t.exports=a,a.getr=o}).call(this,n(6).Buffer)},function(t,e,n){"use strict";var r=e;r.version=n(167).version,r.utils=n(10),r.rand=n(58),r.curve=n(92),r.curves=n(61),r.ec=n(178),r.eddsa=n(182)},function(t,e,n){"use strict";var r,i=e,a=n(62),o=n(92),s=n(10).assert;function u(t){"short"===t.type?this.curve=new o.short(t):"edwards"===t.type?this.curve=new o.edwards(t):this.curve=new o.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,s(this.g.validate(),"Invalid curve"),s(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function c(t,e){Object.defineProperty(i,t,{configurable:!0,enumerable:!0,get:function(){var n=new u(e);return Object.defineProperty(i,t,{configurable:!0,enumerable:!0,value:n}),n}})}i.PresetCurve=u,c("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:a.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),c("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:a.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),c("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:a.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),c("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:a.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),c("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:a.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),c("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["9"]}),c("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:a.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=n(177)}catch(t){r=void 0}c("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:a.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})},function(t,e,n){var r=e;r.utils=n(14),r.common=n(29),r.sha=n(171),r.ripemd=n(175),r.hmac=n(176),r.sha1=r.sha.sha1,r.sha256=r.sha.sha256,r.sha224=r.sha.sha224,r.sha384=r.sha.sha384,r.sha512=r.sha.sha512,r.ripemd160=r.ripemd.ripemd160},function(t,e){},function(t,e,n){const r=n(8),i=n(65);t.exports=function(t,e,n,r){return function(t,e,n,r){const a={},o=new i;let s,u;var c=function(t){const e=t.v!==s?t.v:t.w,r=a[e],i=n(t),c=u.distance+i;if(i<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+t+" Weight: "+i);c<r.distance&&(r.distance=c,r.predecessor=s,o.decrease(e,c))};t.nodes().forEach((function(t){var n=t===e?0:Number.POSITIVE_INFINITY;a[t]={distance:n},o.add(t,n)}));for(;o.size()>0&&(s=o.removeMin(),(u=a[s]).distance!==Number.POSITIVE_INFINITY);)r(s).forEach(c);return a}(t,String(e),n||a,r||function(e){return t.outEdges(e)})};var a=r.constant(1)},function(t,e,n){const r=n(8);function i(){this._arr=[],this._keyIndices={}}t.exports=i,i.prototype.size=function(){return this._arr.length},i.prototype.keys=function(){return this._arr.map((function(t){return t.key}))},i.prototype.has=function(t){return r.has(this._keyIndices,t)},i.prototype.priority=function(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority},i.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},i.prototype.add=function(t,e){var n=this._keyIndices;if(t=String(t),!r.has(n,t)){var i=this._arr,a=i.length;return n[t]=a,i.push({key:t,priority:e}),this._decrease(a),!0}return!1},i.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key},i.prototype.decrease=function(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)},i.prototype._heapify=function(t){const e=this._arr,n=2*t,r=n+1;let i=t;n<e.length&&(i=e[n].priority<e[i].priority?n:i,r<e.length&&(i=e[r].priority<e[i].priority?r:i),i!==t&&(this._swap(t,i),this._heapify(i)))},i.prototype._decrease=function(t){for(var e,n=this._arr,r=n[t].priority;0!==t&&!(n[e=t>>1].priority<r);)this._swap(t,e),t=e},i.prototype._swap=function(t,e){var n=this._arr,r=this._keyIndices,i=n[t],a=n[e];n[t]=a,n[e]=i,r[a.key]=t,r[i.key]=e}},function(t,e,n){var r=n(8);t.exports=function(t){let e=0;const n=[],i={},a=[];return t.nodes().forEach((function(o){r.has(i,o)||function o(s){var u=i[s]={onStack:!0,lowlink:e,index:e++};n.push(s);t.successors(s).forEach((function(t){r.has(i,t)?i[t].onStack&&(u.lowlink=Math.min(u.lowlink,i[t].index)):(o(t),u.lowlink=Math.min(u.lowlink,i[t].lowlink))}));if(u.lowlink===u.index){const t=[];let e;do{e=n.pop(),i[e].onStack=!1,t.push(e)}while(s!==e);a.push(t)}}(o)})),a}},function(t,e,n){const r=n(8);function i(t){const e={},n={},i=[];if(r.each(t.sinks(),(function o(s){if(r.has(n,s))throw new a;r.has(e,s)||(n[s]=!0,e[s]=!0,r.each(t.predecessors(s),o),delete n[s],i.push(s))})),r.size(e)!==t.nodeCount())throw new a;return i}function a(){}t.exports=i,i.CycleException=a,a.prototype=new Error},function(t,e,n){var r=n(8);t.exports=function(t,e,n){r.isArray(e)||(e=[e]);var i=(t.isDirected()?t.successors:t.neighbors).bind(t);const a=[],o={};return r.each(e,(function(e){if(!t.hasNode(e))throw new Error("Graph does not have node: "+e);!function t(e,n,i,a,o,s){r.has(a,n)||(a[n]=!0,i||s.push(n),r.each(o(n),(function(n){t(e,n,i,a,o,s)})),i&&s.push(n))}(t,e,"post"===n,o,i,a)})),a}},function(t,e){var n={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==n.call(t)}},function(t,e,n){"use strict";var r=n(3).Buffer,i=n(47).Transform;function a(t){i.call(this),this._block=r.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}n(2)(a,i),a.prototype._transform=function(t,e,n){var r=null;try{this.update(t,e)}catch(t){r=t}n(r)},a.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(t){e=t}t(e)},a.prototype.update=function(t,e){if(function(t,e){if(!r.isBuffer(t)&&"string"!=typeof t)throw new TypeError(e+" must be a string or a buffer")}(t,"Data"),this._finalized)throw new Error("Digest already called");r.isBuffer(t)||(t=r.from(t,e));for(var n=this._block,i=0;this._blockOffset+t.length-i>=this._blockSize;){for(var a=this._blockOffset;a<this._blockSize;)n[a++]=t[i++];this._update(),this._blockOffset=0}for(;i<t.length;)n[this._blockOffset++]=t[i++];for(var o=0,s=8*t.length;s>0;++o)this._length[o]+=s,(s=this._length[o]/4294967296|0)>0&&(this._length[o]-=4294967296*s);return this},a.prototype._update=function(){throw new Error("_update is not implemented")},a.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var n=0;n<4;++n)this._length[n]=0;return e},a.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=a},function(t,e,n){"use strict";(function(e,r){var i=n(35);t.exports=v;var a,o=n(69);v.ReadableState=m;n(48).EventEmitter;var s=function(t,e){return t.listeners(e).length},u=n(72),c=n(50).Buffer,f=e.Uint8Array||function(){};var l=n(27);l.inherits=n(2);var h=n(125),d=void 0;d=h&&h.debuglog?h.debuglog("stream"):function(){};var p,g=n(126),y=n(73);l.inherits(v,u);var b=["error","close","destroy","pause","resume"];function m(t,e){t=t||{};var r=e instanceof(a=a||n(21));this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var i=t.highWaterMark,o=t.readableHighWaterMark,s=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:r&&(o||0===o)?o:s,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(p||(p=n(52).StringDecoder),this.decoder=new p(t.encoding),this.encoding=t.encoding)}function v(t){if(a=a||n(21),!(this instanceof v))return new v(t);this._readableState=new m(t,this),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),u.call(this)}function _(t,e,n,r,i){var a,o=t._readableState;null===e?(o.reading=!1,function(t,e){if(e.ended)return;if(e.decoder){var n=e.decoder.end();n&&n.length&&(e.buffer.push(n),e.length+=e.objectMode?1:n.length)}e.ended=!0,E(t)}(t,o)):(i||(a=function(t,e){var n;r=e,c.isBuffer(r)||r instanceof f||"string"==typeof e||void 0===e||t.objectMode||(n=new TypeError("Invalid non-string/buffer chunk"));var r;return n}(o,e)),a?t.emit("error",a):o.objectMode||e&&e.length>0?("string"==typeof e||o.objectMode||Object.getPrototypeOf(e)===c.prototype||(e=function(t){return c.from(t)}(e)),r?o.endEmitted?t.emit("error",new Error("stream.unshift() after end event")):w(t,o,e,!0):o.ended?t.emit("error",new Error("stream.push() after EOF")):(o.reading=!1,o.decoder&&!n?(e=o.decoder.write(e),o.objectMode||0!==e.length?w(t,o,e,!1):S(t,o)):w(t,o,e,!1))):r||(o.reading=!1));return function(t){return!t.ended&&(t.needReadable||t.length<t.highWaterMark||0===t.length)}(o)}function w(t,e,n,r){e.flowing&&0===e.length&&!e.sync?(t.emit("data",n),t.read(0)):(e.length+=e.objectMode?1:n.length,r?e.buffer.unshift(n):e.buffer.push(n),e.needReadable&&E(t)),S(t,e)}Object.defineProperty(v.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}}),v.prototype.destroy=y.destroy,v.prototype._undestroy=y.undestroy,v.prototype._destroy=function(t,e){this.push(null),e(t)},v.prototype.push=function(t,e){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof t&&((e=e||r.defaultEncoding)!==r.encoding&&(t=c.from(t,e),e=""),n=!0),_(this,t,e,!1,n)},v.prototype.unshift=function(t){return _(this,t,null,!0,!1)},v.prototype.isPaused=function(){return!1===this._readableState.flowing},v.prototype.setEncoding=function(t){return p||(p=n(52).StringDecoder),this._readableState.decoder=new p(t),this._readableState.encoding=t,this};var x=8388608;function k(t,e){return t<=0||0===e.length&&e.ended?0:e.objectMode?1:t!=t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=function(t){return t>=x?t=x:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function E(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(d("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?i.nextTick(A,t):A(t))}function A(t){d("emit readable"),t.emit("readable"),C(t)}function S(t,e){e.readingMore||(e.readingMore=!0,i.nextTick(M,t,e))}function M(t,e){for(var n=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length<e.highWaterMark&&(d("maybeReadMore read 0"),t.read(0),n!==e.length);)n=e.length;e.readingMore=!1}function T(t){d("readable nexttick read 0"),t.read(0)}function D(t,e){e.reading||(d("resume read 0"),t.read(0)),e.resumeScheduled=!1,e.awaitDrain=0,t.emit("resume"),C(t),e.flowing&&!e.reading&&t.read(0)}function C(t){var e=t._readableState;for(d("flow",e.flowing);e.flowing&&null!==t.read(););}function O(t,e){return 0===e.length?null:(e.objectMode?n=e.buffer.shift():!t||t>=e.length?(n=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.head.data:e.buffer.concat(e.length),e.buffer.clear()):n=function(t,e,n){var r;t<e.head.data.length?(r=e.head.data.slice(0,t),e.head.data=e.head.data.slice(t)):r=t===e.head.data.length?e.shift():n?function(t,e){var n=e.head,r=1,i=n.data;t-=i.length;for(;n=n.next;){var a=n.data,o=t>a.length?a.length:t;if(o===a.length?i+=a:i+=a.slice(0,t),0===(t-=o)){o===a.length?(++r,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=a.slice(o));break}++r}return e.length-=r,i}(t,e):function(t,e){var n=c.allocUnsafe(t),r=e.head,i=1;r.data.copy(n),t-=r.data.length;for(;r=r.next;){var a=r.data,o=t>a.length?a.length:t;if(a.copy(n,n.length-t,0,o),0===(t-=o)){o===a.length?(++i,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=a.slice(o));break}++i}return e.length-=i,n}(t,e);return r}(t,e.buffer,e.decoder),n);var n}function R(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,i.nextTick(N,e,t))}function N(t,e){t.endEmitted||0!==t.length||(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function I(t,e){for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}v.prototype.read=function(t){d("read",t),t=parseInt(t,10);var e=this._readableState,n=t;if(0!==t&&(e.emittedReadable=!1),0===t&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return d("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?R(this):E(this),null;if(0===(t=k(t,e))&&e.ended)return 0===e.length&&R(this),null;var r,i=e.needReadable;return d("need readable",i),(0===e.length||e.length-t<e.highWaterMark)&&d("length less than watermark",i=!0),e.ended||e.reading?d("reading or ended",i=!1):i&&(d("do read"),e.reading=!0,e.sync=!0,0===e.length&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=k(n,e))),null===(r=t>0?O(t,e):null)?(e.needReadable=!0,t=0):e.length-=t,0===e.length&&(e.ended||(e.needReadable=!0),n!==t&&e.ended&&R(this)),null!==r&&this.emit("data",r),r},v.prototype._read=function(t){this.emit("error",new Error("_read() is not implemented"))},v.prototype.pipe=function(t,e){var n=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=t;break;case 1:a.pipes=[a.pipes,t];break;default:a.pipes.push(t)}a.pipesCount+=1,d("pipe count=%d opts=%j",a.pipesCount,e);var u=(!e||!1!==e.end)&&t!==r.stdout&&t!==r.stderr?f:v;function c(e,r){d("onunpipe"),e===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,d("cleanup"),t.removeListener("close",b),t.removeListener("finish",m),t.removeListener("drain",l),t.removeListener("error",y),t.removeListener("unpipe",c),n.removeListener("end",f),n.removeListener("end",v),n.removeListener("data",g),h=!0,!a.awaitDrain||t._writableState&&!t._writableState.needDrain||l())}function f(){d("onend"),t.end()}a.endEmitted?i.nextTick(u):n.once("end",u),t.on("unpipe",c);var l=function(t){return function(){var e=t._readableState;d("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,C(t))}}(n);t.on("drain",l);var h=!1;var p=!1;function g(e){d("ondata"),p=!1,!1!==t.write(e)||p||((1===a.pipesCount&&a.pipes===t||a.pipesCount>1&&-1!==I(a.pipes,t))&&!h&&(d("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,p=!0),n.pause())}function y(e){d("onerror",e),v(),t.removeListener("error",y),0===s(t,"error")&&t.emit("error",e)}function b(){t.removeListener("finish",m),v()}function m(){d("onfinish"),t.removeListener("close",b),v()}function v(){d("unpipe"),n.unpipe(t)}return n.on("data",g),function(t,e,n){if("function"==typeof t.prependListener)return t.prependListener(e,n);t._events&&t._events[e]?o(t._events[e])?t._events[e].unshift(n):t._events[e]=[n,t._events[e]]:t.on(e,n)}(t,"error",y),t.once("close",b),t.once("finish",m),t.emit("pipe",n),a.flowing||(d("pipe resume"),n.resume()),t},v.prototype.unpipe=function(t){var e=this._readableState,n={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,n),this);if(!t){var r=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a<i;a++)r[a].emit("unpipe",this,n);return this}var o=I(e.pipes,t);return-1===o?this:(e.pipes.splice(o,1),e.pipesCount-=1,1===e.pipesCount&&(e.pipes=e.pipes[0]),t.emit("unpipe",this,n),this)},v.prototype.on=function(t,e){var n=u.prototype.on.call(this,t,e);if("data"===t)!1!==this._readableState.flowing&&this.resume();else if("readable"===t){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&E(this):i.nextTick(T,this))}return n},v.prototype.addListener=v.prototype.on,v.prototype.resume=function(){var t=this._readableState;return t.flowing||(d("resume"),t.flowing=!0,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,i.nextTick(D,t,e))}(this,t)),this},v.prototype.pause=function(){return d("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(d("pause"),this._readableState.flowing=!1,this.emit("pause")),this},v.prototype.wrap=function(t){var e=this,n=this._readableState,r=!1;for(var i in t.on("end",(function(){if(d("wrapped end"),n.decoder&&!n.ended){var t=n.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(i){(d("wrapped data"),n.decoder&&(i=n.decoder.write(i)),n.objectMode&&null==i)||(n.objectMode||i&&i.length)&&(e.push(i)||(r=!0,t.pause()))})),t)void 0===this[i]&&"function"==typeof t[i]&&(this[i]=function(e){return function(){return t[e].apply(t,arguments)}}(i));for(var a=0;a<b.length;a++)t.on(b[a],this.emit.bind(this,b[a]));return this._read=function(e){d("wrapped _read",e),r&&(r=!1,t.resume())},this},Object.defineProperty(v.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),v._fromList=O}).call(this,n(13),n(5))},function(t,e,n){t.exports=n(48).EventEmitter},function(t,e,n){"use strict";var r=n(35);function i(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var n=this,a=this._readableState&&this._readableState.destroyed,o=this._writableState&&this._writableState.destroyed;return a||o?(e?e(t):!t||this._writableState&&this._writableState.errorEmitted||r.nextTick(i,this,t),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?(r.nextTick(i,n,t),n._writableState&&(n._writableState.errorEmitted=!0)):e&&e(t)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(t,e,n){"use strict";t.exports=o;var r=n(21),i=n(27);function a(t,e){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=e&&this.push(e),r(t);var i=this._readableState;i.reading=!1,(i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}function o(t){if(!(this instanceof o))return new o(t);r.call(this,t),this._transformState={afterTransform:a.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,t&&("function"==typeof t.transform&&(this._transform=t.transform),"function"==typeof t.flush&&(this._flush=t.flush)),this.on("prefinish",s)}function s(){var t=this;"function"==typeof this._flush?this._flush((function(e,n){u(t,e,n)})):u(this,null,null)}function u(t,e,n){if(e)return t.emit("error",e);if(null!=n&&t.push(n),t._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(t._transformState.transforming)throw new Error("Calling transform done when still transforming");return t.push(null)}i.inherits=n(2),i.inherits(o,r),o.prototype.push=function(t,e){return this._transformState.needTransform=!1,r.prototype.push.call(this,t,e)},o.prototype._transform=function(t,e,n){throw new Error("_transform() is not implemented")},o.prototype._write=function(t,e,n){var r=this._transformState;if(r.writecb=n,r.writechunk=t,r.writeencoding=e,!r.transforming){var i=this._readableState;(r.needTransform||i.needReadable||i.length<i.highWaterMark)&&this._read(i.highWaterMark)}},o.prototype._read=function(t){var e=this._transformState;null!==e.writechunk&&e.writecb&&!e.transforming?(e.transforming=!0,this._transform(e.writechunk,e.writeencoding,e.afterTransform)):e.needTransform=!0},o.prototype._destroy=function(t,e){var n=this;r.prototype._destroy.call(this,t,(function(t){e(t),n.emit("close")}))}},function(t,e,n){var r=n(2),i=n(23),a=n(3).Buffer,o=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function u(){this.init(),this._w=s,i.call(this,64,56)}function c(t,e,n){return n^t&(e^n)}function f(t,e,n){return t&e|n&(t|e)}function l(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function h(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function d(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}r(u,i),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(t){for(var e,n=this._w,r=0|this._a,i=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,p=0|this._f,g=0|this._g,y=0|this._h,b=0;b<16;++b)n[b]=t.readInt32BE(4*b);for(;b<64;++b)n[b]=0|(((e=n[b-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+n[b-7]+d(n[b-15])+n[b-16];for(var m=0;m<64;++m){var v=y+h(u)+c(u,p,g)+o[m]+n[m]|0,_=l(r)+f(r,i,a)|0;y=g,g=p,p=u,u=s+v|0,s=a,a=i,i=r,r=v+_|0}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0,this._f=p+this._f|0,this._g=g+this._g|0,this._h=y+this._h|0},u.prototype._hash=function(){var t=a.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=u},function(t,e,n){var r=n(2),i=n(23),a=n(3).Buffer,o=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function u(){this.init(),this._w=s,i.call(this,128,112)}function c(t,e,n){return n^t&(e^n)}function f(t,e,n){return t&e|n&(t|e)}function l(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function h(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function d(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function p(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function g(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function y(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function b(t,e){return t>>>0<e>>>0?1:0}r(u,i),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(t){for(var e=this._w,n=0|this._ah,r=0|this._bh,i=0|this._ch,a=0|this._dh,s=0|this._eh,u=0|this._fh,m=0|this._gh,v=0|this._hh,_=0|this._al,w=0|this._bl,x=0|this._cl,k=0|this._dl,E=0|this._el,A=0|this._fl,S=0|this._gl,M=0|this._hl,T=0;T<32;T+=2)e[T]=t.readInt32BE(4*T),e[T+1]=t.readInt32BE(4*T+4);for(;T<160;T+=2){var D=e[T-30],C=e[T-30+1],O=d(D,C),R=p(C,D),N=g(D=e[T-4],C=e[T-4+1]),I=y(C,D),B=e[T-14],L=e[T-14+1],P=e[T-32],F=e[T-32+1],q=R+L|0,j=O+B+b(q,R)|0;j=(j=j+N+b(q=q+I|0,I)|0)+P+b(q=q+F|0,F)|0,e[T]=j,e[T+1]=q}for(var U=0;U<160;U+=2){j=e[U],q=e[U+1];var z=f(n,r,i),Y=f(_,w,x),H=l(n,_),V=l(_,n),$=h(s,E),G=h(E,s),W=o[U],K=o[U+1],X=c(s,u,m),Z=c(E,A,S),J=M+G|0,Q=v+$+b(J,M)|0;Q=(Q=(Q=Q+X+b(J=J+Z|0,Z)|0)+W+b(J=J+K|0,K)|0)+j+b(J=J+q|0,q)|0;var tt=V+Y|0,et=H+z+b(tt,V)|0;v=m,M=S,m=u,S=A,u=s,A=E,s=a+Q+b(E=k+J|0,k)|0,a=i,k=x,i=r,x=w,r=n,w=_,n=Q+et+b(_=J+tt|0,J)|0}this._al=this._al+_|0,this._bl=this._bl+w|0,this._cl=this._cl+x|0,this._dl=this._dl+k|0,this._el=this._el+E|0,this._fl=this._fl+A|0,this._gl=this._gl+S|0,this._hl=this._hl+M|0,this._ah=this._ah+n+b(this._al,_)|0,this._bh=this._bh+r+b(this._bl,w)|0,this._ch=this._ch+i+b(this._cl,x)|0,this._dh=this._dh+a+b(this._dl,k)|0,this._eh=this._eh+s+b(this._el,E)|0,this._fh=this._fh+u+b(this._fl,A)|0,this._gh=this._gh+m+b(this._gl,S)|0,this._hh=this._hh+v+b(this._hl,M)|0},u.prototype._hash=function(){var t=a.allocUnsafe(64);function e(e,n,r){t.writeInt32BE(e,r),t.writeInt32BE(n,r+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=u},function(t,e,n){"use strict";var r=n(2),i=n(140),a=n(19),o=n(3).Buffer,s=n(78),u=n(53),c=n(54),f=o.alloc(128);function l(t,e){a.call(this,"digest"),"string"==typeof e&&(e=o.from(e));var n="sha512"===t||"sha384"===t?128:64;(this._alg=t,this._key=e,e.length>n)?e=("rmd160"===t?new u:c(t)).update(e).digest():e.length<n&&(e=o.concat([e,f],n));for(var r=this._ipad=o.allocUnsafe(n),i=this._opad=o.allocUnsafe(n),s=0;s<n;s++)r[s]=54^e[s],i[s]=92^e[s];this._hash="rmd160"===t?new u:c(t),this._hash.update(r)}r(l,a),l.prototype._update=function(t){this._hash.update(t)},l.prototype._final=function(){var t=this._hash.digest();return("rmd160"===this._alg?new u:c(this._alg)).update(this._opad).update(t).digest()},t.exports=function(t,e){return"rmd160"===(t=t.toLowerCase())||"ripemd160"===t?new l("rmd160",e):"md5"===t?new i(s,e):new l(t,e)}},function(t,e,n){var r=n(46);t.exports=function(t){return(new r).update(t).digest()}},function(t){t.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},function(t,e,n){e.pbkdf2=n(142),e.pbkdf2Sync=n(83)},function(t,e,n){(function(e){var n=Math.pow(2,30)-1;function r(t,n){if("string"!=typeof t&&!e.isBuffer(t))throw new TypeError(n+" must be a buffer or string")}t.exports=function(t,e,i,a){if(r(t,"Password"),r(e,"Salt"),"number"!=typeof i)throw new TypeError("Iterations not a number");if(i<0)throw new TypeError("Bad iterations");if("number"!=typeof a)throw new TypeError("Key length not a number");if(a<0||a>n||a!=a)throw new TypeError("Bad key length")}}).call(this,n(6).Buffer)},function(t,e,n){(function(e){var n;e.browser?n="utf-8":n=parseInt(e.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary";t.exports=n}).call(this,n(5))},function(t,e,n){var r=n(78),i=n(53),a=n(54),o=n(81),s=n(82),u=n(3).Buffer,c=u.alloc(128),f={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function l(t,e,n){var o=function(t){return"rmd160"===t||"ripemd160"===t?function(t){return(new i).update(t).digest()}:"md5"===t?r:function(e){return a(t).update(e).digest()}}(t),s="sha512"===t||"sha384"===t?128:64;e.length>s?e=o(e):e.length<s&&(e=u.concat([e,c],s));for(var l=u.allocUnsafe(s+f[t]),h=u.allocUnsafe(s+f[t]),d=0;d<s;d++)l[d]=54^e[d],h[d]=92^e[d];var p=u.allocUnsafe(s+n+4);l.copy(p,0,0,s),this.ipad1=p,this.ipad2=l,this.opad=h,this.alg=t,this.blocksize=s,this.hash=o,this.size=f[t]}l.prototype.run=function(t,e){return t.copy(e,this.blocksize),this.hash(e).copy(this.opad,this.blocksize),this.hash(this.opad)},t.exports=function(t,e,n,r,i){o(t,e,n,r),u.isBuffer(t)||(t=u.from(t,s)),u.isBuffer(e)||(e=u.from(e,s));var a=new l(i=i||"sha1",t,e.length),c=u.allocUnsafe(r),h=u.allocUnsafe(e.length+4);e.copy(h,0,0,e.length);for(var d=0,p=f[i],g=Math.ceil(r/p),y=1;y<=g;y++){h.writeUInt32BE(y,e.length);for(var b=a.run(h,a.ipad1),m=b,v=1;v<n;v++){m=a.run(m,a.ipad2);for(var _=0;_<p;_++)b[_]^=m[_]}b.copy(c,d),d+=p}return c}},function(t,e,n){var r=n(28),i=n(3).Buffer,a=n(85);function o(t){var e=t._cipher.encryptBlockRaw(t._prev);return a(t._prev),e}e.encrypt=function(t,e){var n=Math.ceil(e.length/16),a=t._cache.length;t._cache=i.concat([t._cache,i.allocUnsafe(16*n)]);for(var s=0;s<n;s++){var u=o(t),c=a+16*s;t._cache.writeUInt32BE(u[0],c+0),t._cache.writeUInt32BE(u[1],c+4),t._cache.writeUInt32BE(u[2],c+8),t._cache.writeUInt32BE(u[3],c+12)}var f=t._cache.slice(0,e.length);return t._cache=t._cache.slice(e.length),r(e,f)}},function(t,e){t.exports=function(t){for(var e,n=t.length;n--;){if(255!==(e=t.readUInt8(n))){e++,t.writeUInt8(e,n);break}t.writeUInt8(0,n)}}},function(t){t.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},function(t,e,n){var r=n(36),i=n(3).Buffer,a=n(19),o=n(2),s=n(157),u=n(28),c=n(85);function f(t,e,n,o){a.call(this);var u=i.alloc(4,0);this._cipher=new r.AES(e);var f=this._cipher.encryptBlock(u);this._ghash=new s(f),n=function(t,e,n){if(12===e.length)return t._finID=i.concat([e,i.from([0,0,0,1])]),i.concat([e,i.from([0,0,0,2])]);var r=new s(n),a=e.length,o=a%16;r.update(e),o&&(o=16-o,r.update(i.alloc(o,0))),r.update(i.alloc(8,0));var u=8*a,f=i.alloc(8);f.writeUIntBE(u,0,8),r.update(f),t._finID=r.state;var l=i.from(t._finID);return c(l),l}(this,n,f),this._prev=i.from(n),this._cache=i.allocUnsafe(0),this._secCache=i.allocUnsafe(0),this._decrypt=o,this._alen=0,this._len=0,this._mode=t,this._authTag=null,this._called=!1}o(f,a),f.prototype._update=function(t){if(!this._called&&this._alen){var e=16-this._alen%16;e<16&&(e=i.alloc(e,0),this._ghash.update(e))}this._called=!0;var n=this._mode.encrypt(this,t);return this._decrypt?this._ghash.update(t):this._ghash.update(n),this._len+=t.length,n},f.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var t=u(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(t,e){var n=0;t.length!==e.length&&n++;for(var r=Math.min(t.length,e.length),i=0;i<r;++i)n+=t[i]^e[i];return n}(t,this._authTag))throw new Error("Unsupported state or unable to authenticate data");this._authTag=t,this._cipher.scrub()},f.prototype.getAuthTag=function(){if(this._decrypt||!i.isBuffer(this._authTag))throw new Error("Attempting to get auth tag in unsupported state");return this._authTag},f.prototype.setAuthTag=function(t){if(!this._decrypt)throw new Error("Attempting to set auth tag in unsupported state");this._authTag=t},f.prototype.setAAD=function(t){if(this._called)throw new Error("Attempting to set AAD in unsupported state");this._ghash.update(t),this._alen+=t.length},t.exports=f},function(t,e,n){var r=n(36),i=n(3).Buffer,a=n(19);function o(t,e,n,o){a.call(this),this._cipher=new r.AES(e),this._prev=i.from(n),this._cache=i.allocUnsafe(0),this._secCache=i.allocUnsafe(0),this._decrypt=o,this._mode=t}n(2)(o,a),o.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)},o.prototype._final=function(){this._cipher.scrub()},t.exports=o},function(t,e,n){var r=n(22);t.exports=m,m.simpleSieve=y,m.fermatTest=b;var i=n(4),a=new i(24),o=new(n(90)),s=new i(1),u=new i(2),c=new i(5),f=(new i(16),new i(8),new i(10)),l=new i(3),h=(new i(7),new i(11)),d=new i(4),p=(new i(12),null);function g(){if(null!==p)return p;var t=[];t[0]=2;for(var e=1,n=3;n<1048576;n+=2){for(var r=Math.ceil(Math.sqrt(n)),i=0;i<e&&t[i]<=r&&n%t[i]!=0;i++);e!==i&&t[i]<=r||(t[e++]=n)}return p=t,t}function y(t){for(var e=g(),n=0;n<e.length;n++)if(0===t.modn(e[n]))return 0===t.cmpn(e[n]);return!0}function b(t){var e=i.mont(t);return 0===u.toRed(e).redPow(t.subn(1)).fromRed().cmpn(1)}function m(t,e){if(t<16)return new i(2===e||5===e?[140,123]:[140,39]);var n,p;for(e=new i(e);;){for(n=new i(r(Math.ceil(t/8)));n.bitLength()>t;)n.ishrn(1);if(n.isEven()&&n.iadd(s),n.testn(1)||n.iadd(u),e.cmp(u)){if(!e.cmp(c))for(;n.mod(f).cmp(l);)n.iadd(d)}else for(;n.mod(a).cmp(h);)n.iadd(d);if(y(p=n.shrn(1))&&y(n)&&b(p)&&b(n)&&o.test(p)&&o.test(n))return n}}},function(t,e,n){var r=n(4),i=n(58);function a(t){this.rand=t||new i.Rand}t.exports=a,a.create=function(t){return new a(t)},a.prototype._randbelow=function(t){var e=t.bitLength(),n=Math.ceil(e/8);do{var i=new r(this.rand.generate(n))}while(i.cmp(t)>=0);return i},a.prototype._randrange=function(t,e){var n=e.sub(t);return t.add(this._randbelow(n))},a.prototype.test=function(t,e,n){var i=t.bitLength(),a=r.mont(t),o=new r(1).toRed(a);e||(e=Math.max(1,i/48|0));for(var s=t.subn(1),u=0;!s.testn(u);u++);for(var c=t.shrn(u),f=s.toRed(a);e>0;e--){var l=this._randrange(new r(2),s);n&&n(l);var h=l.toRed(a).redPow(c);if(0!==h.cmp(o)&&0!==h.cmp(f)){for(var d=1;d<u;d++){if(0===(h=h.redSqr()).cmp(o))return!1;if(0===h.cmp(f))break}if(d===u)return!1}}return!0},a.prototype.getDivisor=function(t,e){var n=t.bitLength(),i=r.mont(t),a=new r(1).toRed(i);e||(e=Math.max(1,n/48|0));for(var o=t.subn(1),s=0;!o.testn(s);s++);for(var u=t.shrn(s),c=o.toRed(i);e>0;e--){var f=this._randrange(new r(2),o),l=t.gcd(f);if(0!==l.cmpn(1))return l;var h=f.toRed(i).redPow(u);if(0!==h.cmp(a)&&0!==h.cmp(c)){for(var d=1;d<s;d++){if(0===(h=h.redSqr()).cmp(a))return h.fromRed().subn(1).gcd(t);if(0===h.cmp(c))break}if(d===s)return(h=h.redSqr()).fromRed().subn(1).gcd(t)}}return!1}},function(t,e,n){"use strict";var r=e;function i(t){return 1===t.length?"0"+t:t}function a(t){for(var e="",n=0;n<t.length;n++)e+=i(t[n].toString(16));return e}r.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var n=[];if("string"!=typeof t){for(var r=0;r<t.length;r++)n[r]=0|t[r];return n}if("hex"===e){(t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t);for(r=0;r<t.length;r+=2)n.push(parseInt(t[r]+t[r+1],16))}else for(r=0;r<t.length;r++){var i=t.charCodeAt(r),a=i>>8,o=255&i;a?n.push(a,o):n.push(o)}return n},r.zero2=i,r.toHex=a,r.encode=function(t,e){return"hex"===e?a(t):t}},function(t,e,n){"use strict";var r=e;r.base=n(38),r.short=n(168),r.mont=n(169),r.edwards=n(170)},function(t,e,n){"use strict";var r=n(14).rotr32;function i(t,e,n){return t&e^~t&n}function a(t,e,n){return t&e^t&n^e&n}function o(t,e,n){return t^e^n}e.ft_1=function(t,e,n,r){return 0===t?i(e,n,r):1===t||3===t?o(e,n,r):2===t?a(e,n,r):void 0},e.ch32=i,e.maj32=a,e.p32=o,e.s0_256=function(t){return r(t,2)^r(t,13)^r(t,22)},e.s1_256=function(t){return r(t,6)^r(t,11)^r(t,25)},e.g0_256=function(t){return r(t,7)^r(t,18)^t>>>3},e.g1_256=function(t){return r(t,17)^r(t,19)^t>>>10}},function(t,e,n){"use strict";var r=n(14),i=n(29),a=n(93),o=n(9),s=r.sum32,u=r.sum32_4,c=r.sum32_5,f=a.ch32,l=a.maj32,h=a.s0_256,d=a.s1_256,p=a.g0_256,g=a.g1_256,y=i.BlockHash,b=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function m(){if(!(this instanceof m))return new m;y.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=b,this.W=new Array(64)}r.inherits(m,y),t.exports=m,m.blockSize=512,m.outSize=256,m.hmacStrength=192,m.padLength=64,m.prototype._update=function(t,e){for(var n=this.W,r=0;r<16;r++)n[r]=t[e+r];for(;r<n.length;r++)n[r]=u(g(n[r-2]),n[r-7],p(n[r-15]),n[r-16]);var i=this.h[0],a=this.h[1],y=this.h[2],b=this.h[3],m=this.h[4],v=this.h[5],_=this.h[6],w=this.h[7];for(o(this.k.length===n.length),r=0;r<n.length;r++){var x=c(w,d(m),f(m,v,_),this.k[r],n[r]),k=s(h(i),l(i,a,y));w=_,_=v,v=m,m=s(b,x),b=y,y=a,a=i,i=s(x,k)}this.h[0]=s(this.h[0],i),this.h[1]=s(this.h[1],a),this.h[2]=s(this.h[2],y),this.h[3]=s(this.h[3],b),this.h[4]=s(this.h[4],m),this.h[5]=s(this.h[5],v),this.h[6]=s(this.h[6],_),this.h[7]=s(this.h[7],w)},m.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(t,e,n){"use strict";var r=n(14),i=n(29),a=n(9),o=r.rotr64_hi,s=r.rotr64_lo,u=r.shr64_hi,c=r.shr64_lo,f=r.sum64,l=r.sum64_hi,h=r.sum64_lo,d=r.sum64_4_hi,p=r.sum64_4_lo,g=r.sum64_5_hi,y=r.sum64_5_lo,b=i.BlockHash,m=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function v(){if(!(this instanceof v))return new v;b.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=m,this.W=new Array(160)}function _(t,e,n,r,i){var a=t&n^~t&i;return a<0&&(a+=4294967296),a}function w(t,e,n,r,i,a){var o=e&r^~e&a;return o<0&&(o+=4294967296),o}function x(t,e,n,r,i){var a=t&n^t&i^n&i;return a<0&&(a+=4294967296),a}function k(t,e,n,r,i,a){var o=e&r^e&a^r&a;return o<0&&(o+=4294967296),o}function E(t,e){var n=o(t,e,28)^o(e,t,2)^o(e,t,7);return n<0&&(n+=4294967296),n}function A(t,e){var n=s(t,e,28)^s(e,t,2)^s(e,t,7);return n<0&&(n+=4294967296),n}function S(t,e){var n=o(t,e,14)^o(t,e,18)^o(e,t,9);return n<0&&(n+=4294967296),n}function M(t,e){var n=s(t,e,14)^s(t,e,18)^s(e,t,9);return n<0&&(n+=4294967296),n}function T(t,e){var n=o(t,e,1)^o(t,e,8)^u(t,e,7);return n<0&&(n+=4294967296),n}function D(t,e){var n=s(t,e,1)^s(t,e,8)^c(t,e,7);return n<0&&(n+=4294967296),n}function C(t,e){var n=o(t,e,19)^o(e,t,29)^u(t,e,6);return n<0&&(n+=4294967296),n}function O(t,e){var n=s(t,e,19)^s(e,t,29)^c(t,e,6);return n<0&&(n+=4294967296),n}r.inherits(v,b),t.exports=v,v.blockSize=1024,v.outSize=512,v.hmacStrength=192,v.padLength=128,v.prototype._prepareBlock=function(t,e){for(var n=this.W,r=0;r<32;r++)n[r]=t[e+r];for(;r<n.length;r+=2){var i=C(n[r-4],n[r-3]),a=O(n[r-4],n[r-3]),o=n[r-14],s=n[r-13],u=T(n[r-30],n[r-29]),c=D(n[r-30],n[r-29]),f=n[r-32],l=n[r-31];n[r]=d(i,a,o,s,u,c,f,l),n[r+1]=p(i,a,o,s,u,c,f,l)}},v.prototype._update=function(t,e){this._prepareBlock(t,e);var n=this.W,r=this.h[0],i=this.h[1],o=this.h[2],s=this.h[3],u=this.h[4],c=this.h[5],d=this.h[6],p=this.h[7],b=this.h[8],m=this.h[9],v=this.h[10],T=this.h[11],D=this.h[12],C=this.h[13],O=this.h[14],R=this.h[15];a(this.k.length===n.length);for(var N=0;N<n.length;N+=2){var I=O,B=R,L=S(b,m),P=M(b,m),F=_(b,m,v,T,D),q=w(b,m,v,T,D,C),j=this.k[N],U=this.k[N+1],z=n[N],Y=n[N+1],H=g(I,B,L,P,F,q,j,U,z,Y),V=y(I,B,L,P,F,q,j,U,z,Y);I=E(r,i),B=A(r,i),L=x(r,i,o,s,u),P=k(r,i,o,s,u,c);var $=l(I,B,L,P),G=h(I,B,L,P);O=D,R=C,D=v,C=T,v=b,T=m,b=l(d,p,H,V),m=h(p,p,H,V),d=u,p=c,u=o,c=s,o=r,s=i,r=l(H,V,$,G),i=h(H,V,$,G)}f(this.h,0,r,i),f(this.h,2,o,s),f(this.h,4,u,c),f(this.h,6,d,p),f(this.h,8,b,m),f(this.h,10,v,T),f(this.h,12,D,C),f(this.h,14,O,R)},v.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(t,e,n){var r=n(2),i=n(31).Reporter,a=n(6).Buffer;function o(t,e){i.call(this,e),a.isBuffer(t)?(this.base=t,this.offset=0,this.length=t.length):this.error("Input not Buffer")}function s(t,e){if(Array.isArray(t))this.length=0,this.value=t.map((function(t){return t instanceof s||(t=new s(t,e)),this.length+=t.length,t}),this);else if("number"==typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"==typeof t)this.value=t,this.length=a.byteLength(t);else{if(!a.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}r(o,i),e.DecoderBuffer=o,o.prototype.save=function(){return{offset:this.offset,reporter:i.prototype.save.call(this)}},o.prototype.restore=function(t){var e=new o(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,i.prototype.restore.call(this,t.reporter),e},o.prototype.isEmpty=function(){return this.offset===this.length},o.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},o.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");var n=new o(this.base);return n._reporterState=this._reporterState,n.offset=this.offset,n.length=this.offset+t,this.offset+=t,n},o.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.EncoderBuffer=s,s.prototype.join=function(t,e){return t||(t=new a(this.length)),e||(e=0),0===this.length?t:(Array.isArray(this.value)?this.value.forEach((function(n){n.join(t,e),e+=n.length})):("number"==typeof this.value?t[e]=this.value:"string"==typeof this.value?t.write(this.value,e):a.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length),t)}},function(t,e,n){var r=e;r._reverse=function(t){var e={};return Object.keys(t).forEach((function(n){(0|n)==n&&(n|=0);var r=t[n];e[r]=n})),e},r.der=n(190)},function(t,e,n){var r=n(2),i=n(30),a=i.base,o=i.bignum,s=i.constants.der;function u(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new c,this.tree._init(t.body)}function c(t){a.Node.call(this,"der",t)}function f(t,e){var n=t.readUInt8(e);if(t.isError(n))return n;var r=s.tagClass[n>>6],i=0==(32&n);if(31==(31&n)){var a=n;for(n=0;128==(128&a);){if(a=t.readUInt8(e),t.isError(a))return a;n<<=7,n|=127&a}}else n&=31;return{cls:r,primitive:i,tag:n,tagStr:s.tag[n]}}function l(t,e,n){var r=t.readUInt8(n);if(t.isError(r))return r;if(!e&&128===r)return null;if(0==(128&r))return r;var i=127&r;if(i>4)return t.error("length octect is too long");r=0;for(var a=0;a<i;a++){r<<=8;var o=t.readUInt8(n);if(t.isError(o))return o;r|=o}return r}t.exports=u,u.prototype.decode=function(t,e){return t instanceof a.DecoderBuffer||(t=new a.DecoderBuffer(t,e)),this.tree._decode(t,e)},r(c,a.Node),c.prototype._peekTag=function(t,e,n){if(t.isEmpty())return!1;var r=t.save(),i=f(t,'Failed to peek tag: "'+e+'"');return t.isError(i)?i:(t.restore(r),i.tag===e||i.tagStr===e||i.tagStr+"of"===e||n)},c.prototype._decodeTag=function(t,e,n){var r=f(t,'Failed to decode tag of "'+e+'"');if(t.isError(r))return r;var i=l(t,r.primitive,'Failed to get length of "'+e+'"');if(t.isError(i))return i;if(!n&&r.tag!==e&&r.tagStr!==e&&r.tagStr+"of"!==e)return t.error('Failed to match tag: "'+e+'"');if(r.primitive||null!==i)return t.skip(i,'Failed to match body of: "'+e+'"');var a=t.save(),o=this._skipUntilEnd(t,'Failed to skip indefinite length body: "'+this.tag+'"');return t.isError(o)?o:(i=t.offset-a.offset,t.restore(a),t.skip(i,'Failed to match body of: "'+e+'"'))},c.prototype._skipUntilEnd=function(t,e){for(;;){var n=f(t,e);if(t.isError(n))return n;var r,i=l(t,n.primitive,e);if(t.isError(i))return i;if(r=n.primitive||null!==i?t.skip(i):this._skipUntilEnd(t,e),t.isError(r))return r;if("end"===n.tagStr)break}},c.prototype._decodeList=function(t,e,n,r){for(var i=[];!t.isEmpty();){var a=this._peekTag(t,"end");if(t.isError(a))return a;var o=n.decode(t,"der",r);if(t.isError(o)&&a)break;i.push(o)}return i},c.prototype._decodeStr=function(t,e){if("bitstr"===e){var n=t.readUInt8();return t.isError(n)?n:{unused:n,data:t.raw()}}if("bmpstr"===e){var r=t.raw();if(r.length%2==1)return t.error("Decoding of string type: bmpstr length mismatch");for(var i="",a=0;a<r.length/2;a++)i+=String.fromCharCode(r.readUInt16BE(2*a));return i}if("numstr"===e){var o=t.raw().toString("ascii");return this._isNumstr(o)?o:t.error("Decoding of string type: numstr unsupported characters")}if("octstr"===e)return t.raw();if("objDesc"===e)return t.raw();if("printstr"===e){var s=t.raw().toString("ascii");return this._isPrintstr(s)?s:t.error("Decoding of string type: printstr unsupported characters")}return/str$/.test(e)?t.raw().toString():t.error("Decoding of string type: "+e+" unsupported")},c.prototype._decodeObjid=function(t,e,n){for(var r,i=[],a=0;!t.isEmpty();){var o=t.readUInt8();a<<=7,a|=127&o,0==(128&o)&&(i.push(a),a=0)}128&o&&i.push(a);var s=i[0]/40|0,u=i[0]%40;if(r=n?i:[s,u].concat(i.slice(1)),e){var c=e[r.join(" ")];void 0===c&&(c=e[r.join(".")]),void 0!==c&&(r=c)}return r},c.prototype._decodeTime=function(t,e){var n=t.raw().toString();if("gentime"===e)var r=0|n.slice(0,4),i=0|n.slice(4,6),a=0|n.slice(6,8),o=0|n.slice(8,10),s=0|n.slice(10,12),u=0|n.slice(12,14);else{if("utctime"!==e)return t.error("Decoding "+e+" time is not supported yet");r=0|n.slice(0,2),i=0|n.slice(2,4),a=0|n.slice(4,6),o=0|n.slice(6,8),s=0|n.slice(8,10),u=0|n.slice(10,12);r=r<70?2e3+r:1900+r}return Date.UTC(r,i-1,a,o,s,u,0)},c.prototype._decodeNull=function(t){return null},c.prototype._decodeBool=function(t){var e=t.readUInt8();return t.isError(e)?e:0!==e},c.prototype._decodeInt=function(t,e){var n=t.raw(),r=new o(n);return e&&(r=e[r.toString(10)]||r),r},c.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getDecoder("der").tree}},function(t,e,n){var r=n(2),i=n(6).Buffer,a=n(30),o=a.base,s=a.constants.der;function u(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new c,this.tree._init(t.body)}function c(t){o.Node.call(this,"der",t)}function f(t){return t<10?"0"+t:t}t.exports=u,u.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},r(c,o.Node),c.prototype._encodeComposite=function(t,e,n,r){var a,o=function(t,e,n,r){var i;"seqof"===t?t="seq":"setof"===t&&(t="set");if(s.tagByName.hasOwnProperty(t))i=s.tagByName[t];else{if("number"!=typeof t||(0|t)!==t)return r.error("Unknown tag: "+t);i=t}if(i>=31)return r.error("Multi-octet tag encoding unsupported");e||(i|=32);return i|=s.tagClassByName[n||"universal"]<<6}(t,e,n,this.reporter);if(r.length<128)return(a=new i(2))[0]=o,a[1]=r.length,this._createEncoderBuffer([a,r]);for(var u=1,c=r.length;c>=256;c>>=8)u++;(a=new i(2+u))[0]=o,a[1]=128|u;c=1+u;for(var f=r.length;f>0;c--,f>>=8)a[c]=255&f;return this._createEncoderBuffer([a,r])},c.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){for(var n=new i(2*t.length),r=0;r<t.length;r++)n.writeUInt16BE(t.charCodeAt(r),2*r);return this._createEncoderBuffer(n)}return"numstr"===e?this._isNumstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: numstr supports only digits and space"):"printstr"===e?this._isPrintstr(t)?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(e)?this._createEncoderBuffer(t):"objDesc"===e?this._createEncoderBuffer(t):this.reporter.error("Encoding of string type: "+e+" unsupported")},c.prototype._encodeObjid=function(t,e,n){if("string"==typeof t){if(!e)return this.reporter.error("string objid given, but no values map found");if(!e.hasOwnProperty(t))return this.reporter.error("objid not found in values map");t=e[t].split(/[\s\.]+/g);for(var r=0;r<t.length;r++)t[r]|=0}else if(Array.isArray(t)){t=t.slice();for(r=0;r<t.length;r++)t[r]|=0}if(!Array.isArray(t))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(t));if(!n){if(t[1]>=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}var a=0;for(r=0;r<t.length;r++){var o=t[r];for(a++;o>=128;o>>=7)a++}var s=new i(a),u=s.length-1;for(r=t.length-1;r>=0;r--){o=t[r];for(s[u--]=127&o;(o>>=7)>0;)s[u--]=128|127&o}return this._createEncoderBuffer(s)},c.prototype._encodeTime=function(t,e){var n,r=new Date(t);return"gentime"===e?n=[f(r.getFullYear()),f(r.getUTCMonth()+1),f(r.getUTCDate()),f(r.getUTCHours()),f(r.getUTCMinutes()),f(r.getUTCSeconds()),"Z"].join(""):"utctime"===e?n=[f(r.getFullYear()%100),f(r.getUTCMonth()+1),f(r.getUTCDate()),f(r.getUTCHours()),f(r.getUTCMinutes()),f(r.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(n,"octstr")},c.prototype._encodeNull=function(){return this._createEncoderBuffer("")},c.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!i.isBuffer(t)){var n=t.toArray();!t.sign&&128&n[0]&&n.unshift(0),t=new i(n)}if(i.isBuffer(t)){var r=t.length;0===t.length&&r++;var a=new i(r);return t.copy(a),0===t.length&&(a[0]=0),this._createEncoderBuffer(a)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);r=1;for(var o=t;o>=256;o>>=8)r++;for(o=(a=new Array(r)).length-1;o>=0;o--)a[o]=255&t,t>>=8;return 128&a[0]&&a.unshift(0),this._createEncoderBuffer(new i(a))},c.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},c.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},c.prototype._skipDefault=function(t,e,n){var r,i=this._baseState;if(null===i.default)return!1;var a=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,n).join()),a.length!==i.defaultBuffer.length)return!1;for(r=0;r<a.length;r++)if(a[r]!==i.defaultBuffer[r])return!1;return!0}},function(t){t.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},function(t,e,n){var r=n(26),i=n(3).Buffer;function a(t){var e=i.allocUnsafe(4);return e.writeUInt32BE(t,0),e}t.exports=function(t,e){for(var n,o=i.alloc(0),s=0;o.length<e;)n=a(s++),o=i.concat([o,r("sha1").update(t).update(n).digest()]);return o.slice(0,e)}},function(t,e){t.exports=function(t,e){for(var n=t.length,r=-1;++r<n;)t[r]^=e[r];return t}},function(t,e,n){var r=n(4),i=n(3).Buffer;t.exports=function(t,e){return i.from(t.toRed(r.mont(e.modulus)).redPow(new r(e.publicExponent)).fromRed().toArray())}},function(t,e,n){(function(t,n){!function(r){var i=e,a=t&&t.exports==i&&t,o="object"==typeof n&&n;o.global!==o&&o.window!==o||(r=o);var s=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=/[\x01-\x7F]/g,c=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,f=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,l={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon","ˆ":"circ","ˇ":"caron","°":"deg","©":"copy","®":"reg","℗":"copysr","℘":"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78","𝒶":"ascr","𝕒":"aopf","𝔞":"afr","𝔸":"Aopf","𝔄":"Afr","𝒜":"Ascr","ª":"ordf","á":"aacute","Á":"Aacute","à":"agrave","À":"Agrave","ă":"abreve","Ă":"Abreve","â":"acirc","Â":"Acirc","å":"aring","Å":"angst","ä":"auml","Ä":"Auml","ã":"atilde","Ã":"Atilde","ą":"aogon","Ą":"Aogon","ā":"amacr","Ā":"Amacr","æ":"aelig","Æ":"AElig","𝒷":"bscr","𝕓":"bopf","𝔟":"bfr","𝔹":"Bopf","ℬ":"Bscr","𝔅":"Bfr","𝔠":"cfr","𝒸":"cscr","𝕔":"copf","ℭ":"Cfr","𝒞":"Cscr","ℂ":"Copf","ć":"cacute","Ć":"Cacute","ĉ":"ccirc","Ĉ":"Ccirc","č":"ccaron","Č":"Ccaron","ċ":"cdot","Ċ":"Cdot","ç":"ccedil","Ç":"Ccedil","℅":"incare","𝔡":"dfr","ⅆ":"dd","𝕕":"dopf","𝒹":"dscr","𝒟":"Dscr","𝔇":"Dfr","ⅅ":"DD","𝔻":"Dopf","ď":"dcaron","Ď":"Dcaron","đ":"dstrok","Đ":"Dstrok","ð":"eth","Ð":"ETH","ⅇ":"ee","ℯ":"escr","𝔢":"efr","𝕖":"eopf","ℰ":"Escr","𝔈":"Efr","𝔼":"Eopf","é":"eacute","É":"Eacute","è":"egrave","È":"Egrave","ê":"ecirc","Ê":"Ecirc","ě":"ecaron","Ě":"Ecaron","ë":"euml","Ë":"Euml","ė":"edot","Ė":"Edot","ę":"eogon","Ę":"Eogon","ē":"emacr","Ē":"Emacr","𝔣":"ffr","𝕗":"fopf","𝒻":"fscr","𝔉":"Ffr","𝔽":"Fopf","ℱ":"Fscr","ﬀ":"fflig","ﬃ":"ffilig","ﬄ":"ffllig","ﬁ":"filig",fj:"fjlig","ﬂ":"fllig","ƒ":"fnof","ℊ":"gscr","𝕘":"gopf","𝔤":"gfr","𝒢":"Gscr","𝔾":"Gopf","𝔊":"Gfr","ǵ":"gacute","ğ":"gbreve","Ğ":"Gbreve","ĝ":"gcirc","Ĝ":"Gcirc","ġ":"gdot","Ġ":"Gdot","Ģ":"Gcedil","𝔥":"hfr","ℎ":"planckh","𝒽":"hscr","𝕙":"hopf","ℋ":"Hscr","ℌ":"Hfr","ℍ":"Hopf","ĥ":"hcirc","Ĥ":"Hcirc","ℏ":"hbar","ħ":"hstrok","Ħ":"Hstrok","𝕚":"iopf","𝔦":"ifr","𝒾":"iscr","ⅈ":"ii","𝕀":"Iopf","ℐ":"Iscr","ℑ":"Im","í":"iacute","Í":"Iacute","ì":"igrave","Ì":"Igrave","î":"icirc","Î":"Icirc","ï":"iuml","Ï":"Iuml","ĩ":"itilde","Ĩ":"Itilde","İ":"Idot","į":"iogon","Į":"Iogon","ī":"imacr","Ī":"Imacr","ĳ":"ijlig","Ĳ":"IJlig","ı":"imath","𝒿":"jscr","𝕛":"jopf","𝔧":"jfr","𝒥":"Jscr","𝔍":"Jfr","𝕁":"Jopf","ĵ":"jcirc","Ĵ":"Jcirc","ȷ":"jmath","𝕜":"kopf","𝓀":"kscr","𝔨":"kfr","𝒦":"Kscr","𝕂":"Kopf","𝔎":"Kfr","ķ":"kcedil","Ķ":"Kcedil","𝔩":"lfr","𝓁":"lscr","ℓ":"ell","𝕝":"lopf","ℒ":"Lscr","𝔏":"Lfr","𝕃":"Lopf","ĺ":"lacute","Ĺ":"Lacute","ľ":"lcaron","Ľ":"Lcaron","ļ":"lcedil","Ļ":"Lcedil","ł":"lstrok","Ł":"Lstrok","ŀ":"lmidot","Ŀ":"Lmidot","𝔪":"mfr","𝕞":"mopf","𝓂":"mscr","𝔐":"Mfr","𝕄":"Mopf","ℳ":"Mscr","𝔫":"nfr","𝕟":"nopf","𝓃":"nscr","ℕ":"Nopf","𝒩":"Nscr","𝔑":"Nfr","ń":"nacute","Ń":"Nacute","ň":"ncaron","Ň":"Ncaron","ñ":"ntilde","Ñ":"Ntilde","ņ":"ncedil","Ņ":"Ncedil","№":"numero","ŋ":"eng","Ŋ":"ENG","𝕠":"oopf","𝔬":"ofr","ℴ":"oscr","𝒪":"Oscr","𝔒":"Ofr","𝕆":"Oopf","º":"ordm","ó":"oacute","Ó":"Oacute","ò":"ograve","Ò":"Ograve","ô":"ocirc","Ô":"Ocirc","ö":"ouml","Ö":"Ouml","ő":"odblac","Ő":"Odblac","õ":"otilde","Õ":"Otilde","ø":"oslash","Ø":"Oslash","ō":"omacr","Ō":"Omacr","œ":"oelig","Œ":"OElig","𝔭":"pfr","𝓅":"pscr","𝕡":"popf","ℙ":"Popf","𝔓":"Pfr","𝒫":"Pscr","𝕢":"qopf","𝔮":"qfr","𝓆":"qscr","𝒬":"Qscr","𝔔":"Qfr","ℚ":"Qopf","ĸ":"kgreen","𝔯":"rfr","𝕣":"ropf","𝓇":"rscr","ℛ":"Rscr","ℜ":"Re","ℝ":"Ropf","ŕ":"racute","Ŕ":"Racute","ř":"rcaron","Ř":"Rcaron","ŗ":"rcedil","Ŗ":"Rcedil","𝕤":"sopf","𝓈":"sscr","𝔰":"sfr","𝕊":"Sopf","𝔖":"Sfr","𝒮":"Sscr","Ⓢ":"oS","ś":"sacute","Ś":"Sacute","ŝ":"scirc","Ŝ":"Scirc","š":"scaron","Š":"Scaron","ş":"scedil","Ş":"Scedil","ß":"szlig","𝔱":"tfr","𝓉":"tscr","𝕥":"topf","𝒯":"Tscr","𝔗":"Tfr","𝕋":"Topf","ť":"tcaron","Ť":"Tcaron","ţ":"tcedil","Ţ":"Tcedil","™":"trade","ŧ":"tstrok","Ŧ":"Tstrok","𝓊":"uscr","𝕦":"uopf","𝔲":"ufr","𝕌":"Uopf","𝔘":"Ufr","𝒰":"Uscr","ú":"uacute","Ú":"Uacute","ù":"ugrave","Ù":"Ugrave","ŭ":"ubreve","Ŭ":"Ubreve","û":"ucirc","Û":"Ucirc","ů":"uring","Ů":"Uring","ü":"uuml","Ü":"Uuml","ű":"udblac","Ű":"Udblac","ũ":"utilde","Ũ":"Utilde","ų":"uogon","Ų":"Uogon","ū":"umacr","Ū":"Umacr","𝔳":"vfr","𝕧":"vopf","𝓋":"vscr","𝔙":"Vfr","𝕍":"Vopf","𝒱":"Vscr","𝕨":"wopf","𝓌":"wscr","𝔴":"wfr","𝒲":"Wscr","𝕎":"Wopf","𝔚":"Wfr","ŵ":"wcirc","Ŵ":"Wcirc","𝔵":"xfr","𝓍":"xscr","𝕩":"xopf","𝕏":"Xopf","𝔛":"Xfr","𝒳":"Xscr","𝔶":"yfr","𝓎":"yscr","𝕪":"yopf","𝒴":"Yscr","𝔜":"Yfr","𝕐":"Yopf","ý":"yacute","Ý":"Yacute","ŷ":"ycirc","Ŷ":"Ycirc","ÿ":"yuml","Ÿ":"Yuml","𝓏":"zscr","𝔷":"zfr","𝕫":"zopf","ℨ":"Zfr","ℤ":"Zopf","𝒵":"Zscr","ź":"zacute","Ź":"Zacute","ž":"zcaron","Ž":"Zcaron","ż":"zdot","Ż":"Zdot","Ƶ":"imped","þ":"thorn","Þ":"THORN","ŉ":"napos","α":"alpha","Α":"Alpha","β":"beta","Β":"Beta","γ":"gamma","Γ":"Gamma","δ":"delta","Δ":"Delta","ε":"epsi","ϵ":"epsiv","Ε":"Epsilon","ϝ":"gammad","Ϝ":"Gammad","ζ":"zeta","Ζ":"Zeta","η":"eta","Η":"Eta","θ":"theta","ϑ":"thetav","Θ":"Theta","ι":"iota","Ι":"Iota","κ":"kappa","ϰ":"kappav","Κ":"Kappa","λ":"lambda","Λ":"Lambda","μ":"mu","µ":"micro","Μ":"Mu","ν":"nu","Ν":"Nu","ξ":"xi","Ξ":"Xi","ο":"omicron","Ο":"Omicron","π":"pi","ϖ":"piv","Π":"Pi","ρ":"rho","ϱ":"rhov","Ρ":"Rho","σ":"sigma","Σ":"Sigma","ς":"sigmaf","τ":"tau","Τ":"Tau","υ":"upsi","Υ":"Upsilon","ϒ":"Upsi","φ":"phi","ϕ":"phiv","Φ":"Phi","χ":"chi","Χ":"Chi","ψ":"psi","Ψ":"Psi","ω":"omega","Ω":"ohm","а":"acy","А":"Acy","б":"bcy","Б":"Bcy","в":"vcy","В":"Vcy","г":"gcy","Г":"Gcy","ѓ":"gjcy","Ѓ":"GJcy","д":"dcy","Д":"Dcy","ђ":"djcy","Ђ":"DJcy","е":"iecy","Е":"IEcy","ё":"iocy","Ё":"IOcy","є":"jukcy","Є":"Jukcy","ж":"zhcy","Ж":"ZHcy","з":"zcy","З":"Zcy","ѕ":"dscy","Ѕ":"DScy","и":"icy","И":"Icy","і":"iukcy","І":"Iukcy","ї":"yicy","Ї":"YIcy","й":"jcy","Й":"Jcy","ј":"jsercy","Ј":"Jsercy","к":"kcy","К":"Kcy","ќ":"kjcy","Ќ":"KJcy","л":"lcy","Л":"Lcy","љ":"ljcy","Љ":"LJcy","м":"mcy","М":"Mcy","н":"ncy","Н":"Ncy","њ":"njcy","Њ":"NJcy","о":"ocy","О":"Ocy","п":"pcy","П":"Pcy","р":"rcy","Р":"Rcy","с":"scy","С":"Scy","т":"tcy","Т":"Tcy","ћ":"tshcy","Ћ":"TSHcy","у":"ucy","У":"Ucy","ў":"ubrcy","Ў":"Ubrcy","ф":"fcy","Ф":"Fcy","х":"khcy","Х":"KHcy","ц":"tscy","Ц":"TScy","ч":"chcy","Ч":"CHcy","џ":"dzcy","Џ":"DZcy","ш":"shcy","Ш":"SHcy","щ":"shchcy","Щ":"SHCHcy","ъ":"hardcy","Ъ":"HARDcy","ы":"ycy","Ы":"Ycy","ь":"softcy","Ь":"SOFTcy","э":"ecy","Э":"Ecy","ю":"yucy","Ю":"YUcy","я":"yacy","Я":"YAcy","ℵ":"aleph","ℶ":"beth","ℷ":"gimel","ℸ":"daleth"},h=/["&'<>`]/g,d={'"':"&quot;","&":"&amp;","'":"&#x27;","<":"&lt;",">":"&gt;","`":"&#x60;"},p=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,g=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,y=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,b={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ﬃ",fflig:"ﬀ",ffllig:"ﬄ",ffr:"𝔣",Ffr:"𝔉",filig:"ﬁ",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"ﬂ",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ĳ",IJlig:"Ĳ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ŉ",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},m={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},v={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},_=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],w=String.fromCharCode,x={}.hasOwnProperty,k=function(t,e){return x.call(t,e)},E=function(t,e){if(!t)return e;var n,r={};for(n in e)r[n]=k(t,n)?t[n]:e[n];return r},A=function(t,e){var n="";return t>=55296&&t<=57343||t>1114111?(e&&T("character reference outside the permissible Unicode range"),"�"):k(v,t)?(e&&T("disallowed character reference"),v[t]):(e&&function(t,e){for(var n=-1,r=t.length;++n<r;)if(t[n]==e)return!0;return!1}(_,t)&&T("disallowed character reference"),t>65535&&(n+=w((t-=65536)>>>10&1023|55296),t=56320|1023&t),n+=w(t))},S=function(t){return"&#x"+t.toString(16).toUpperCase()+";"},M=function(t){return"&#"+t+";"},T=function(t){throw Error("Parse error: "+t)},D=function(t,e){(e=E(e,D.options)).strict&&g.test(t)&&T("forbidden code point");var n=e.encodeEverything,r=e.useNamedReferences,i=e.allowUnsafeSymbols,a=e.decimal?M:S,o=function(t){return a(t.charCodeAt(0))};return n?(t=t.replace(u,(function(t){return r&&k(l,t)?"&"+l[t]+";":o(t)})),r&&(t=t.replace(/&gt;\u20D2/g,"&nvgt;").replace(/&lt;\u20D2/g,"&nvlt;").replace(/&#x66;&#x6A;/g,"&fjlig;")),r&&(t=t.replace(f,(function(t){return"&"+l[t]+";"})))):r?(i||(t=t.replace(h,(function(t){return"&"+l[t]+";"}))),t=(t=t.replace(/&gt;\u20D2/g,"&nvgt;").replace(/&lt;\u20D2/g,"&nvlt;")).replace(f,(function(t){return"&"+l[t]+";"}))):i||(t=t.replace(h,o)),t.replace(s,(function(t){var e=t.charCodeAt(0),n=t.charCodeAt(1);return a(1024*(e-55296)+n-56320+65536)})).replace(c,o)};D.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var C=function(t,e){var n=(e=E(e,C.options)).strict;return n&&p.test(t)&&T("malformed character reference"),t.replace(y,(function(t,r,i,a,o,s,u,c,f){var l,h,d,p,g,y;return r?b[g=r]:i?(g=i,(y=a)&&e.isAttributeValue?(n&&"="==y&&T("`&` did not start a character reference"),t):(n&&T("named character reference was not terminated by a semicolon"),m[g]+(y||""))):o?(d=o,h=s,n&&!h&&T("character reference was not terminated by a semicolon"),l=parseInt(d,10),A(l,n)):u?(p=u,h=c,n&&!h&&T("character reference was not terminated by a semicolon"),l=parseInt(p,16),A(l,n)):(n&&T("named character reference was not terminated by a semicolon"),t)}))};C.options={isAttributeValue:!1,strict:!1};var O={version:"1.2.0",encode:D,decode:C,escape:function(t){return t.replace(h,(function(t){return d[t]}))},unescape:C};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define((function(){return O}));else if(i&&!i.nodeType)if(a)a.exports=O;else for(var R in O)k(O,R)&&(i[R]=O[R]);else r.he=O}(this)}).call(this,n(7)(t),n(13))},function(t,e,n){"use strict";var r=n(107),i=n(108),a=n(109);function o(t,e,n){if(!t)return t;if(!e)return t;"string"==typeof n&&(n={keyframes:n}),n||(n={keyframes:!1}),t=s(t,e+" $1$2");var i=e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");t=(t=(t=(t=t.replace(new RegExp("("+i+")\\s*\\1(?=[\\s\\r\\n,{])","g"),"$1")).replace(new RegExp("("+i+")\\s*:host","g"),"$1")).replace(new RegExp("("+i+")\\s*@","g"),"@")).replace(new RegExp("("+i+")\\s*:root","g"),":root");for(var a,o=[],u=/@keyframes\s+([a-zA-Z0-9_-]+)\s*{/g;null!==(a=u.exec(t));)o.indexOf(a[1])<0&&o.push(a[1]);var c=r(e);return o.forEach((function(e){var r=(!0===n.keyframes?c+"-":"string"==typeof n.keyframes?n.keyframes:"")+e;t=(t=t.replace(new RegExp("(@keyframes\\s+)"+e+"(\\s*{)","g"),"$1"+r+"$2")).replace(new RegExp("(animation(?:-name)?\\s*:[^;]*\\s*)"+e+"([\\s;}])","g"),"$1"+r+"$2")})),t=t.replace(new RegExp("("+i+" )(\\s*(?:to|from|[+-]?(?:(?:\\.\\d+)|(?:\\d+(?:\\.\\d*)?))%))(?=[\\s\\r\\n,{])","g"),"$2")}function s(t,e){var n=[];return t=a(t),t=(t=i.replace(t,!0,n)).replace(/([^\r\n,{}]+)(,(?=[^}]*{)|\s*{)/g,e),t=i.paste(t,n)}t.exports=o,o.replace=s},function(t,e,n){"use strict";const r=n(122),i="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~".split(""),a=(t,e)=>{const n=e.length,i=Math.floor(65536/n)*n-1,a=2*Math.ceil(1.1*t);let o="",s=0;for(;s<t;){const u=r.randomBytes(a);let c=0;for(;c<a&&s<t;){const t=u.readUInt16LE(c);c+=2,t>i||(o+=e[t%n],s++)}}return o},o=[void 0,"hex","base64","url-safe"];t.exports=({length:t,type:e,characters:n})=>{if(!(t>=0&&Number.isFinite(t)))throw new TypeError("Expected a `length` to be a non-negative finite number");if(void 0!==e&&void 0!==n)throw new TypeError("Expected either `type` or `characters`");if(void 0!==n&&"string"!=typeof n)throw new TypeError("Expected `characters` to be string");if(!o.includes(e))throw new TypeError(`Unknown type: ${e}`);if(void 0===e&&void 0===n&&(e="hex"),"hex"===e||void 0===e&&void 0===n)return r.randomBytes(Math.ceil(.5*t)).toString("hex").slice(0,t);if("base64"===e)return r.randomBytes(Math.ceil(.75*t)).toString("base64").slice(0,t);if("url-safe"===e)return a(t,i);if(0===n.length)throw new TypeError("Expected `characters` string length to be greater than or equal to 1");if(n.length>65536)throw new TypeError("Expected `characters` string length to be less or equal to 65536");return a(t,n.split(""))}},function(t,e,n){var r;r=function(){var t=JSON.parse('{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","ǈ":"LJ","ǉ":"lj","ǋ":"NJ","ǌ":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","џ":"dz","Ґ":"G","ґ":"g","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","‘":"\'","’":"\'","“":"\\"","”":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₹":"indian rupee","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial"}'),e=JSON.parse('{"bg":{"locale":"Bulgarian","ѝ":"u"}}');function n(n,r){if("string"!=typeof n)throw new Error("slugify: string argument expected");var i=e[(r="string"==typeof r?{replacement:r}:r||{}).locale]||{},a=n.split("").reduce((function(e,n){return e+(i[n]||t[n]||n).replace(r.remove||/[^\w\s$*_+~.()'"!\-:@]/g,"")}),"").trim().replace(/[-\s]+/g,r.replacement||"-");return r.lower?a.toLowerCase():a}return n.extend=function(e){for(var n in e)t[n]=e[n]},n},t.exports=r(),t.exports.default=r()},function(t,e,n){
+/*!
+ * Escaper v2.5.3
+ * https://github.com/kobezzza/Escaper
+ *
+ * Released under the MIT license
+ * https://github.com/kobezzza/Escaper/blob/master/LICENSE
+ *
+ * Date: Tue, 23 Jan 2018 15:58:45 GMT
+ */
+!function(t){"use strict";var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n=void 0,r=n={VERSION:[2,5,3],content:[],cache:{},snakeskinRgxp:null,symbols:null,replace:T,paste:C},i={'"':!0,"'":!0,"`":!0},a={"/":!0};for(var o in i){if(!i.hasOwnProperty(o))break;a[o]=!0}var s={"//":!0,"//*":!0,"//!":!0,"//#":!0,"//@":!0,"//$":!0},u={"/*":!0,"/**":!0,"/*!":!0,"/*#":!0,"/*@":!0,"/*$":!0},c=[],f={};for(var l in a){if(!a.hasOwnProperty(l))break;c.push(l),f[l]=!0}for(var h in s){if(!s.hasOwnProperty(h))break;c.push(h),f[h]=!0}for(var d in u){if(!u.hasOwnProperty(d))break;c.push(d),f[d]=!0}var p=[],g={g:!0,m:!0,i:!0,y:!0,u:!0};for(var y in g){if(!g.hasOwnProperty(y))break;p.push(y)}var b={"-":!0,"+":!0,"*":!0,"%":!0,"~":!0,">":!0,"<":!0,"^":!0,",":!0,";":!0,"=":!0,"|":!0,"&":!0,"!":!0,"?":!0,":":!0,"(":!0,"{":!0,"[":!0},m={return:!0,yield:!0,await:!0,typeof:!0,void:!0,instanceof:!0,delete:!0,in:!0,new:!0,of:!0};function v(t,e,n){for(var r in t){if(!t.hasOwnProperty(r))break;r in e==0&&(e[r]=n)}}var _=void 0,w=void 0,x=/[^\s/]/,k=/[a-z]/,E=/\s/,A=/[\r\n]/,S=/\${pos}/g,M={object:!0,function:!0};function T(t,r,o,l){_=_||n.symbols||"a-z",w=w||n.snakeskinRgxp||new RegExp("[!$"+_+"_]","i");var h=n,d=h.cache,y=h.content,T=Boolean(r&&M[void 0===r?"undefined":e(r)]),D=T?Object(r):{};function C(t){return D["@label"]?D["@label"].replace(S,t):"__ESCAPER_QUOT__"+t+"_"}var O=!1;"boolean"==typeof r&&(O=Boolean(r)),"@comments"in D&&(v(u,D,D["@comments"]),v(s,D,D["@comments"]),delete D["@comments"]),"@strings"in D&&(v(i,D,D["@strings"]),delete D["@strings"]),"@literals"in D&&(v(a,D,D["@literals"]),delete D["@literals"]),"@all"in D&&(v(f,D,D["@all"]),delete D["@all"]);for(var R="",N=-1;++N<c.length;){var I=c[N];u[I]||s[I]?D[I]=O||D[I]:D[I]=D[I]||!T,R+=D[I]+","}var B=t,L=o||y;if(L===y&&d[R]&&d[R][B])return d[R][B];for(var P=!1,F=!0,q=!1,j=!1,U=0,z=!1,Y=0,H=!1,V=void 0,$=void 0,G="",W="",K=-1;++K<t.length;){var X=t.charAt(K),Z=t.charAt(K+1),J=t.substr(K,2),Q=t.substr(K,3);if(j)(A.test(Z)&&s[j]||u[X+t.charAt(K-1)]&&K-U>2&&u[j])&&(D[j]&&(V=t.substring(U,K+1),-1===D[j]?$="":($=C(L.length),L.push(V)),t=t.substring(0,U)+$+t.substring(K+1),K+=$.length-V.length),j=!1);else{if(!P){if("/"===X&&((s[J]||u[J])&&(j=s[Q]||u[Q]?Q:J),j)){U=K;continue}b[X]||m[W]?(F=!0,W=""):x.test(X)&&(F=!1),k.test(X)?G+=X:(W=G,G="");var tt=!1;l&&("|"===X&&w.test(Z)?(H=!0,F=!1,tt=!0):H&&E.test(X)&&(H=!1,F=!0,tt=!0)),tt||(b[X]?F=!0:x.test(X)&&(F=!1))}if("/"!==P||q||("["===X?z=!0:"]"===X&&(z=!1)),!P&&Y&&("}"===X?Y--:"{"===X&&Y++,Y||(X="`")),"`"!==P||q||"${"!==J||(X="`",K++,Y++),!f[X]||"/"===X&&!F||P){if(P&&("\\"===X||q))q=!q;else if(f[X]&&P===X&&!q&&("/"!==P||!z)){if("/"===X)for(var et=-1;++et<p.length;)g[t.charAt(K+1)]&&K++;P=!1,F=!1,D[X]&&(V=t.substring(U,K+1),-1===D[X]?$="":($=C(L.length),L.push(V)),t=t.substring(0,U)+$+t.substring(K+1),K+=$.length-V.length)}}else P=X,U=K}}return L===y&&(d[R]=d[R]||{},d[R][B]=t),t}var D=/__ESCAPER_QUOT__(\d+)_/g;function C(t,e,r){return t.replace(r||D,(function(t,r){return(e||n.content)[r]}))}t.default=r,t.replace=T,t.paste=C,Object.defineProperty(t,"__esModule",{value:!0})}(e)},function(t,e,n){"use strict";var r=n(110);t.exports=function(t,e){var n;t=t.toString();var i="",a="",o=!1,s=!(!1===(e=e||{}).preserve||!0===e.all),u="";"function"==typeof e.preserve?(s=!1,n=e.preserve):r(e.preserve)&&(s=!1,n=function(t){return e.preserve.test(t)});for(var c=0;c<t.length;c++)if(a=t[c],"\\"!==t[c-1]&&('"'!==a&&"'"!==a||(o===a?o=!1:o||(o=a))),o||"/"!==a||"*"!==t[c+1]||s&&"!"===t[c+2])u+=a;else{for(var f=c+2;f<t.length;f++){if("*"===t[f]&&"/"===t[f+1]){n&&(u=n(i)?u+"/*"+i+"*/":u,i="");break}n&&(i+=t[f])}c=f+1}return u}},function(t,e,n){"use strict";t.exports=function(t){return"[object RegExp]"===Object.prototype.toString.call(t)}},function(t,e,n){var r={"./locale":63,"./locale.js":63};function i(t){var e=a(t);return n(e)}function a(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=a,t.exports=i,i.id=111},function(t,e,n){const r=n(8),i=n(45);function a(t){return r.map(t.nodes(),(function(e){const n=t.node(e),i=t.parent(e),a={v:e};return r.isUndefined(n)||(a.value=n),r.isUndefined(i)||(a.parent=i),a}))}function o(t){return r.map(t.edges(),(function(e){const n=t.edge(e),i={v:e.v,w:e.w};return r.isUndefined(e.name)||(i.name=e.name),r.isUndefined(n)||(i.value=n),i}))}t.exports={write:function(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:a(t),edges:o(t)};r.isUndefined(t.graph())||(e.value=r.clone(t.graph()));return e},read:function(t){var e=new i(t.options).setGraph(t.value);return r.each(t.nodes,(function(t){e.setNode(t.v,t.value),t.parent&&e.setParent(t.v,t.parent)})),r.each(t.edges,(function(t){e.setEdge({v:t.v,w:t.w,name:t.name},t.value)})),e}}},function(t,e,n){t.exports={components:n(114),dijkstra:n(64),dijkstraAll:n(115),findCycles:n(116),floydWarshall:n(117),isAcyclic:n(118),postorder:n(119),preorder:n(120),prim:n(121),tarjan:n(66),topsort:n(67)}},function(t,e,n){var r=n(8);t.exports=function(t){const e={},n=[];let i;function a(n){r.has(e,n)||(e[n]=!0,i.push(n),r.each(t.successors(n),a),r.each(t.predecessors(n),a))}return r.each(t.nodes(),(function(t){i=[],a(t),i.length&&n.push(i)})),n}},function(t,e,n){const r=n(64),i=n(8);t.exports=function(t,e,n){return i.transform(t.nodes(),(function(i,a){i[a]=r(t,a,e,n)}),{})}},function(t,e,n){const r=n(8),i=n(66);t.exports=function(t){return r.filter(i(t),(function(e){return e.length>1||1===e.length&&t.hasEdge(e[0],e[0])}))}},function(t,e,n){var r=n(8);t.exports=function(t,e,n){return function(t,e,n){const r={},i=t.nodes();return i.forEach((function(t){r[t]={},r[t][t]={distance:0},i.forEach((function(e){t!==e&&(r[t][e]={distance:Number.POSITIVE_INFINITY})})),n(t).forEach((function(n){const i=n.v===t?n.w:n.v,a=e(n);r[t][i]={distance:a,predecessor:t}}))})),i.forEach((function(t){var e=r[t];i.forEach((function(n){var a=r[n];i.forEach((function(n){var r=a[t],i=e[n],o=a[n],s=r.distance+i.distance;s<o.distance&&(o.distance=s,o.predecessor=i.predecessor)}))}))})),r}(t,e||i,n||function(e){return t.outEdges(e)})};var i=r.constant(1)},function(t,e,n){var r=n(67);t.exports=function(t){try{r(t)}catch(t){if(t instanceof r.CycleException)return!1;throw t}return!0}},function(t,e,n){var r=n(68);t.exports=function(t,e){return r(t,e,"post")}},function(t,e,n){var r=n(68);t.exports=function(t,e){return r(t,e,"pre")}},function(t,e,n){const r=n(8),i=n(45),a=n(65);t.exports=function(t,e){const n=new i,o={},s=new a;let u;function c(t){const n=t.v===u?t.w:t.v,r=s.priority(n);if(void 0!==r){var i=e(t);i<r&&(o[n]=u,s.decrease(n,i))}}if(0===t.nodeCount())return n;r.each(t.nodes(),(function(t){s.add(t,Number.POSITIVE_INFINITY),n.setNode(t)})),s.decrease(t.nodes()[0],0);var f=!1;for(;s.size()>0;){if(u=s.removeMin(),r.has(o,u))n.setEdge(u,o[u]);else{if(f)throw new Error("Input graph is not connected: "+t);f=!0}t.nodeEdges(u).forEach(c)}return n}},function(t,e,n){"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=n(22),e.createHash=e.Hash=n(26),e.createHmac=e.Hmac=n(77);var r=n(141),i=Object.keys(r),a=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(i);e.getHashes=function(){return a};var o=n(80);e.pbkdf2=o.pbkdf2,e.pbkdf2Sync=o.pbkdf2Sync;var s=n(143);e.Cipher=s.Cipher,e.createCipher=s.createCipher,e.Cipheriv=s.Cipheriv,e.createCipheriv=s.createCipheriv,e.Decipher=s.Decipher,e.createDecipher=s.createDecipher,e.Decipheriv=s.Decipheriv,e.createDecipheriv=s.createDecipheriv,e.getCiphers=s.getCiphers,e.listCiphers=s.listCiphers;var u=n(160);e.DiffieHellmanGroup=u.DiffieHellmanGroup,e.createDiffieHellmanGroup=u.createDiffieHellmanGroup,e.getDiffieHellman=u.getDiffieHellman,e.createDiffieHellman=u.createDiffieHellman,e.DiffieHellman=u.DiffieHellman;var c=n(165);e.createSign=c.createSign,e.Sign=c.Sign,e.createVerify=c.createVerify,e.Verify=c.Verify,e.createECDH=n(199);var f=n(200);e.publicEncrypt=f.publicEncrypt,e.privateEncrypt=f.privateEncrypt,e.publicDecrypt=f.publicDecrypt,e.privateDecrypt=f.privateDecrypt;var l=n(203);e.randomFill=l.randomFill,e.randomFillSync=l.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},function(t,e,n){"use strict";e.byteLength=function(t){var e=c(t),n=e[0],r=e[1];return 3*(n+r)/4-r},e.toByteArray=function(t){var e,n,r=c(t),o=r[0],s=r[1],u=new a(function(t,e,n){return 3*(e+n)/4-n}(0,o,s)),f=0,l=s>0?o-4:o;for(n=0;n<l;n+=4)e=i[t.charCodeAt(n)]<<18|i[t.charCodeAt(n+1)]<<12|i[t.charCodeAt(n+2)]<<6|i[t.charCodeAt(n+3)],u[f++]=e>>16&255,u[f++]=e>>8&255,u[f++]=255&e;2===s&&(e=i[t.charCodeAt(n)]<<2|i[t.charCodeAt(n+1)]>>4,u[f++]=255&e);1===s&&(e=i[t.charCodeAt(n)]<<10|i[t.charCodeAt(n+1)]<<4|i[t.charCodeAt(n+2)]>>2,u[f++]=e>>8&255,u[f++]=255&e);return u},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a=[],o=0,s=n-i;o<s;o+=16383)a.push(f(t,o,o+16383>s?s:o+16383));1===i?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"="));return a.join("")};for(var r=[],i=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,u=o.length;s<u;++s)r[s]=o[s],i[o.charCodeAt(s)]=s;function c(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function f(t,e,n){for(var i,a,o=[],s=e;s<n;s+=3)i=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(r[(a=i)>>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return o.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,n,r,i){var a,o,s=8*i-r-1,u=(1<<s)-1,c=u>>1,f=-7,l=n?i-1:0,h=n?-1:1,d=t[e+l];for(l+=h,a=d&(1<<-f)-1,d>>=-f,f+=s;f>0;a=256*a+t[e+l],l+=h,f-=8);for(o=a&(1<<-f)-1,a>>=-f,f+=r;f>0;o=256*o+t[e+l],l+=h,f-=8);if(0===a)a=1-c;else{if(a===u)return o?NaN:1/0*(d?-1:1);o+=Math.pow(2,r),a-=c}return(d?-1:1)*o*Math.pow(2,a-r)},e.write=function(t,e,n,r,i,a){var o,s,u,c=8*a-i-1,f=(1<<c)-1,l=f>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:a-1,p=r?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=f):(o=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-o))<1&&(o--,u*=2),(e+=o+l>=1?h/u:h*Math.pow(2,1-l))*u>=2&&(o++,u/=2),o+l>=f?(s=0,o=f):o+l>=1?(s=(e*u-1)*Math.pow(2,i),o+=l):(s=e*Math.pow(2,l-1)*Math.pow(2,i),o=0));i>=8;t[n+d]=255&s,d+=p,s/=256,i-=8);for(o=o<<i|s,c+=i;c>0;t[n+d]=255&o,d+=p,o/=256,c-=8);t[n+d-p]|=128*g}},function(t,e){},function(t,e,n){"use strict";var r=n(50).Buffer,i=n(127);t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}return t.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length},t.prototype.unshift=function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length},t.prototype.shift=function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}},t.prototype.clear=function(){this.head=this.tail=null,this.length=0},t.prototype.join=function(t){if(0===this.length)return"";for(var e=this.head,n=""+e.data;e=e.next;)n+=t+e.data;return n},t.prototype.concat=function(t){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var e,n,i,a=r.allocUnsafe(t>>>0),o=this.head,s=0;o;)e=o.data,n=a,i=s,e.copy(n,i),s+=o.data.length,o=o.next;return a},t}(),i&&i.inspect&&i.inspect.custom&&(t.exports.prototype[i.inspect.custom]=function(){var t=i.inspect({length:this.length});return this.constructor.name+" "+t})},function(t,e){},function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function a(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new a(i.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new a(i.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(129),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(13))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i,a,o,s,u=1,c={},f=!1,l=t.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(t);h=h&&h.setTimeout?h:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){p(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((a=new MessageChannel).port1.onmessage=function(t){p(t.data)},r=function(t){a.port2.postMessage(t)}):l&&"onreadystatechange"in l.createElement("script")?(i=l.documentElement,r=function(t){var e=l.createElement("script");e.onreadystatechange=function(){p(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):r=function(t){setTimeout(p,0,t)}:(o="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(o)&&p(+e.data.slice(o.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(o+e,"*")}),h.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var i={callback:t,args:e};return c[u]=i,r(u),u++},h.clearImmediate=d}function d(t){delete c[t]}function p(t){if(f)setTimeout(p,0,t);else{var e=c[t];if(e){f=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{d(t),f=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(13),n(5))},function(t,e,n){(function(e){function n(t){try{if(!e.localStorage)return!1}catch(t){return!1}var n=e.localStorage[t];return null!=n&&"true"===String(n).toLowerCase()}t.exports=function(t,e){if(n("noDeprecation"))return t;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(e);n("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}}).call(this,n(13))},function(t,e,n){"use strict";t.exports=a;var r=n(74),i=n(27);function a(t){if(!(this instanceof a))return new a(t);r.call(this,t)}i.inherits=n(2),i.inherits(a,r),a.prototype._transform=function(t,e,n){n(null,t)}},function(t,e,n){t.exports=n(51)},function(t,e,n){t.exports=n(21)},function(t,e,n){t.exports=n(49).Transform},function(t,e,n){t.exports=n(49).PassThrough},function(t,e,n){var r=n(2),i=n(23),a=n(3).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,i.call(this,64,56)}function c(t){return t<<30|t>>>2}function f(t,e,n,r){return 0===t?e&n|~e&r:2===t?e&n|e&r|n&r:e^n^r}r(u,i),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(t){for(var e,n=this._w,r=0|this._a,i=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,l=0;l<16;++l)n[l]=t.readInt32BE(4*l);for(;l<80;++l)n[l]=n[l-3]^n[l-8]^n[l-14]^n[l-16];for(var h=0;h<80;++h){var d=~~(h/20),p=0|((e=r)<<5|e>>>27)+f(d,i,a,s)+u+n[h]+o[d];u=s,s=a,a=c(i),i=r,r=p}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var t=a.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=u},function(t,e,n){var r=n(2),i=n(23),a=n(3).Buffer,o=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,i.call(this,64,56)}function c(t){return t<<5|t>>>27}function f(t){return t<<30|t>>>2}function l(t,e,n,r){return 0===t?e&n|~e&r:2===t?e&n|e&r|n&r:e^n^r}r(u,i),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(t){for(var e,n=this._w,r=0|this._a,i=0|this._b,a=0|this._c,s=0|this._d,u=0|this._e,h=0;h<16;++h)n[h]=t.readInt32BE(4*h);for(;h<80;++h)n[h]=(e=n[h-3]^n[h-8]^n[h-14]^n[h-16])<<1|e>>>31;for(var d=0;d<80;++d){var p=~~(d/20),g=c(r)+l(p,i,a,s)+u+n[d]+o[p]|0;u=s,s=a,a=f(i),i=r,r=g}this._a=r+this._a|0,this._b=i+this._b|0,this._c=a+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var t=a.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=u},function(t,e,n){var r=n(2),i=n(75),a=n(23),o=n(3).Buffer,s=new Array(64);function u(){this.init(),this._w=s,a.call(this,64,56)}r(u,i),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var t=o.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=u},function(t,e,n){var r=n(2),i=n(76),a=n(23),o=n(3).Buffer,s=new Array(160);function u(){this.init(),this._w=s,a.call(this,128,112)}r(u,i),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){var t=o.allocUnsafe(48);function e(e,n,r){t.writeInt32BE(e,r),t.writeInt32BE(n,r+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=u},function(t,e,n){"use strict";var r=n(2),i=n(3).Buffer,a=n(19),o=i.alloc(128),s=64;function u(t,e){a.call(this,"digest"),"string"==typeof e&&(e=i.from(e)),this._alg=t,this._key=e,e.length>s?e=t(e):e.length<s&&(e=i.concat([e,o],s));for(var n=this._ipad=i.allocUnsafe(s),r=this._opad=i.allocUnsafe(s),u=0;u<s;u++)n[u]=54^e[u],r[u]=92^e[u];this._hash=[n]}r(u,a),u.prototype._update=function(t){this._hash.push(t)},u.prototype._final=function(){var t=this._alg(i.concat(this._hash));return this._alg(i.concat([this._opad,t]))},t.exports=u},function(t,e,n){t.exports=n(79)},function(t,e,n){(function(e,r){var i,a=n(81),o=n(82),s=n(83),u=n(3).Buffer,c=e.crypto&&e.crypto.subtle,f={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},l=[];function h(t,e,n,r,i){return c.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return c.deriveBits({name:"PBKDF2",salt:e,iterations:n,hash:{name:i}},t,r<<3)})).then((function(t){return u.from(t)}))}t.exports=function(t,n,d,p,g,y){"function"==typeof g&&(y=g,g=void 0);var b=f[(g=g||"sha1").toLowerCase()];if(!b||"function"!=typeof e.Promise)return r.nextTick((function(){var e;try{e=s(t,n,d,p,g)}catch(t){return y(t)}y(null,e)}));if(a(t,n,d,p),"function"!=typeof y)throw new Error("No callback provided to pbkdf2");u.isBuffer(t)||(t=u.from(t,o)),u.isBuffer(n)||(n=u.from(n,o)),function(t,e){t.then((function(t){r.nextTick((function(){e(null,t)}))}),(function(t){r.nextTick((function(){e(t)}))}))}(function(t){if(e.process&&!e.process.browser)return Promise.resolve(!1);if(!c||!c.importKey||!c.deriveBits)return Promise.resolve(!1);if(void 0!==l[t])return l[t];var n=h(i=i||u.alloc(8),i,10,128,t).then((function(){return!0})).catch((function(){return!1}));return l[t]=n,n}(b).then((function(e){return e?h(t,n,d,p,b):s(t,n,d,p,g)})),y)}}).call(this,n(13),n(5))},function(t,e,n){var r=n(144),i=n(56),a=n(57),o=n(159),s=n(37);function u(t,e,n){if(t=t.toLowerCase(),a[t])return i.createCipheriv(t,e,n);if(o[t])return new r({key:e,iv:n,mode:t});throw new TypeError("invalid suite type")}function c(t,e,n){if(t=t.toLowerCase(),a[t])return i.createDecipheriv(t,e,n);if(o[t])return new r({key:e,iv:n,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var n,r;if(t=t.toLowerCase(),a[t])n=a[t].key,r=a[t].iv;else{if(!o[t])throw new TypeError("invalid suite type");n=8*o[t].key,r=o[t].iv}var i=s(e,!1,n,r);return u(t,i.key,i.iv)},e.createCipheriv=e.Cipheriv=u,e.createDecipher=e.Decipher=function(t,e){var n,r;if(t=t.toLowerCase(),a[t])n=a[t].key,r=a[t].iv;else{if(!o[t])throw new TypeError("invalid suite type");n=8*o[t].key,r=o[t].iv}var i=s(e,!1,n,r);return c(t,i.key,i.iv)},e.createDecipheriv=e.Decipheriv=c,e.listCiphers=e.getCiphers=function(){return Object.keys(o).concat(i.getCiphers())}},function(t,e,n){var r=n(19),i=n(55),a=n(2),o=n(3).Buffer,s={"des-ede3-cbc":i.CBC.instantiate(i.EDE),"des-ede3":i.EDE,"des-ede-cbc":i.CBC.instantiate(i.EDE),"des-ede":i.EDE,"des-cbc":i.CBC.instantiate(i.DES),"des-ecb":i.DES};function u(t){r.call(this);var e,n=t.mode.toLowerCase(),i=s[n];e=t.decrypt?"decrypt":"encrypt";var a=t.key;o.isBuffer(a)||(a=o.from(a)),"des-ede"!==n&&"des-ede-cbc"!==n||(a=o.concat([a,a.slice(0,8)]));var u=t.iv;o.isBuffer(u)||(u=o.from(u)),this._des=i.create({key:a,iv:u,type:e})}s.des=s["des-cbc"],s.des3=s["des-ede3-cbc"],t.exports=u,a(u,r),u.prototype._update=function(t){return o.from(this._des.update(t))},u.prototype._final=function(){return o.from(this._des.final())}},function(t,e,n){"use strict";e.readUInt32BE=function(t,e){return(t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e])>>>0},e.writeUInt32BE=function(t,e,n){t[0+n]=e>>>24,t[1+n]=e>>>16&255,t[2+n]=e>>>8&255,t[3+n]=255&e},e.ip=function(t,e,n,r){for(var i=0,a=0,o=6;o>=0;o-=2){for(var s=0;s<=24;s+=8)i<<=1,i|=e>>>s+o&1;for(s=0;s<=24;s+=8)i<<=1,i|=t>>>s+o&1}for(o=6;o>=0;o-=2){for(s=1;s<=25;s+=8)a<<=1,a|=e>>>s+o&1;for(s=1;s<=25;s+=8)a<<=1,a|=t>>>s+o&1}n[r+0]=i>>>0,n[r+1]=a>>>0},e.rip=function(t,e,n,r){for(var i=0,a=0,o=0;o<4;o++)for(var s=24;s>=0;s-=8)i<<=1,i|=e>>>s+o&1,i<<=1,i|=t>>>s+o&1;for(o=4;o<8;o++)for(s=24;s>=0;s-=8)a<<=1,a|=e>>>s+o&1,a<<=1,a|=t>>>s+o&1;n[r+0]=i>>>0,n[r+1]=a>>>0},e.pc1=function(t,e,n,r){for(var i=0,a=0,o=7;o>=5;o--){for(var s=0;s<=24;s+=8)i<<=1,i|=e>>s+o&1;for(s=0;s<=24;s+=8)i<<=1,i|=t>>s+o&1}for(s=0;s<=24;s+=8)i<<=1,i|=e>>s+o&1;for(o=1;o<=3;o++){for(s=0;s<=24;s+=8)a<<=1,a|=e>>s+o&1;for(s=0;s<=24;s+=8)a<<=1,a|=t>>s+o&1}for(s=0;s<=24;s+=8)a<<=1,a|=t>>s+o&1;n[r+0]=i>>>0,n[r+1]=a>>>0},e.r28shl=function(t,e){return t<<e&268435455|t>>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,n,i){for(var a=0,o=0,s=r.length>>>1,u=0;u<s;u++)a<<=1,a|=t>>>r[u]&1;for(u=s;u<r.length;u++)o<<=1,o|=e>>>r[u]&1;n[i+0]=a>>>0,n[i+1]=o>>>0},e.expand=function(t,e,n){var r=0,i=0;r=(1&t)<<5|t>>>27;for(var a=23;a>=15;a-=4)r<<=6,r|=t>>>a&63;for(a=11;a>=3;a-=4)i|=t>>>a&63,i<<=6;i|=(31&t)<<1|t>>>31,e[n+0]=r>>>0,e[n+1]=i>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var n=0,r=0;r<4;r++){n<<=4,n|=i[64*r+(t>>>18-6*r&63)]}for(r=0;r<4;r++){n<<=4,n|=i[256+64*r+(e>>>18-6*r&63)]}return n>>>0};var a=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,n=0;n<a.length;n++)e<<=1,e|=t>>>a[n]&1;return e>>>0},e.padSplit=function(t,e,n){for(var r=t.toString(2);r.length<e;)r="0"+r;for(var i=[],a=0;a<e;a+=n)i.push(r.slice(a,a+n));return i.join(" ")}},function(t,e,n){"use strict";var r=n(9);function i(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}t.exports=i,i.prototype._init=function(){},i.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},i.prototype._buffer=function(t,e){for(var n=Math.min(this.buffer.length-this.bufferOff,t.length-e),r=0;r<n;r++)this.buffer[this.bufferOff+r]=t[e+r];return this.bufferOff+=n,n},i.prototype._flushBuffer=function(t,e){return this._update(this.buffer,0,t,e),this.bufferOff=0,this.blockSize},i.prototype._updateEncrypt=function(t){var e=0,n=0,r=(this.bufferOff+t.length)/this.blockSize|0,i=new Array(r*this.blockSize);0!==this.bufferOff&&(e+=this._buffer(t,e),this.bufferOff===this.buffer.length&&(n+=this._flushBuffer(i,n)));for(var a=t.length-(t.length-e)%this.blockSize;e<a;e+=this.blockSize)this._update(t,e,i,n),n+=this.blockSize;for(;e<t.length;e++,this.bufferOff++)this.buffer[this.bufferOff]=t[e];return i},i.prototype._updateDecrypt=function(t){for(var e=0,n=0,r=Math.ceil((this.bufferOff+t.length)/this.blockSize)-1,i=new Array(r*this.blockSize);r>0;r--)e+=this._buffer(t,e),n+=this._flushBuffer(i,n);return e+=this._buffer(t,e),i},i.prototype.final=function(t){var e,n;return t&&(e=this.update(t)),n="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(n):n},i.prototype._pad=function(t,e){if(0===e)return!1;for(;e<t.length;)t[e++]=0;return!0},i.prototype._finalEncrypt=function(){if(!this._pad(this.buffer,this.bufferOff))return[];var t=new Array(this.blockSize);return this._update(this.buffer,0,t,0),t},i.prototype._unpad=function(t){return t},i.prototype._finalDecrypt=function(){r.equal(this.bufferOff,this.blockSize,"Not enough data to decrypt");var t=new Array(this.blockSize);return this._flushBuffer(t,0),this._unpad(t)}},function(t,e,n){"use strict";var r=n(9),i=n(2),a=n(55),o=a.utils,s=a.Cipher;function u(){this.tmp=new Array(2),this.keys=null}function c(t){s.call(this,t);var e=new u;this._desState=e,this.deriveKeys(e,t.key)}i(c,s),t.exports=c,c.create=function(t){return new c(t)};var f=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];c.prototype.deriveKeys=function(t,e){t.keys=new Array(32),r.equal(e.length,this.blockSize,"Invalid key length");var n=o.readUInt32BE(e,0),i=o.readUInt32BE(e,4);o.pc1(n,i,t.tmp,0),n=t.tmp[0],i=t.tmp[1];for(var a=0;a<t.keys.length;a+=2){var s=f[a>>>1];n=o.r28shl(n,s),i=o.r28shl(i,s),o.pc2(n,i,t.keys,a)}},c.prototype._update=function(t,e,n,r){var i=this._desState,a=o.readUInt32BE(t,e),s=o.readUInt32BE(t,e+4);o.ip(a,s,i.tmp,0),a=i.tmp[0],s=i.tmp[1],"encrypt"===this.type?this._encrypt(i,a,s,i.tmp,0):this._decrypt(i,a,s,i.tmp,0),a=i.tmp[0],s=i.tmp[1],o.writeUInt32BE(n,a,r),o.writeUInt32BE(n,s,r+4)},c.prototype._pad=function(t,e){for(var n=t.length-e,r=e;r<t.length;r++)t[r]=n;return!0},c.prototype._unpad=function(t){for(var e=t[t.length-1],n=t.length-e;n<t.length;n++)r.equal(t[n],e);return t.slice(0,t.length-e)},c.prototype._encrypt=function(t,e,n,r,i){for(var a=e,s=n,u=0;u<t.keys.length;u+=2){var c=t.keys[u],f=t.keys[u+1];o.expand(s,t.tmp,0),c^=t.tmp[0],f^=t.tmp[1];var l=o.substitute(c,f),h=s;s=(a^o.permute(l))>>>0,a=h}o.rip(s,a,r,i)},c.prototype._decrypt=function(t,e,n,r,i){for(var a=n,s=e,u=t.keys.length-2;u>=0;u-=2){var c=t.keys[u],f=t.keys[u+1];o.expand(a,t.tmp,0),c^=t.tmp[0],f^=t.tmp[1];var l=o.substitute(c,f),h=a;a=(s^o.permute(l))>>>0,s=h}o.rip(a,s,r,i)}},function(t,e,n){"use strict";var r=n(9),i=n(2),a={};function o(t){r.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e<this.iv.length;e++)this.iv[e]=t[e]}e.instantiate=function(t){function e(e){t.call(this,e),this._cbcInit()}i(e,t);for(var n=Object.keys(a),r=0;r<n.length;r++){var o=n[r];e.prototype[o]=a[o]}return e.create=function(t){return new e(t)},e},a._cbcInit=function(){var t=new o(this.options.iv);this._cbcState=t},a._update=function(t,e,n,r){var i=this._cbcState,a=this.constructor.super_.prototype,o=i.iv;if("encrypt"===this.type){for(var s=0;s<this.blockSize;s++)o[s]^=t[e+s];a._update.call(this,o,0,n,r);for(s=0;s<this.blockSize;s++)o[s]=n[r+s]}else{a._update.call(this,t,e,n,r);for(s=0;s<this.blockSize;s++)n[r+s]^=o[s];for(s=0;s<this.blockSize;s++)o[s]=t[e+s]}}},function(t,e,n){"use strict";var r=n(9),i=n(2),a=n(55),o=a.Cipher,s=a.DES;function u(t,e){r.equal(e.length,24,"Invalid key length");var n=e.slice(0,8),i=e.slice(8,16),a=e.slice(16,24);this.ciphers="encrypt"===t?[s.create({type:"encrypt",key:n}),s.create({type:"decrypt",key:i}),s.create({type:"encrypt",key:a})]:[s.create({type:"decrypt",key:a}),s.create({type:"encrypt",key:i}),s.create({type:"decrypt",key:n})]}function c(t){o.call(this,t);var e=new u(this.type,this.options.key);this._edeState=e}i(c,o),t.exports=c,c.create=function(t){return new c(t)},c.prototype._update=function(t,e,n,r){var i=this._edeState;i.ciphers[0]._update(t,e,n,r),i.ciphers[1]._update(n,r,n,r),i.ciphers[2]._update(n,r,n,r)},c.prototype._pad=s.prototype._pad,c.prototype._unpad=s.prototype._unpad},function(t,e,n){var r=n(57),i=n(87),a=n(3).Buffer,o=n(88),s=n(19),u=n(36),c=n(37);function f(t,e,n){s.call(this),this._cache=new h,this._cipher=new u.AES(e),this._prev=a.from(n),this._mode=t,this._autopadding=!0}n(2)(f,s),f.prototype._update=function(t){var e,n;this._cache.add(t);for(var r=[];e=this._cache.get();)n=this._mode.encrypt(this,e),r.push(n);return a.concat(r)};var l=a.alloc(16,16);function h(){this.cache=a.allocUnsafe(0)}function d(t,e,n){var s=r[t.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof e&&(e=a.from(e)),e.length!==s.key/8)throw new TypeError("invalid key length "+e.length);if("string"==typeof n&&(n=a.from(n)),"GCM"!==s.mode&&n.length!==s.iv)throw new TypeError("invalid iv length "+n.length);return"stream"===s.type?new o(s.module,e,n):"auth"===s.type?new i(s.module,e,n):new f(s.module,e,n)}f.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(l))throw this._cipher.scrub(),new Error("data not multiple of block length")},f.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},h.prototype.add=function(t){this.cache=a.concat([this.cache,t])},h.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},h.prototype.flush=function(){for(var t=16-this.cache.length,e=a.allocUnsafe(t),n=-1;++n<t;)e.writeUInt8(t,n);return a.concat([this.cache,e])},e.createCipheriv=d,e.createCipher=function(t,e){var n=r[t.toLowerCase()];if(!n)throw new TypeError("invalid suite type");var i=c(e,!1,n.key,n.iv);return d(t,i.key,i.iv)}},function(t,e){e.encrypt=function(t,e){return t._cipher.encryptBlock(e)},e.decrypt=function(t,e){return t._cipher.decryptBlock(e)}},function(t,e,n){var r=n(28);e.encrypt=function(t,e){var n=r(e,t._prev);return t._prev=t._cipher.encryptBlock(n),t._prev},e.decrypt=function(t,e){var n=t._prev;t._prev=e;var i=t._cipher.decryptBlock(e);return r(i,n)}},function(t,e,n){var r=n(3).Buffer,i=n(28);function a(t,e,n){var a=e.length,o=i(e,t._cache);return t._cache=t._cache.slice(a),t._prev=r.concat([t._prev,n?e:o]),o}e.encrypt=function(t,e,n){for(var i,o=r.allocUnsafe(0);e.length;){if(0===t._cache.length&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=r.allocUnsafe(0)),!(t._cache.length<=e.length)){o=r.concat([o,a(t,e,n)]);break}i=t._cache.length,o=r.concat([o,a(t,e.slice(0,i),n)]),e=e.slice(i)}return o}},function(t,e,n){var r=n(3).Buffer;function i(t,e,n){var i=t._cipher.encryptBlock(t._prev)[0]^e;return t._prev=r.concat([t._prev.slice(1),r.from([n?e:i])]),i}e.encrypt=function(t,e,n){for(var a=e.length,o=r.allocUnsafe(a),s=-1;++s<a;)o[s]=i(t,e[s],n);return o}},function(t,e,n){var r=n(3).Buffer;function i(t,e,n){for(var r,i,o=-1,s=0;++o<8;)r=e&1<<7-o?128:0,s+=(128&(i=t._cipher.encryptBlock(t._prev)[0]^r))>>o%8,t._prev=a(t._prev,n?r:i);return s}function a(t,e){var n=t.length,i=-1,a=r.allocUnsafe(t.length);for(t=r.concat([t,r.from([e])]);++i<n;)a[i]=t[i]<<1|t[i+1]>>7;return a}e.encrypt=function(t,e,n){for(var a=e.length,o=r.allocUnsafe(a),s=-1;++s<a;)o[s]=i(t,e[s],n);return o}},function(t,e,n){(function(t){var r=n(28);function i(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}e.encrypt=function(e,n){for(;e._cache.length<n.length;)e._cache=t.concat([e._cache,i(e)]);var a=e._cache.slice(0,n.length);return e._cache=e._cache.slice(n.length),r(n,a)}}).call(this,n(6).Buffer)},function(t,e,n){var r=n(3).Buffer,i=r.alloc(16,0);function a(t){var e=r.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function o(t){this.h=t,this.state=r.alloc(16,0),this.cache=r.allocUnsafe(0)}o.prototype.ghash=function(t){for(var e=-1;++e<t.length;)this.state[e]^=t[e];this._multiply()},o.prototype._multiply=function(){for(var t,e,n,r=[(t=this.h).readUInt32BE(0),t.readUInt32BE(4),t.readUInt32BE(8),t.readUInt32BE(12)],i=[0,0,0,0],o=-1;++o<128;){for(0!=(this.state[~~(o/8)]&1<<7-o%8)&&(i[0]^=r[0],i[1]^=r[1],i[2]^=r[2],i[3]^=r[3]),n=0!=(1&r[3]),e=3;e>0;e--)r[e]=r[e]>>>1|(1&r[e-1])<<31;r[0]=r[0]>>>1,n&&(r[0]=r[0]^225<<24)}this.state=a(i)},o.prototype.update=function(t){var e;for(this.cache=r.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},o.prototype.final=function(t,e){return this.cache.length&&this.ghash(r.concat([this.cache,i],16)),this.ghash(a([0,t,0,e])),this.state},t.exports=o},function(t,e,n){var r=n(87),i=n(3).Buffer,a=n(57),o=n(88),s=n(19),u=n(36),c=n(37);function f(t,e,n){s.call(this),this._cache=new l,this._last=void 0,this._cipher=new u.AES(e),this._prev=i.from(n),this._mode=t,this._autopadding=!0}function l(){this.cache=i.allocUnsafe(0)}function h(t,e,n){var s=a[t.toLowerCase()];if(!s)throw new TypeError("invalid suite type");if("string"==typeof n&&(n=i.from(n)),"GCM"!==s.mode&&n.length!==s.iv)throw new TypeError("invalid iv length "+n.length);if("string"==typeof e&&(e=i.from(e)),e.length!==s.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===s.type?new o(s.module,e,n,!0):"auth"===s.type?new r(s.module,e,n,!0):new f(s.module,e,n)}n(2)(f,s),f.prototype._update=function(t){var e,n;this._cache.add(t);for(var r=[];e=this._cache.get(this._autopadding);)n=this._mode.decrypt(this,e),r.push(n);return i.concat(r)},f.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");var n=-1;for(;++n<e;)if(t[n+(16-e)]!==e)throw new Error("unable to decrypt data");if(16===e)return;return t.slice(0,16-e)}(this._mode.decrypt(this,t));if(t)throw new Error("data not multiple of block length")},f.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},l.prototype.add=function(t){this.cache=i.concat([this.cache,t])},l.prototype.get=function(t){var e;if(t){if(this.cache.length>16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},l.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var n=a[t.toLowerCase()];if(!n)throw new TypeError("invalid suite type");var r=c(e,!1,n.key,n.iv);return h(t,r.key,r.iv)},e.createDecipheriv=h},function(t,e){e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},function(t,e,n){(function(t){var r=n(89),i=n(163),a=n(164);var o={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(e){var n=new t(i[e].prime,"hex"),r=new t(i[e].gen,"hex");return new a(n,r)},e.createDiffieHellman=e.DiffieHellman=function e(n,i,s,u){return t.isBuffer(i)||void 0===o[i]?e(n,"binary",i,s):(i=i||"binary",u=u||"binary",s=s||new t([2]),t.isBuffer(s)||(s=new t(s,u)),"number"==typeof n?new a(r(n,s),s,!0):(t.isBuffer(n)||(n=new t(n,i)),new a(n,s,!0)))}}).call(this,n(6).Buffer)},function(t,e){},function(t,e){},function(t){t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},function(t,e,n){(function(e){var r=n(4),i=new(n(90)),a=new r(24),o=new r(11),s=new r(10),u=new r(3),c=new r(7),f=n(89),l=n(22);function h(t,n){return n=n||"utf8",e.isBuffer(t)||(t=new e(t,n)),this._pub=new r(t),this}function d(t,n){return n=n||"utf8",e.isBuffer(t)||(t=new e(t,n)),this._priv=new r(t),this}t.exports=g;var p={};function g(t,e,n){this.setGenerator(e),this.__prime=new r(t),this._prime=r.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,n?(this.setPublicKey=h,this.setPrivateKey=d):this._primeCode=8}function y(t,n){var r=new e(t.toArray());return n?r.toString(n):r}Object.defineProperty(g.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var n=e.toString("hex"),r=[n,t.toString(16)].join("_");if(r in p)return p[r];var l,h=0;if(t.isEven()||!f.simpleSieve||!f.fermatTest(t)||!i.test(t))return h+=1,h+="02"===n||"05"===n?8:4,p[r]=h,h;switch(i.test(t.shrn(1))||(h+=2),n){case"02":t.mod(a).cmp(o)&&(h+=8);break;case"05":(l=t.mod(s)).cmp(u)&&l.cmp(c)&&(h+=8);break;default:h+=4}return p[r]=h,h}(this.__prime,this.__gen)),this._primeCode}}),g.prototype.generateKeys=function(){return this._priv||(this._priv=new r(l(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},g.prototype.computeSecret=function(t){var n=(t=(t=new r(t)).toRed(this._prime)).redPow(this._priv).fromRed(),i=new e(n.toArray()),a=this.getPrime();if(i.length<a.length){var o=new e(a.length-i.length);o.fill(0),i=e.concat([o,i])}return i},g.prototype.getPublicKey=function(t){return y(this._pub,t)},g.prototype.getPrivateKey=function(t){return y(this._priv,t)},g.prototype.getPrime=function(t){return y(this.__prime,t)},g.prototype.getGenerator=function(t){return y(this._gen,t)},g.prototype.setGenerator=function(t,n){return n=n||"utf8",e.isBuffer(t)||(t=new e(t,n)),this.__gen=t,this._gen=new r(t),this}}).call(this,n(6).Buffer)},function(t,e,n){(function(e){var r=n(26),i=n(47),a=n(2),o=n(166),s=n(198),u=n(79);function c(t){i.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=r(e.hash),this._tag=e.id,this._signType=e.sign}function f(t){i.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hash=r(e.hash),this._tag=e.id,this._signType=e.sign}function l(t){return new c(t)}function h(t){return new f(t)}Object.keys(u).forEach((function(t){u[t].id=new e(u[t].id,"hex"),u[t.toLowerCase()]=u[t]})),a(c,i.Writable),c.prototype._write=function(t,e,n){this._hash.update(t),n()},c.prototype.update=function(t,n){return"string"==typeof t&&(t=new e(t,n)),this._hash.update(t),this},c.prototype.sign=function(t,e){this.end();var n=this._hash.digest(),r=o(n,t,this._hashType,this._signType,this._tag);return e?r.toString(e):r},a(f,i.Writable),f.prototype._write=function(t,e,n){this._hash.update(t),n()},f.prototype.update=function(t,n){return"string"==typeof t&&(t=new e(t,n)),this._hash.update(t),this},f.prototype.verify=function(t,n,r){"string"==typeof n&&(n=new e(n,r)),this.end();var i=this._hash.digest();return s(n,i,t,this._signType,this._tag)},t.exports={Sign:l,Verify:h,createSign:l,createVerify:h}}).call(this,n(6).Buffer)},function(t,e,n){(function(e){var r=n(77),i=n(59),a=n(60).ec,o=n(4),s=n(39),u=n(100);function c(t,n,i,a){if((t=new e(t.toArray())).length<n.byteLength()){var o=new e(n.byteLength()-t.length);o.fill(0),t=e.concat([o,t])}var s=i.length,u=function(t,n){t=(t=f(t,n)).mod(n);var r=new e(t.toArray());if(r.length<n.byteLength()){var i=new e(n.byteLength()-r.length);i.fill(0),r=e.concat([i,r])}return r}(i,n),c=new e(s);c.fill(1);var l=new e(s);return l.fill(0),l=r(a,l).update(c).update(new e([0])).update(t).update(u).digest(),c=r(a,l).update(c).digest(),{k:l=r(a,l).update(c).update(new e([1])).update(t).update(u).digest(),v:c=r(a,l).update(c).digest()}}function f(t,e){var n=new o(t),r=(t.length<<3)-e.bitLength();return r>0&&n.ishrn(r),n}function l(t,n,i){var a,o;do{for(a=new e(0);8*a.length<t.bitLength();)n.v=r(i,n.k).update(n.v).digest(),a=e.concat([a,n.v]);o=f(a,t),n.k=r(i,n.k).update(n.v).update(new e([0])).digest(),n.v=r(i,n.k).update(n.v).digest()}while(-1!==o.cmp(t));return o}function h(t,e,n,r){return t.toRed(o.mont(n)).redPow(e).fromRed().mod(r)}t.exports=function(t,n,r,d,p){var g=s(n);if(g.curve){if("ecdsa"!==d&&"ecdsa/rsa"!==d)throw new Error("wrong private key type");return function(t,n){var r=u[n.curve.join(".")];if(!r)throw new Error("unknown curve "+n.curve.join("."));var i=new a(r).keyFromPrivate(n.privateKey).sign(t);return new e(i.toDER())}(t,g)}if("dsa"===g.type){if("dsa"!==d)throw new Error("wrong private key type");return function(t,n,r){var i,a=n.params.priv_key,s=n.params.p,u=n.params.q,d=n.params.g,p=new o(0),g=f(t,u).mod(u),y=!1,b=c(a,u,t,r);for(;!1===y;)i=l(u,b,r),p=h(d,i,s,u),0===(y=i.invm(u).imul(g.add(a.mul(p))).mod(u)).cmpn(0)&&(y=!1,p=new o(0));return function(t,n){t=t.toArray(),n=n.toArray(),128&t[0]&&(t=[0].concat(t));128&n[0]&&(n=[0].concat(n));var r=[48,t.length+n.length+4,2,t.length];return r=r.concat(t,[2,n.length],n),new e(r)}(p,y)}(t,g,r)}if("rsa"!==d&&"ecdsa/rsa"!==d)throw new Error("wrong private key type");t=e.concat([p,t]);for(var y=g.modulus.byteLength(),b=[0,1];t.length+b.length+1<y;)b.push(255);b.push(0);for(var m=-1;++m<t.length;)b.push(t[m]);return i(b,g)},t.exports.getKey=c,t.exports.makeKey=l}).call(this,n(6).Buffer)},function(t){t.exports=JSON.parse('{"name":"elliptic","version":"6.5.1","description":"EC cryptography","main":"lib/elliptic.js","files":["lib"],"scripts":{"jscs":"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js","jshint":"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js","lint":"npm run jscs && npm run jshint","unit":"istanbul test _mocha --reporter=spec test/index.js","test":"npm run lint && npm run unit","version":"grunt dist && git add dist/"},"repository":{"type":"git","url":"git@github.com:indutny/elliptic"},"keywords":["EC","Elliptic","curve","Cryptography"],"author":"Fedor Indutny <fedor@indutny.com>","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^1.4.3","coveralls":"^3.0.4","grunt":"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.2","jscs":"^3.0.7","jshint":"^2.6.0","mocha":"^6.1.4"},"dependencies":{"bn.js":"^4.4.0","brorand":"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0","inherits":"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"}}')},function(t,e,n){"use strict";var r=n(10),i=n(4),a=n(2),o=n(38),s=r.assert;function u(t){o.call(this,"short",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function c(t,e,n,r){o.BasePoint.call(this,t,"affine"),null===e&&null===n?(this.x=null,this.y=null,this.inf=!0):(this.x=new i(e,16),this.y=new i(n,16),r&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function f(t,e,n,r){o.BasePoint.call(this,t,"jacobian"),null===e&&null===n&&null===r?(this.x=this.curve.one,this.y=this.curve.one,this.z=new i(0)):(this.x=new i(e,16),this.y=new i(n,16),this.z=new i(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}a(u,o),t.exports=u,u.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,n;if(t.beta)e=new i(t.beta,16).toRed(this.red);else{var r=this._getEndoRoots(this.p);e=(e=r[0].cmp(r[1])<0?r[0]:r[1]).toRed(this.red)}if(t.lambda)n=new i(t.lambda,16);else{var a=this._getEndoRoots(this.n);0===this.g.mul(a[0]).x.cmp(this.g.x.redMul(e))?n=a[0]:(n=a[1],s(0===this.g.mul(n).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:n,basis:t.basis?t.basis.map((function(t){return{a:new i(t.a,16),b:new i(t.b,16)}})):this._getEndoBasis(n)}}},u.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:i.mont(t),n=new i(2).toRed(e).redInvm(),r=n.redNeg(),a=new i(3).toRed(e).redNeg().redSqrt().redMul(n);return[r.redAdd(a).fromRed(),r.redSub(a).fromRed()]},u.prototype._getEndoBasis=function(t){for(var e,n,r,a,o,s,u,c,f,l=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=t,d=this.n.clone(),p=new i(1),g=new i(0),y=new i(0),b=new i(1),m=0;0!==h.cmpn(0);){var v=d.div(h);c=d.sub(v.mul(h)),f=y.sub(v.mul(p));var _=b.sub(v.mul(g));if(!r&&c.cmp(l)<0)e=u.neg(),n=p,r=c.neg(),a=f;else if(r&&2==++m)break;u=c,d=h,h=c,y=p,p=f,b=g,g=_}o=c.neg(),s=f;var w=r.sqr().add(a.sqr());return o.sqr().add(s.sqr()).cmp(w)>=0&&(o=e,s=n),r.negative&&(r=r.neg(),a=a.neg()),o.negative&&(o=o.neg(),s=s.neg()),[{a:r,b:a},{a:o,b:s}]},u.prototype._endoSplit=function(t){var e=this.endo.basis,n=e[0],r=e[1],i=r.b.mul(t).divRound(this.n),a=n.b.neg().mul(t).divRound(this.n),o=i.mul(n.a),s=a.mul(r.a),u=i.mul(n.b),c=a.mul(r.b);return{k1:t.sub(o).sub(s),k2:u.add(c).neg()}},u.prototype.pointFromX=function(t,e){(t=new i(t,16)).red||(t=t.toRed(this.red));var n=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),r=n.redSqrt();if(0!==r.redSqr().redSub(n).cmp(this.zero))throw new Error("invalid point");var a=r.fromRed().isOdd();return(e&&!a||!e&&a)&&(r=r.redNeg()),this.point(t,r)},u.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,n=t.y,r=this.a.redMul(e),i=e.redSqr().redMul(e).redIAdd(r).redIAdd(this.b);return 0===n.redSqr().redISub(i).cmpn(0)},u.prototype._endoWnafMulAdd=function(t,e,n){for(var r=this._endoWnafT1,i=this._endoWnafT2,a=0;a<t.length;a++){var o=this._endoSplit(e[a]),s=t[a],u=s._getBeta();o.k1.negative&&(o.k1.ineg(),s=s.neg(!0)),o.k2.negative&&(o.k2.ineg(),u=u.neg(!0)),r[2*a]=s,r[2*a+1]=u,i[2*a]=o.k1,i[2*a+1]=o.k2}for(var c=this._wnafMulAdd(1,r,i,2*a,n),f=0;f<2*a;f++)r[f]=null,i[f]=null;return c},a(c,o.BasePoint),u.prototype.point=function(t,e,n){return new c(this,t,e,n)},u.prototype.pointFromJSON=function(t,e){return c.fromJSON(this,t,e)},c.prototype._getBeta=function(){if(this.curve.endo){var t=this.precomputed;if(t&&t.beta)return t.beta;var e=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(t){var n=this.curve,r=function(t){return n.point(t.x.redMul(n.endo.beta),t.y)};t.beta=e,e.precomputed={beta:null,naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(r)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(r)}}}return e}},c.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},c.fromJSON=function(t,e,n){"string"==typeof e&&(e=JSON.parse(e));var r=t.point(e[0],e[1],n);if(!e[2])return r;function i(e){return t.point(e[0],e[1],n)}var a=e[2];return r.precomputed={beta:null,doubles:a.doubles&&{step:a.doubles.step,points:[r].concat(a.doubles.points.map(i))},naf:a.naf&&{wnd:a.naf.wnd,points:[r].concat(a.naf.points.map(i))}},r},c.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var n=e.redSqr().redISub(this.x).redISub(t.x),r=e.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,r)},c.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,n=this.x.redSqr(),r=t.redInvm(),i=n.redAdd(n).redIAdd(n).redIAdd(e).redMul(r),a=i.redSqr().redISub(this.x.redAdd(this.x)),o=i.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,o)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(t){return t=new i(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},c.prototype.mulAdd=function(t,e,n){var r=[this,e],i=[t,n];return this.curve.endo?this.curve._endoWnafMulAdd(r,i):this.curve._wnafMulAdd(1,r,i,2)},c.prototype.jmulAdd=function(t,e,n){var r=[this,e],i=[t,n];return this.curve.endo?this.curve._endoWnafMulAdd(r,i,!0):this.curve._wnafMulAdd(1,r,i,2,!0)},c.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},c.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var n=this.precomputed,r=function(t){return t.neg()};e.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(r)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(r)}}}return e},c.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},a(f,o.BasePoint),u.prototype.jpoint=function(t,e,n){return new f(this,t,e,n)},f.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),n=this.x.redMul(e),r=this.y.redMul(e).redMul(t);return this.curve.point(n,r)},f.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},f.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),n=this.z.redSqr(),r=this.x.redMul(e),i=t.x.redMul(n),a=this.y.redMul(e.redMul(t.z)),o=t.y.redMul(n.redMul(this.z)),s=r.redSub(i),u=a.redSub(o);if(0===s.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),f=c.redMul(s),l=r.redMul(c),h=u.redSqr().redIAdd(f).redISub(l).redISub(l),d=u.redMul(l.redISub(h)).redISub(a.redMul(f)),p=this.z.redMul(t.z).redMul(s);return this.curve.jpoint(h,d,p)},f.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),n=this.x,r=t.x.redMul(e),i=this.y,a=t.y.redMul(e).redMul(this.z),o=n.redSub(r),s=i.redSub(a);if(0===o.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=o.redSqr(),c=u.redMul(o),f=n.redMul(u),l=s.redSqr().redIAdd(c).redISub(f).redISub(f),h=s.redMul(f.redISub(l)).redISub(i.redMul(c)),d=this.z.redMul(o);return this.curve.jpoint(l,h,d)},f.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var e=this,n=0;n<t;n++)e=e.dbl();return e}var r=this.curve.a,i=this.curve.tinv,a=this.x,o=this.y,s=this.z,u=s.redSqr().redSqr(),c=o.redAdd(o);for(n=0;n<t;n++){var f=a.redSqr(),l=c.redSqr(),h=l.redSqr(),d=f.redAdd(f).redIAdd(f).redIAdd(r.redMul(u)),p=a.redMul(l),g=d.redSqr().redISub(p.redAdd(p)),y=p.redISub(g),b=d.redMul(y);b=b.redIAdd(b).redISub(h);var m=c.redMul(s);n+1<t&&(u=u.redMul(h)),a=g,s=m,c=b}return this.curve.jpoint(a,c.redMul(i),s)},f.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},f.prototype._zeroDbl=function(){var t,e,n;if(this.zOne){var r=this.x.redSqr(),i=this.y.redSqr(),a=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(r).redISub(a);o=o.redIAdd(o);var s=r.redAdd(r).redIAdd(r),u=s.redSqr().redISub(o).redISub(o),c=a.redIAdd(a);c=(c=c.redIAdd(c)).redIAdd(c),t=u,e=s.redMul(o.redISub(u)).redISub(c),n=this.y.redAdd(this.y)}else{var f=this.x.redSqr(),l=this.y.redSqr(),h=l.redSqr(),d=this.x.redAdd(l).redSqr().redISub(f).redISub(h);d=d.redIAdd(d);var p=f.redAdd(f).redIAdd(f),g=p.redSqr(),y=h.redIAdd(h);y=(y=y.redIAdd(y)).redIAdd(y),t=g.redISub(d).redISub(d),e=p.redMul(d.redISub(t)).redISub(y),n=(n=this.y.redMul(this.z)).redIAdd(n)}return this.curve.jpoint(t,e,n)},f.prototype._threeDbl=function(){var t,e,n;if(this.zOne){var r=this.x.redSqr(),i=this.y.redSqr(),a=i.redSqr(),o=this.x.redAdd(i).redSqr().redISub(r).redISub(a);o=o.redIAdd(o);var s=r.redAdd(r).redIAdd(r).redIAdd(this.curve.a),u=s.redSqr().redISub(o).redISub(o);t=u;var c=a.redIAdd(a);c=(c=c.redIAdd(c)).redIAdd(c),e=s.redMul(o.redISub(u)).redISub(c),n=this.y.redAdd(this.y)}else{var f=this.z.redSqr(),l=this.y.redSqr(),h=this.x.redMul(l),d=this.x.redSub(f).redMul(this.x.redAdd(f));d=d.redAdd(d).redIAdd(d);var p=h.redIAdd(h),g=(p=p.redIAdd(p)).redAdd(p);t=d.redSqr().redISub(g),n=this.y.redAdd(this.z).redSqr().redISub(l).redISub(f);var y=l.redSqr();y=(y=(y=y.redIAdd(y)).redIAdd(y)).redIAdd(y),e=d.redMul(p.redISub(t)).redISub(y)}return this.curve.jpoint(t,e,n)},f.prototype._dbl=function(){var t=this.curve.a,e=this.x,n=this.y,r=this.z,i=r.redSqr().redSqr(),a=e.redSqr(),o=n.redSqr(),s=a.redAdd(a).redIAdd(a).redIAdd(t.redMul(i)),u=e.redAdd(e),c=(u=u.redIAdd(u)).redMul(o),f=s.redSqr().redISub(c.redAdd(c)),l=c.redISub(f),h=o.redSqr();h=(h=(h=h.redIAdd(h)).redIAdd(h)).redIAdd(h);var d=s.redMul(l).redISub(h),p=n.redAdd(n).redMul(r);return this.curve.jpoint(f,d,p)},f.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var t=this.x.redSqr(),e=this.y.redSqr(),n=this.z.redSqr(),r=e.redSqr(),i=t.redAdd(t).redIAdd(t),a=i.redSqr(),o=this.x.redAdd(e).redSqr().redISub(t).redISub(r),s=(o=(o=(o=o.redIAdd(o)).redAdd(o).redIAdd(o)).redISub(a)).redSqr(),u=r.redIAdd(r);u=(u=(u=u.redIAdd(u)).redIAdd(u)).redIAdd(u);var c=i.redIAdd(o).redSqr().redISub(a).redISub(s).redISub(u),f=e.redMul(c);f=(f=f.redIAdd(f)).redIAdd(f);var l=this.x.redMul(s).redISub(f);l=(l=l.redIAdd(l)).redIAdd(l);var h=this.y.redMul(c.redMul(u.redISub(c)).redISub(o.redMul(s)));h=(h=(h=h.redIAdd(h)).redIAdd(h)).redIAdd(h);var d=this.z.redAdd(o).redSqr().redISub(n).redISub(s);return this.curve.jpoint(l,h,d)},f.prototype.mul=function(t,e){return t=new i(t,e),this.curve._wnafMul(this,t)},f.prototype.eq=function(t){if("affine"===t.type)return this.eq(t.toJ());if(this===t)return!0;var e=this.z.redSqr(),n=t.z.redSqr();if(0!==this.x.redMul(n).redISub(t.x.redMul(e)).cmpn(0))return!1;var r=e.redMul(this.z),i=n.redMul(t.z);return 0===this.y.redMul(i).redISub(t.y.redMul(r)).cmpn(0)},f.prototype.eqXToP=function(t){var e=this.z.redSqr(),n=t.toRed(this.curve.red).redMul(e);if(0===this.x.cmp(n))return!0;for(var r=t.clone(),i=this.curve.redN.redMul(e);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(i),0===this.x.cmp(n))return!0}},f.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},f.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(t,e,n){"use strict";var r=n(4),i=n(2),a=n(38),o=n(10);function s(t){a.call(this,"mont",t),this.a=new r(t.a,16).toRed(this.red),this.b=new r(t.b,16).toRed(this.red),this.i4=new r(4).toRed(this.red).redInvm(),this.two=new r(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function u(t,e,n){a.BasePoint.call(this,t,"projective"),null===e&&null===n?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new r(e,16),this.z=new r(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}i(s,a),t.exports=s,s.prototype.validate=function(t){var e=t.normalize().x,n=e.redSqr(),r=n.redMul(e).redAdd(n.redMul(this.a)).redAdd(e);return 0===r.redSqrt().redSqr().cmp(r)},i(u,a.BasePoint),s.prototype.decodePoint=function(t,e){return this.point(o.toArray(t,e),1)},s.prototype.point=function(t,e){return new u(this,t,e)},s.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},u.prototype.precompute=function(){},u.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},u.fromJSON=function(t,e){return new u(t,e[0],e[1]||t.one)},u.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},u.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),n=t.redSub(e),r=t.redMul(e),i=n.redMul(e.redAdd(this.curve.a24.redMul(n)));return this.curve.point(r,i)},u.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.diffAdd=function(t,e){var n=this.x.redAdd(this.z),r=this.x.redSub(this.z),i=t.x.redAdd(t.z),a=t.x.redSub(t.z).redMul(n),o=i.redMul(r),s=e.z.redMul(a.redAdd(o).redSqr()),u=e.x.redMul(a.redISub(o).redSqr());return this.curve.point(s,u)},u.prototype.mul=function(t){for(var e=t.clone(),n=this,r=this.curve.point(null,null),i=[];0!==e.cmpn(0);e.iushrn(1))i.push(e.andln(1));for(var a=i.length-1;a>=0;a--)0===i[a]?(n=n.diffAdd(r,this),r=r.dbl()):(r=n.diffAdd(r,this),n=n.dbl());return r},u.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},u.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},u.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(t,e,n){"use strict";var r=n(10),i=n(4),a=n(2),o=n(38),s=r.assert;function u(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,o.call(this,"edwards",t),this.a=new i(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new i(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new i(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),s(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function c(t,e,n,r,a){o.BasePoint.call(this,t,"projective"),null===e&&null===n&&null===r?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new i(e,16),this.y=new i(n,16),this.z=r?new i(r,16):this.curve.one,this.t=a&&new i(a,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}a(u,o),t.exports=u,u.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},u.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},u.prototype.jpoint=function(t,e,n,r){return this.point(t,e,n,r)},u.prototype.pointFromX=function(t,e){(t=new i(t,16)).red||(t=t.toRed(this.red));var n=t.redSqr(),r=this.c2.redSub(this.a.redMul(n)),a=this.one.redSub(this.c2.redMul(this.d).redMul(n)),o=r.redMul(a.redInvm()),s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");var u=s.fromRed().isOdd();return(e&&!u||!e&&u)&&(s=s.redNeg()),this.point(t,s)},u.prototype.pointFromY=function(t,e){(t=new i(t,16)).red||(t=t.toRed(this.red));var n=t.redSqr(),r=n.redSub(this.c2),a=n.redMul(this.d).redMul(this.c2).redSub(this.a),o=r.redMul(a.redInvm());if(0===o.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var s=o.redSqrt();if(0!==s.redSqr().redSub(o).cmp(this.zero))throw new Error("invalid point");return s.fromRed().isOdd()!==e&&(s=s.redNeg()),this.point(s,t)},u.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),n=t.y.redSqr(),r=e.redMul(this.a).redAdd(n),i=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(n)));return 0===r.cmp(i)},a(c,o.BasePoint),u.prototype.pointFromJSON=function(t){return c.fromJSON(this,t)},u.prototype.point=function(t,e,n,r){return new c(this,t,e,n,r)},c.fromJSON=function(t,e){return new c(t,e[0],e[1],e[2])},c.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),n=this.z.redSqr();n=n.redIAdd(n);var r=this.curve._mulA(t),i=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),a=r.redAdd(e),o=a.redSub(n),s=r.redSub(e),u=i.redMul(o),c=a.redMul(s),f=i.redMul(s),l=o.redMul(a);return this.curve.point(u,c,l,f)},c.prototype._projDbl=function(){var t,e,n,r=this.x.redAdd(this.y).redSqr(),i=this.x.redSqr(),a=this.y.redSqr();if(this.curve.twisted){var o=(c=this.curve._mulA(i)).redAdd(a);if(this.zOne)t=r.redSub(i).redSub(a).redMul(o.redSub(this.curve.two)),e=o.redMul(c.redSub(a)),n=o.redSqr().redSub(o).redSub(o);else{var s=this.z.redSqr(),u=o.redSub(s).redISub(s);t=r.redSub(i).redISub(a).redMul(u),e=o.redMul(c.redSub(a)),n=o.redMul(u)}}else{var c=i.redAdd(a);s=this.curve._mulC(this.z).redSqr(),u=c.redSub(s).redSub(s);t=this.curve._mulC(r.redISub(c)).redMul(u),e=this.curve._mulC(c).redMul(i.redISub(a)),n=c.redMul(u)}return this.curve.point(t,e,n)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),n=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),r=this.t.redMul(this.curve.dd).redMul(t.t),i=this.z.redMul(t.z.redAdd(t.z)),a=n.redSub(e),o=i.redSub(r),s=i.redAdd(r),u=n.redAdd(e),c=a.redMul(o),f=s.redMul(u),l=a.redMul(u),h=o.redMul(s);return this.curve.point(c,f,h,l)},c.prototype._projAdd=function(t){var e,n,r=this.z.redMul(t.z),i=r.redSqr(),a=this.x.redMul(t.x),o=this.y.redMul(t.y),s=this.curve.d.redMul(a).redMul(o),u=i.redSub(s),c=i.redAdd(s),f=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(a).redISub(o),l=r.redMul(u).redMul(f);return this.curve.twisted?(e=r.redMul(c).redMul(o.redSub(this.curve._mulA(a))),n=u.redMul(c)):(e=r.redMul(c).redMul(o.redSub(a)),n=this.curve._mulC(u).redMul(c)),this.curve.point(l,e,n)},c.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},c.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},c.prototype.mulAdd=function(t,e,n){return this.curve._wnafMulAdd(1,[this,e],[t,n],2,!1)},c.prototype.jmulAdd=function(t,e,n){return this.curve._wnafMulAdd(1,[this,e],[t,n],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},c.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var n=t.clone(),r=this.curve.redN.redMul(this.z);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(r),0===this.x.cmp(e))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},function(t,e,n){"use strict";e.sha1=n(172),e.sha224=n(173),e.sha256=n(94),e.sha384=n(174),e.sha512=n(95)},function(t,e,n){"use strict";var r=n(14),i=n(29),a=n(93),o=r.rotl32,s=r.sum32,u=r.sum32_5,c=a.ft_1,f=i.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function h(){if(!(this instanceof h))return new h;f.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}r.inherits(h,f),t.exports=h,h.blockSize=512,h.outSize=160,h.hmacStrength=80,h.padLength=64,h.prototype._update=function(t,e){for(var n=this.W,r=0;r<16;r++)n[r]=t[e+r];for(;r<n.length;r++)n[r]=o(n[r-3]^n[r-8]^n[r-14]^n[r-16],1);var i=this.h[0],a=this.h[1],f=this.h[2],h=this.h[3],d=this.h[4];for(r=0;r<n.length;r++){var p=~~(r/20),g=u(o(i,5),c(p,a,f,h),d,n[r],l[p]);d=h,h=f,f=o(a,30),a=i,i=g}this.h[0]=s(this.h[0],i),this.h[1]=s(this.h[1],a),this.h[2]=s(this.h[2],f),this.h[3]=s(this.h[3],h),this.h[4]=s(this.h[4],d)},h.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(t,e,n){"use strict";var r=n(14),i=n(94);function a(){if(!(this instanceof a))return new a;i.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}r.inherits(a,i),t.exports=a,a.blockSize=512,a.outSize=224,a.hmacStrength=192,a.padLength=64,a.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h.slice(0,7),"big"):r.split32(this.h.slice(0,7),"big")}},function(t,e,n){"use strict";var r=n(14),i=n(95);function a(){if(!(this instanceof a))return new a;i.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}r.inherits(a,i),t.exports=a,a.blockSize=1024,a.outSize=384,a.hmacStrength=192,a.padLength=128,a.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h.slice(0,12),"big"):r.split32(this.h.slice(0,12),"big")}},function(t,e,n){"use strict";var r=n(14),i=n(29),a=r.rotl32,o=r.sum32,s=r.sum32_3,u=r.sum32_4,c=i.BlockHash;function f(){if(!(this instanceof f))return new f;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,n,r){return t<=15?e^n^r:t<=31?e&n|~e&r:t<=47?(e|~n)^r:t<=63?e&r|n&~r:e^(n|~r)}function h(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function d(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}r.inherits(f,c),e.ripemd160=f,f.blockSize=512,f.outSize=160,f.hmacStrength=192,f.padLength=64,f.prototype._update=function(t,e){for(var n=this.h[0],r=this.h[1],i=this.h[2],c=this.h[3],f=this.h[4],m=n,v=r,_=i,w=c,x=f,k=0;k<80;k++){var E=o(a(u(n,l(k,r,i,c),t[p[k]+e],h(k)),y[k]),f);n=f,f=c,c=a(i,10),i=r,r=E,E=o(a(u(m,l(79-k,v,_,w),t[g[k]+e],d(k)),b[k]),x),m=x,x=w,w=a(_,10),_=v,v=E}E=s(this.h[1],i,w),this.h[1]=s(this.h[2],c,x),this.h[2]=s(this.h[3],f,m),this.h[3]=s(this.h[4],n,v),this.h[4]=s(this.h[0],r,_),this.h[0]=E},f.prototype._digest=function(t){return"hex"===t?r.toHex32(this.h,"little"):r.split32(this.h,"little")};var p=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],g=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],y=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],b=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},function(t,e,n){"use strict";var r=n(14),i=n(9);function a(t,e,n){if(!(this instanceof a))return new a(t,e,n);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(r.toArray(e,n))}t.exports=a,a.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),i(t.length<=this.blockSize);for(var e=t.length;e<this.blockSize;e++)t.push(0);for(e=0;e<t.length;e++)t[e]^=54;for(this.inner=(new this.Hash).update(t),e=0;e<t.length;e++)t[e]^=106;this.outer=(new this.Hash).update(t)},a.prototype.update=function(t,e){return this.inner.update(t,e),this},a.prototype.digest=function(t){return this.outer.update(this.inner.digest()),this.outer.digest(t)}},function(t,e){t.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},function(t,e,n){"use strict";var r=n(4),i=n(179),a=n(10),o=n(61),s=n(58),u=a.assert,c=n(180),f=n(181);function l(t){if(!(this instanceof l))return new l(t);"string"==typeof t&&(u(o.hasOwnProperty(t),"Unknown curve "+t),t=o[t]),t instanceof o.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}t.exports=l,l.prototype.keyPair=function(t){return new c(this,t)},l.prototype.keyFromPrivate=function(t,e){return c.fromPrivate(this,t,e)},l.prototype.keyFromPublic=function(t,e){return c.fromPublic(this,t,e)},l.prototype.genKeyPair=function(t){t||(t={});for(var e=new i({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||s(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),a=this.n.sub(new r(2));;){var o=new r(e.generate(n));if(!(o.cmp(a)>0))return o.iaddn(1),this.keyFromPrivate(o)}},l.prototype._truncateToN=function(t,e){var n=8*t.byteLength()-this.n.bitLength();return n>0&&(t=t.ushrn(n)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},l.prototype.sign=function(t,e,n,a){"object"==typeof n&&(a=n,n=null),a||(a={}),e=this.keyFromPrivate(e,n),t=this._truncateToN(new r(t,16));for(var o=this.n.byteLength(),s=e.getPrivate().toArray("be",o),u=t.toArray("be",o),c=new i({hash:this.hash,entropy:s,nonce:u,pers:a.pers,persEnc:a.persEnc||"utf8"}),l=this.n.sub(new r(1)),h=0;;h++){var d=a.k?a.k(h):new r(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(l)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var g=p.getX(),y=g.umod(this.n);if(0!==y.cmpn(0)){var b=d.invm(this.n).mul(y.mul(e.getPrivate()).iadd(t));if(0!==(b=b.umod(this.n)).cmpn(0)){var m=(p.getY().isOdd()?1:0)|(0!==g.cmp(y)?2:0);return a.canonical&&b.cmp(this.nh)>0&&(b=this.n.sub(b),m^=1),new f({r:y,s:b,recoveryParam:m})}}}}}},l.prototype.verify=function(t,e,n,i){t=this._truncateToN(new r(t,16)),n=this.keyFromPublic(n,i);var a=(e=new f(e,"hex")).r,o=e.s;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;var s,u=o.invm(this.n),c=u.mul(t).umod(this.n),l=u.mul(a).umod(this.n);return this.curve._maxwellTrick?!(s=this.g.jmulAdd(c,n.getPublic(),l)).isInfinity()&&s.eqXToP(a):!(s=this.g.mulAdd(c,n.getPublic(),l)).isInfinity()&&0===s.getX().umod(this.n).cmp(a)},l.prototype.recoverPubKey=function(t,e,n,i){u((3&n)===n,"The recovery param is more than two bits"),e=new f(e,i);var a=this.n,o=new r(t),s=e.r,c=e.s,l=1&n,h=n>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error("Unable to find sencond key candinate");s=h?this.curve.pointFromX(s.add(this.curve.n),l):this.curve.pointFromX(s,l);var d=e.r.invm(a),p=a.sub(o).mul(d).umod(a),g=c.mul(d).umod(a);return this.g.mulAdd(p,s,g)},l.prototype.getKeyRecoveryParam=function(t,e,n,r){if(null!==(e=new f(e,r)).recoveryParam)return e.recoveryParam;for(var i=0;i<4;i++){var a;try{a=this.recoverPubKey(t,e,i)}catch(t){continue}if(a.eq(n))return i}throw new Error("Unable to find valid recovery factor")}},function(t,e,n){"use strict";var r=n(62),i=n(91),a=n(9);function o(t){if(!(this instanceof o))return new o(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=i.toArray(t.entropy,t.entropyEnc||"hex"),n=i.toArray(t.nonce,t.nonceEnc||"hex"),r=i.toArray(t.pers,t.persEnc||"hex");a(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,n,r)}t.exports=o,o.prototype._init=function(t,e,n){var r=t.concat(e).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(r),this._reseed=1,this.reseedInterval=281474976710656},o.prototype._hmac=function(){return new r.hmac(this.hash,this.K)},o.prototype._update=function(t){var e=this._hmac().update(this.V).update([0]);t&&(e=e.update(t)),this.K=e.digest(),this.V=this._hmac().update(this.V).digest(),t&&(this.K=this._hmac().update(this.V).update([1]).update(t).digest(),this.V=this._hmac().update(this.V).digest())},o.prototype.reseed=function(t,e,n,r){"string"!=typeof e&&(r=n,n=e,e=null),t=i.toArray(t,e),n=i.toArray(n,r),a(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(n||[])),this._reseed=1},o.prototype.generate=function(t,e,n,r){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(r=n,n=e,e=null),n&&(n=i.toArray(n,r||"hex"),this._update(n));for(var a=[];a.length<t;)this.V=this._hmac().update(this.V).digest(),a=a.concat(this.V);var o=a.slice(0,t);return this._update(n),this._reseed++,i.encode(o,e)}},function(t,e,n){"use strict";var r=n(4),i=n(10).assert;function a(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}t.exports=a,a.fromPublic=function(t,e,n){return e instanceof a?e:new a(t,{pub:e,pubEnc:n})},a.fromPrivate=function(t,e,n){return e instanceof a?e:new a(t,{priv:e,privEnc:n})},a.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},a.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},a.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},a.prototype._importPrivate=function(t,e){this.priv=new r(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},a.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?i(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||i(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},a.prototype.derive=function(t){return t.mul(this.priv).getX()},a.prototype.sign=function(t,e,n){return this.ec.sign(t,this,e,n)},a.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},a.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"}},function(t,e,n){"use strict";var r=n(4),i=n(10),a=i.assert;function o(t,e){if(t instanceof o)return t;this._importDER(t,e)||(a(t.r&&t.s,"Signature without r or s"),this.r=new r(t.r,16),this.s=new r(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function s(){this.place=0}function u(t,e){var n=t[e.place++];if(!(128&n))return n;for(var r=15&n,i=0,a=0,o=e.place;a<r;a++,o++)i<<=8,i|=t[o];return e.place=o,i}function c(t){for(var e=0,n=t.length-1;!t[e]&&!(128&t[e+1])&&e<n;)e++;return 0===e?t:t.slice(e)}function f(t,e){if(e<128)t.push(e);else{var n=1+(Math.log(e)/Math.LN2>>>3);for(t.push(128|n);--n;)t.push(e>>>(n<<3)&255);t.push(e)}}t.exports=o,o.prototype._importDER=function(t,e){t=i.toArray(t,e);var n=new s;if(48!==t[n.place++])return!1;if(u(t,n)+n.place!==t.length)return!1;if(2!==t[n.place++])return!1;var a=u(t,n),o=t.slice(n.place,a+n.place);if(n.place+=a,2!==t[n.place++])return!1;var c=u(t,n);if(t.length!==c+n.place)return!1;var f=t.slice(n.place,c+n.place);return 0===o[0]&&128&o[1]&&(o=o.slice(1)),0===f[0]&&128&f[1]&&(f=f.slice(1)),this.r=new r(o),this.s=new r(f),this.recoveryParam=null,!0},o.prototype.toDER=function(t){var e=this.r.toArray(),n=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&n[0]&&(n=[0].concat(n)),e=c(e),n=c(n);!(n[0]||128&n[1]);)n=n.slice(1);var r=[2];f(r,e.length),(r=r.concat(e)).push(2),f(r,n.length);var a=r.concat(n),o=[48];return f(o,a.length),o=o.concat(a),i.encode(o,t)}},function(t,e,n){"use strict";var r=n(62),i=n(61),a=n(10),o=a.assert,s=a.parseBytes,u=n(183),c=n(184);function f(t){if(o("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof f))return new f(t);t=i[t].curve;this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=r.sha512}t.exports=f,f.prototype.sign=function(t,e){t=s(t);var n=this.keyFromSecret(e),r=this.hashInt(n.messagePrefix(),t),i=this.g.mul(r),a=this.encodePoint(i),o=this.hashInt(a,n.pubBytes(),t).mul(n.priv()),u=r.add(o).umod(this.curve.n);return this.makeSignature({R:i,S:u,Rencoded:a})},f.prototype.verify=function(t,e,n){t=s(t),e=this.makeSignature(e);var r=this.keyFromPublic(n),i=this.hashInt(e.Rencoded(),r.pubBytes(),t),a=this.g.mul(e.S());return e.R().add(r.pub().mul(i)).eq(a)},f.prototype.hashInt=function(){for(var t=this.hash(),e=0;e<arguments.length;e++)t.update(arguments[e]);return a.intFromLE(t.digest()).umod(this.curve.n)},f.prototype.keyFromPublic=function(t){return u.fromPublic(this,t)},f.prototype.keyFromSecret=function(t){return u.fromSecret(this,t)},f.prototype.makeSignature=function(t){return t instanceof c?t:new c(this,t)},f.prototype.encodePoint=function(t){var e=t.getY().toArray("le",this.encodingLength);return e[this.encodingLength-1]|=t.getX().isOdd()?128:0,e},f.prototype.decodePoint=function(t){var e=(t=a.parseBytes(t)).length-1,n=t.slice(0,e).concat(-129&t[e]),r=0!=(128&t[e]),i=a.intFromLE(n);return this.curve.pointFromY(i,r)},f.prototype.encodeInt=function(t){return t.toArray("le",this.encodingLength)},f.prototype.decodeInt=function(t){return a.intFromLE(t)},f.prototype.isPoint=function(t){return t instanceof this.pointClass}},function(t,e,n){"use strict";var r=n(10),i=r.assert,a=r.parseBytes,o=r.cachedProperty;function s(t,e){this.eddsa=t,this._secret=a(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=a(e.pub)}s.fromPublic=function(t,e){return e instanceof s?e:new s(t,{pub:e})},s.fromSecret=function(t,e){return e instanceof s?e:new s(t,{secret:e})},s.prototype.secret=function(){return this._secret},o(s,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),o(s,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),o(s,"privBytes",(function(){var t=this.eddsa,e=this.hash(),n=t.encodingLength-1,r=e.slice(0,t.encodingLength);return r[0]&=248,r[n]&=127,r[n]|=64,r})),o(s,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),o(s,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),o(s,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),s.prototype.sign=function(t){return i(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},s.prototype.verify=function(t,e){return this.eddsa.verify(t,e,this)},s.prototype.getSecret=function(t){return i(this._secret,"KeyPair is public only"),r.encode(this.secret(),t)},s.prototype.getPublic=function(t){return r.encode(this.pubBytes(),t)},t.exports=s},function(t,e,n){"use strict";var r=n(4),i=n(10),a=i.assert,o=i.cachedProperty,s=i.parseBytes;function u(t,e){this.eddsa=t,"object"!=typeof e&&(e=s(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),a(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof r&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}o(u,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),o(u,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),o(u,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),o(u,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),u.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},u.prototype.toHex=function(){return i.encode(this.toBytes(),"hex").toUpperCase()},t.exports=u},function(t,e,n){"use strict";var r=n(30);e.certificate=n(195);var i=r.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));e.RSAPrivateKey=i;var a=r.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));e.RSAPublicKey=a;var o=r.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())}));e.PublicKey=o;var s=r.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),u=r.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(s),this.key("subjectPrivateKey").octstr())}));e.PrivateKey=u;var c=r.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));e.EncryptedPrivateKey=c;var f=r.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));e.DSAPrivateKey=f,e.DSAparam=r.define("DSAparam",(function(){this.int()}));var l=r.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(h),this.key("publicKey").optional().explicit(1).bitstr())}));e.ECPrivateKey=l;var h=r.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));e.signature=r.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},function(t,e,n){var r=n(30),i=n(2);function a(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}e.define=function(t,e){return new a(t,e)},a.prototype._createNamed=function(t){var e;try{e=n(187).runInThisContext("(function "+this.name+"(entity) {\n  this._initNamed(entity);\n})")}catch(t){e=function(t){this._initNamed(t)}}return i(e,t),e.prototype._initNamed=function(e){t.call(this,e)},new e(this)},a.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(r.decoders[t])),this.decoders[t]},a.prototype.decode=function(t,e,n){return this._getDecoder(e).decode(t,n)},a.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(r.encoders[t])),this.encoders[t]},a.prototype.encode=function(t,e,n){return this._getEncoder(e).encode(t,n)}},function(module,exports){var indexOf=function(t,e){if(t.indexOf)return t.indexOf(e);for(var n=0;n<t.length;n++)if(t[n]===e)return n;return-1},Object_keys=function(t){if(Object.keys)return Object.keys(t);var e=[];for(var n in t)e.push(n);return e},forEach=function(t,e){if(t.forEach)return t.forEach(e);for(var n=0;n<t.length;n++)e(t[n],n,t)},defineProp=function(){try{return Object.defineProperty({},"_",{}),function(t,e,n){Object.defineProperty(t,e,{writable:!0,enumerable:!1,configurable:!0,value:n})}}catch(t){return function(t,e,n){t[e]=n}}}(),globals=["Array","Boolean","Date","Error","EvalError","Function","Infinity","JSON","Math","NaN","Number","Object","RangeError","ReferenceError","RegExp","String","SyntaxError","TypeError","URIError","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","eval","isFinite","isNaN","parseFloat","parseInt","undefined","unescape"];function Context(){}Context.prototype={};var Script=exports.Script=function(t){if(!(this instanceof Script))return new Script(t);this.code=t};Script.prototype.runInContext=function(t){if(!(t instanceof Context))throw new TypeError("needs a 'context' argument.");var e=document.createElement("iframe");e.style||(e.style={}),e.style.display="none",document.body.appendChild(e);var n=e.contentWindow,r=n.eval,i=n.execScript;!r&&i&&(i.call(n,"null"),r=n.eval),forEach(Object_keys(t),(function(e){n[e]=t[e]})),forEach(globals,(function(e){t[e]&&(n[e]=t[e])}));var a=Object_keys(n),o=r.call(n,this.code);return forEach(Object_keys(n),(function(e){(e in t||-1===indexOf(a,e))&&(t[e]=n[e])})),forEach(globals,(function(e){e in t||defineProp(t,e,n[e])})),document.body.removeChild(e),o},Script.prototype.runInThisContext=function(){return eval(this.code)},Script.prototype.runInNewContext=function(t){var e=Script.createContext(t),n=this.runInContext(e);return t&&forEach(Object_keys(e),(function(n){t[n]=e[n]})),n},forEach(Object_keys(Script.prototype),(function(t){exports[t]=Script[t]=function(e){var n=Script(e);return n[t].apply(n,[].slice.call(arguments,1))}})),exports.isContext=function(t){return t instanceof Context},exports.createScript=function(t){return exports.Script(t)},exports.createContext=Script.createContext=function(t){var e=new Context;return"object"==typeof t&&forEach(Object_keys(t),(function(n){e[n]=t[n]})),e}},function(t,e,n){var r=n(2);function i(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function a(t,e){this.path=t,this.rethrow(e)}e.Reporter=i,i.prototype.isError=function(t){return t instanceof a},i.prototype.save=function(){var t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},i.prototype.restore=function(t){var e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},i.prototype.enterKey=function(t){return this._reporterState.path.push(t)},i.prototype.exitKey=function(t){var e=this._reporterState;e.path=e.path.slice(0,t-1)},i.prototype.leaveKey=function(t,e,n){var r=this._reporterState;this.exitKey(t),null!==r.obj&&(r.obj[e]=n)},i.prototype.path=function(){return this._reporterState.path.join("/")},i.prototype.enterObject=function(){var t=this._reporterState,e=t.obj;return t.obj={},e},i.prototype.leaveObject=function(t){var e=this._reporterState,n=e.obj;return e.obj=t,n},i.prototype.error=function(t){var e,n=this._reporterState,r=t instanceof a;if(e=r?t:new a(n.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!n.options.partial)throw e;return r||n.errors.push(e),e},i.prototype.wrapResult=function(t){var e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},r(a,Error),a.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,a),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},function(t,e,n){var r=n(31).Reporter,i=n(31).EncoderBuffer,a=n(31).DecoderBuffer,o=n(9),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],u=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s);function c(t,e){var n={};this._baseState=n,n.enc=t,n.parent=e||null,n.children=null,n.tag=null,n.args=null,n.reverseArgs=null,n.choice=null,n.optional=!1,n.any=!1,n.obj=!1,n.use=null,n.useDecoder=null,n.key=null,n.default=null,n.explicit=null,n.implicit=null,n.contains=null,n.parent||(n.children=[],this._wrap())}t.exports=c;var f=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];c.prototype.clone=function(){var t=this._baseState,e={};f.forEach((function(n){e[n]=t[n]}));var n=new this.constructor(e.parent);return n._baseState=e,n},c.prototype._wrap=function(){var t=this._baseState;u.forEach((function(e){this[e]=function(){var n=new this.constructor(this);return t.children.push(n),n[e].apply(n,arguments)}}),this)},c.prototype._init=function(t){var e=this._baseState;o(null===e.parent),t.call(this),e.children=e.children.filter((function(t){return t._baseState.parent===this}),this),o.equal(e.children.length,1,"Root node can have only one child")},c.prototype._useArgs=function(t){var e=this._baseState,n=t.filter((function(t){return t instanceof this.constructor}),this);t=t.filter((function(t){return!(t instanceof this.constructor)}),this),0!==n.length&&(o(null===e.children),e.children=n,n.forEach((function(t){t._baseState.parent=this}),this)),0!==t.length&&(o(null===e.args),e.args=t,e.reverseArgs=t.map((function(t){if("object"!=typeof t||t.constructor!==Object)return t;var e={};return Object.keys(t).forEach((function(n){n==(0|n)&&(n|=0);var r=t[n];e[r]=n})),e})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(t){c.prototype[t]=function(){var e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}})),s.forEach((function(t){c.prototype[t]=function(){var e=this._baseState,n=Array.prototype.slice.call(arguments);return o(null===e.tag),e.tag=t,this._useArgs(n),this}})),c.prototype.use=function(t){o(t);var e=this._baseState;return o(null===e.use),e.use=t,this},c.prototype.optional=function(){return this._baseState.optional=!0,this},c.prototype.def=function(t){var e=this._baseState;return o(null===e.default),e.default=t,e.optional=!0,this},c.prototype.explicit=function(t){var e=this._baseState;return o(null===e.explicit&&null===e.implicit),e.explicit=t,this},c.prototype.implicit=function(t){var e=this._baseState;return o(null===e.explicit&&null===e.implicit),e.implicit=t,this},c.prototype.obj=function(){var t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},c.prototype.key=function(t){var e=this._baseState;return o(null===e.key),e.key=t,this},c.prototype.any=function(){return this._baseState.any=!0,this},c.prototype.choice=function(t){var e=this._baseState;return o(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map((function(e){return t[e]}))),this},c.prototype.contains=function(t){var e=this._baseState;return o(null===e.use),e.contains=t,this},c.prototype._decode=function(t,e){var n=this._baseState;if(null===n.parent)return t.wrapResult(n.children[0]._decode(t,e));var r,i=n.default,o=!0,s=null;if(null!==n.key&&(s=t.enterKey(n.key)),n.optional){var u=null;if(null!==n.explicit?u=n.explicit:null!==n.implicit?u=n.implicit:null!==n.tag&&(u=n.tag),null!==u||n.any){if(o=this._peekTag(t,u,n.any),t.isError(o))return o}else{var c=t.save();try{null===n.choice?this._decodeGeneric(n.tag,t,e):this._decodeChoice(t,e),o=!0}catch(t){o=!1}t.restore(c)}}if(n.obj&&o&&(r=t.enterObject()),o){if(null!==n.explicit){var f=this._decodeTag(t,n.explicit);if(t.isError(f))return f;t=f}var l=t.offset;if(null===n.use&&null===n.choice){if(n.any)c=t.save();var h=this._decodeTag(t,null!==n.implicit?n.implicit:n.tag,n.any);if(t.isError(h))return h;n.any?i=t.raw(c):t=h}if(e&&e.track&&null!==n.tag&&e.track(t.path(),l,t.length,"tagged"),e&&e.track&&null!==n.tag&&e.track(t.path(),t.offset,t.length,"content"),i=n.any?i:null===n.choice?this._decodeGeneric(n.tag,t,e):this._decodeChoice(t,e),t.isError(i))return i;if(n.any||null!==n.choice||null===n.children||n.children.forEach((function(n){n._decode(t,e)})),n.contains&&("octstr"===n.tag||"bitstr"===n.tag)){var d=new a(i);i=this._getUse(n.contains,t._reporterState.obj)._decode(d,e)}}return n.obj&&o&&(i=t.leaveObject(r)),null===n.key||null===i&&!0!==o?null!==s&&t.exitKey(s):t.leaveKey(s,n.key,i),i},c.prototype._decodeGeneric=function(t,e,n){var r=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,r.args[0],n):/str$/.test(t)?this._decodeStr(e,t,n):"objid"===t&&r.args?this._decodeObjid(e,r.args[0],r.args[1],n):"objid"===t?this._decodeObjid(e,null,null,n):"gentime"===t||"utctime"===t?this._decodeTime(e,t,n):"null_"===t?this._decodeNull(e,n):"bool"===t?this._decodeBool(e,n):"objDesc"===t?this._decodeStr(e,t,n):"int"===t||"enum"===t?this._decodeInt(e,r.args&&r.args[0],n):null!==r.use?this._getUse(r.use,e._reporterState.obj)._decode(e,n):e.error("unknown tag: "+t)},c.prototype._getUse=function(t,e){var n=this._baseState;return n.useDecoder=this._use(t,e),o(null===n.useDecoder._baseState.parent),n.useDecoder=n.useDecoder._baseState.children[0],n.implicit!==n.useDecoder._baseState.implicit&&(n.useDecoder=n.useDecoder.clone(),n.useDecoder._baseState.implicit=n.implicit),n.useDecoder},c.prototype._decodeChoice=function(t,e){var n=this._baseState,r=null,i=!1;return Object.keys(n.choice).some((function(a){var o=t.save(),s=n.choice[a];try{var u=s._decode(t,e);if(t.isError(u))return!1;r={type:a,value:u},i=!0}catch(e){return t.restore(o),!1}return!0}),this),i?r:t.error("Choice not matched")},c.prototype._createEncoderBuffer=function(t){return new i(t,this.reporter)},c.prototype._encode=function(t,e,n){var r=this._baseState;if(null===r.default||r.default!==t){var i=this._encodeValue(t,e,n);if(void 0!==i&&!this._skipDefault(i,e,n))return i}},c.prototype._encodeValue=function(t,e,n){var i=this._baseState;if(null===i.parent)return i.children[0]._encode(t,e||new r);var a=null;if(this.reporter=e,i.optional&&void 0===t){if(null===i.default)return;t=i.default}var o=null,s=!1;if(i.any)a=this._createEncoderBuffer(t);else if(i.choice)a=this._encodeChoice(t,e);else if(i.contains)o=this._getUse(i.contains,n)._encode(t,e),s=!0;else if(i.children)o=i.children.map((function(n){if("null_"===n._baseState.tag)return n._encode(null,e,t);if(null===n._baseState.key)return e.error("Child should have a key");var r=e.enterKey(n._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");var i=n._encode(t[n._baseState.key],e,t);return e.leaveKey(r),i}),this).filter((function(t){return t})),o=this._createEncoderBuffer(o);else if("seqof"===i.tag||"setof"===i.tag){if(!i.args||1!==i.args.length)return e.error("Too many args for : "+i.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");var u=this.clone();u._baseState.implicit=null,o=this._createEncoderBuffer(t.map((function(n){var r=this._baseState;return this._getUse(r.args[0],t)._encode(n,e)}),u))}else null!==i.use?a=this._getUse(i.use,n)._encode(t,e):(o=this._encodePrimitive(i.tag,t),s=!0);if(!i.any&&null===i.choice){var c=null!==i.implicit?i.implicit:i.tag,f=null===i.implicit?"universal":"context";null===c?null===i.use&&e.error("Tag could be omitted only for .use()"):null===i.use&&(a=this._encodeComposite(c,s,f,o))}return null!==i.explicit&&(a=this._encodeComposite(i.explicit,!1,"context",a)),a},c.prototype._encodeChoice=function(t,e){var n=this._baseState,r=n.choice[t.type];return r||o(!1,t.type+" not found in "+JSON.stringify(Object.keys(n.choice))),r._encode(t.value,e)},c.prototype._encodePrimitive=function(t,e){var n=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&n.args)return this._encodeObjid(e,n.reverseArgs[0],n.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,n.args&&n.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);if("objDesc"===t)return this._encodeStr(e,t);throw new Error("Unsupported tag: "+t)},c.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},c.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(t)}},function(t,e,n){var r=n(97);e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=r._reverse(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=r._reverse(e.tag)},function(t,e,n){var r=e;r.der=n(98),r.pem=n(192)},function(t,e,n){var r=n(2),i=n(6).Buffer,a=n(98);function o(t){a.call(this,t),this.enc="pem"}r(o,a),t.exports=o,o.prototype.decode=function(t,e){for(var n=t.toString().split(/[\r\n]+/g),r=e.label.toUpperCase(),o=/^-----(BEGIN|END) ([^-]+)-----$/,s=-1,u=-1,c=0;c<n.length;c++){var f=n[c].match(o);if(null!==f&&f[2]===r){if(-1!==s){if("END"!==f[1])break;u=c;break}if("BEGIN"!==f[1])break;s=c}}if(-1===s||-1===u)throw new Error("PEM section not found for: "+r);var l=n.slice(s+1,u).join("");l.replace(/[^a-z0-9\+\/=]+/gi,"");var h=new i(l,"base64");return a.prototype.decode.call(this,h,e)}},function(t,e,n){var r=e;r.der=n(99),r.pem=n(194)},function(t,e,n){var r=n(2),i=n(99);function a(t){i.call(this,t),this.enc="pem"}r(a,i),t.exports=a,a.prototype.encode=function(t,e){for(var n=i.prototype.encode.call(this,t).toString("base64"),r=["-----BEGIN "+e.label+"-----"],a=0;a<n.length;a+=64)r.push(n.slice(a,a+64));return r.push("-----END "+e.label+"-----"),r.join("\n")}},function(t,e,n){"use strict";var r=n(30),i=r.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),a=r.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),o=r.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),s=r.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(o),this.key("subjectPublicKey").bitstr())})),u=r.define("RelativeDistinguishedName",(function(){this.setof(a)})),c=r.define("RDNSequence",(function(){this.seqof(u)})),f=r.define("Name",(function(){this.choice({rdnSequence:this.use(c)})})),l=r.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(i),this.key("notAfter").use(i))})),h=r.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),d=r.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(o),this.key("issuer").use(f),this.key("validity").use(l),this.key("subject").use(f),this.key("subjectPublicKeyInfo").use(s),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(h).optional())})),p=r.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(d),this.key("signatureAlgorithm").use(o),this.key("signatureValue").bitstr())}));t.exports=p},function(t){t.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},function(t,e,n){var r=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r\+\/\=]+)[\n\r]+/m,i=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,a=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r\+\/\=]+)-----END \1-----$/m,o=n(37),s=n(56),u=n(3).Buffer;t.exports=function(t,e){var n,c=t.toString(),f=c.match(r);if(f){var l="aes"+f[1],h=u.from(f[2],"hex"),d=u.from(f[3].replace(/[\r\n]/g,""),"base64"),p=o(e,h.slice(0,8),parseInt(f[1],10)).key,g=[],y=s.createDecipheriv(l,p,h);g.push(y.update(d)),g.push(y.final()),n=u.concat(g)}else{var b=c.match(a);n=new u(b[2].replace(/[\r\n]/g,""),"base64")}return{tag:c.match(i)[1],data:n}}},function(t,e,n){(function(e){var r=n(4),i=n(60).ec,a=n(39),o=n(100);function s(t,e){if(t.cmpn(0)<=0)throw new Error("invalid sig");if(t.cmp(e)>=e)throw new Error("invalid sig")}t.exports=function(t,n,u,c,f){var l=a(u);if("ec"===l.type){if("ecdsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");return function(t,e,n){var r=o[n.data.algorithm.curve.join(".")];if(!r)throw new Error("unknown curve "+n.data.algorithm.curve.join("."));var a=new i(r),s=n.data.subjectPrivateKey.data;return a.verify(e,t,s)}(t,n,l)}if("dsa"===l.type){if("dsa"!==c)throw new Error("wrong public key type");return function(t,e,n){var i=n.data.p,o=n.data.q,u=n.data.g,c=n.data.pub_key,f=a.signature.decode(t,"der"),l=f.s,h=f.r;s(l,o),s(h,o);var d=r.mont(i),p=l.invm(o);return 0===u.toRed(d).redPow(new r(e).mul(p).mod(o)).fromRed().mul(c.toRed(d).redPow(h.mul(p).mod(o)).fromRed()).mod(i).mod(o).cmp(h)}(t,n,l)}if("rsa"!==c&&"ecdsa/rsa"!==c)throw new Error("wrong public key type");n=e.concat([f,n]);for(var h=l.modulus.byteLength(),d=[1],p=0;n.length+d.length+2<h;)d.push(255),p++;d.push(0);for(var g=-1;++g<n.length;)d.push(n[g]);d=new e(d);var y=r.mont(l.modulus);t=(t=new r(t).toRed(y)).redPow(new r(l.publicExponent)),t=new e(t.fromRed().toArray());var b=p<8?1:0;for(h=Math.min(t.length,d.length),t.length!==d.length&&(b=1),g=-1;++g<h;)b|=t[g]^d[g];return 0===b}}).call(this,n(6).Buffer)},function(t,e,n){(function(e){var r=n(60),i=n(4);t.exports=function(t){return new o(t)};var a={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function o(t){this.curveType=a[t],this.curveType||(this.curveType={name:t}),this.curve=new r.ec(this.curveType.name),this.keys=void 0}function s(t,n,r){Array.isArray(t)||(t=t.toArray());var i=new e(t);if(r&&i.length<r){var a=new e(r-i.length);a.fill(0),i=e.concat([a,i])}return n?i.toString(n):i}a.p224=a.secp224r1,a.p256=a.secp256r1=a.prime256v1,a.p192=a.secp192r1=a.prime192v1,a.p384=a.secp384r1,a.p521=a.secp521r1,o.prototype.generateKeys=function(t,e){return this.keys=this.curve.genKeyPair(),this.getPublicKey(t,e)},o.prototype.computeSecret=function(t,n,r){return n=n||"utf8",e.isBuffer(t)||(t=new e(t,n)),s(this.curve.keyFromPublic(t).getPublic().mul(this.keys.getPrivate()).getX(),r,this.curveType.byteLength)},o.prototype.getPublicKey=function(t,e){var n=this.keys.getPublic("compressed"===e,!0);return"hybrid"===e&&(n[n.length-1]%2?n[0]=7:n[0]=6),s(n,t)},o.prototype.getPrivateKey=function(t){return s(this.keys.getPrivate(),t)},o.prototype.setPublicKey=function(t,n){return n=n||"utf8",e.isBuffer(t)||(t=new e(t,n)),this.keys._importPublic(t),this},o.prototype.setPrivateKey=function(t,n){n=n||"utf8",e.isBuffer(t)||(t=new e(t,n));var r=new i(t);return r=r.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(r),this}}).call(this,n(6).Buffer)},function(t,e,n){e.publicEncrypt=n(201),e.privateDecrypt=n(202),e.privateEncrypt=function(t,n){return e.publicEncrypt(t,n,!0)},e.publicDecrypt=function(t,n){return e.privateDecrypt(t,n,!0)}},function(t,e,n){var r=n(39),i=n(22),a=n(26),o=n(101),s=n(102),u=n(4),c=n(103),f=n(59),l=n(3).Buffer;t.exports=function(t,e,n){var h;h=t.padding?t.padding:n?1:4;var d,p=r(t);if(4===h)d=function(t,e){var n=t.modulus.byteLength(),r=e.length,c=a("sha1").update(l.alloc(0)).digest(),f=c.length,h=2*f;if(r>n-h-2)throw new Error("message too long");var d=l.alloc(n-r-h-2),p=n-f-1,g=i(f),y=s(l.concat([c,d,l.alloc(1,1),e],p),o(g,p)),b=s(g,o(y,f));return new u(l.concat([l.alloc(1),b,y],n))}(p,e);else if(1===h)d=function(t,e,n){var r,a=e.length,o=t.modulus.byteLength();if(a>o-11)throw new Error("message too long");r=n?l.alloc(o-a-3,255):function(t){var e,n=l.allocUnsafe(t),r=0,a=i(2*t),o=0;for(;r<t;)o===a.length&&(a=i(2*t),o=0),(e=a[o++])&&(n[r++]=e);return n}(o-a-3);return new u(l.concat([l.from([0,n?1:2]),r,l.alloc(1),e],o))}(p,e,n);else{if(3!==h)throw new Error("unknown padding");if((d=new u(e)).cmp(p.modulus)>=0)throw new Error("data too long for modulus")}return n?f(d,p):c(d,p)}},function(t,e,n){var r=n(39),i=n(101),a=n(102),o=n(4),s=n(59),u=n(26),c=n(103),f=n(3).Buffer;t.exports=function(t,e,n){var l;l=t.padding?t.padding:n?1:4;var h,d=r(t),p=d.modulus.byteLength();if(e.length>p||new o(e).cmp(d.modulus)>=0)throw new Error("decryption error");h=n?c(new o(e),d):s(e,d);var g=f.alloc(p-h.length);if(h=f.concat([g,h],p),4===l)return function(t,e){var n=t.modulus.byteLength(),r=u("sha1").update(f.alloc(0)).digest(),o=r.length;if(0!==e[0])throw new Error("decryption error");var s=e.slice(1,o+1),c=e.slice(o+1),l=a(s,i(c,o)),h=a(c,i(l,n-o-1));if(function(t,e){t=f.from(t),e=f.from(e);var n=0,r=t.length;t.length!==e.length&&(n++,r=Math.min(t.length,e.length));var i=-1;for(;++i<r;)n+=t[i]^e[i];return n}(r,h.slice(0,o)))throw new Error("decryption error");var d=o;for(;0===h[d];)d++;if(1!==h[d++])throw new Error("decryption error");return h.slice(d)}(d,h);if(1===l)return function(t,e,n){var r=e.slice(0,2),i=2,a=0;for(;0!==e[i++];)if(i>=e.length){a++;break}var o=e.slice(2,i-1);("0002"!==r.toString("hex")&&!n||"0001"!==r.toString("hex")&&n)&&a++;o.length<8&&a++;if(a)throw new Error("decryption error");return e.slice(i)}(0,h,n);if(3===l)return h;throw new Error("unknown padding")}},function(t,e,n){"use strict";(function(t,r){function i(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var a=n(3),o=n(22),s=a.Buffer,u=a.kMaxLength,c=t.crypto||t.msCrypto,f=Math.pow(2,32)-1;function l(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>f||t<0)throw new TypeError("offset must be a uint32");if(t>u||t>e)throw new RangeError("offset out of range")}function h(t,e,n){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>f||t<0)throw new TypeError("size must be a uint32");if(t+e>n||t>u)throw new RangeError("buffer too small")}function d(t,e,n,i){if(r.browser){var a=t.buffer,s=new Uint8Array(a,e,n);return c.getRandomValues(s),i?void r.nextTick((function(){i(null,t)})):t}if(!i)return o(n).copy(t,e),t;o(n,(function(n,r){if(n)return i(n);r.copy(t,e),i(null,t)}))}c&&c.getRandomValues||!r.browser?(e.randomFill=function(e,n,r,i){if(!(s.isBuffer(e)||e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof n)i=n,n=0,r=e.length;else if("function"==typeof r)i=r,r=e.length-n;else if("function"!=typeof i)throw new TypeError('"cb" argument must be a function');return l(n,e.length),h(r,n,e.length),d(e,n,r,i)},e.randomFillSync=function(e,n,r){void 0===n&&(n=0);if(!(s.isBuffer(e)||e instanceof t.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');l(n,e.length),void 0===r&&(r=e.length-n);return h(r,n,e.length),d(e,n,r)}):(e.randomFill=i,e.randomFillSync=i)}).call(this,n(13),n(5))},function(t,e,n){var r={"./dark/index.scss":205,"./default/index.scss":207,"./forest/index.scss":209,"./neutral/index.scss":211};function i(t){var e=a(t);return n(e)}function a(t){if(!n.o(r,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return r[t]}i.keys=function(){return Object.keys(r)},i.resolve=a,t.exports=i,i.id=204},function(t,e,n){var r=n(206);t.exports="string"==typeof r?r:r.toString()},function(t,e,n){(t.exports=n(40)(!1)).push([t.i,".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon{fill:#BDD5EA;stroke:purple;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#d3d3d3}.edgePath .path{stroke:#d3d3d3;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.cluster rect{fill:#6D6D65;stroke:rgba(255,255,255,0.25);stroke-width:1px}.cluster text{fill:#F9FFFE}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#6D6D65;border:1px solid rgba(255,255,255,0.25);border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#81B1DB;fill:#BDD5EA}text.actor{fill:#000;stroke:none}.actor-line{stroke:#d3d3d3}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#d3d3d3}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#d3d3d3}#arrowhead{fill:#d3d3d3}.sequenceNumber{fill:#fff}#sequencenumber{fill:#d3d3d3}#crosshead path{fill:#d3d3d3 !important;stroke:#d3d3d3 !important}.messageText{fill:#d3d3d3;stroke:none}.labelBox{stroke:#81B1DB;fill:#BDD5EA}.labelText{fill:#323D47;stroke:none}.loopText{fill:#d3d3d3;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#81B1DB}.note{stroke:rgba(255,255,255,0.25);fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:rgba(255,255,255,0.3)}.section2{fill:#EAE8B9}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#F9FFFE}.sectionTitle1{fill:#F9FFFE}.sectionTitle2{fill:#F9FFFE}.sectionTitle3{fill:#F9FFFE}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.3;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:#DB5757;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#323D47;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#323D47;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#323D47}.task0,.task1,.task2,.task3{fill:#BDD5EA;stroke:rgba(255,255,255,0.5)}.taskTextOutside0,.taskTextOutside2{fill:#d3d3d3}.taskTextOutside1,.taskTextOutside3{fill:#d3d3d3}.active0,.active1,.active2,.active3{fill:#81B1DB;stroke:rgba(255,255,255,0.5)}.activeText0,.activeText1,.activeText2,.activeText3{fill:#323D47 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#323D47 !important}.crit0,.crit1,.crit2,.crit3{stroke:#E83737;fill:#E83737;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#E83737;fill:#81B1DB;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#E83737;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#323D47 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#323D47 !important}.titleText{text-anchor:middle;font-size:18px;fill:#323D47;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:purple;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.classGroup rect{fill:#BDD5EA;stroke:purple}g.classGroup line{stroke:purple;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#BDD5EA;opacity:0.5}.classLabel .label{fill:purple;font-size:10px}.relation{stroke:purple;stroke-width:1;fill:none}#compositionStart{fill:purple;stroke:purple;stroke-width:1}#compositionEnd{fill:purple;stroke:purple;stroke-width:1}#aggregationStart{fill:#BDD5EA;stroke:purple;stroke-width:1}#aggregationEnd{fill:#BDD5EA;stroke:purple;stroke-width:1}#dependencyStart{fill:purple;stroke:purple;stroke-width:1}#dependencyEnd{fill:purple;stroke:purple;stroke-width:1}#extensionStart{fill:purple;stroke:purple;stroke-width:1}#extensionEnd{fill:purple;stroke:purple;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#323D47;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:purple;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:purple;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#BDD5EA;stroke:purple}g.stateGroup line{stroke:purple;stroke-width:1}.transition{stroke:purple;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.state-note{stroke:rgba(255,255,255,0.25);fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#BDD5EA;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n",""])},function(t,e,n){var r=n(208);t.exports="string"==typeof r?r:r.toString()},function(t,e,n){(t.exports=n(40)(!1)).push([t.i,".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon{fill:#ECECFF;stroke:#9370db;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#333}.edgePath .path{stroke:#333;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#ccf;fill:#ECECFF}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#ccf;fill:#ECECFF}.labelText{fill:#000;stroke:none}.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#ccf}.note{stroke:#aa3;fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:rgba(102,102,255,0.49)}.section2{fill:#fff400}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.3;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#8a90dd;stroke:#534fbc}.taskTextOutside0,.taskTextOutside2{fill:#000}.taskTextOutside1,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#bfc7ff;stroke:#534fbc}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000 !important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#000 !important}.titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.classGroup rect{fill:#ECECFF;stroke:#9370db}g.classGroup line{stroke:#9370db;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}.classLabel .label{fill:#9370db;font-size:10px}.relation{stroke:#9370db;stroke-width:1;fill:none}#compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#9370db;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#ECECFF;stroke:#9370db}g.stateGroup line{stroke:#9370db;stroke-width:1}.transition{stroke:#9370db;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.state-note{stroke:#aa3;fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n",""])},function(t,e,n){var r=n(210);t.exports="string"==typeof r?r:r.toString()},function(t,e,n){(t.exports=n(40)(!1)).push([t.i,".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon{fill:#cde498;stroke:#13540c;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:green}.edgePath .path{stroke:green;stroke-width:1.5px}.edgeLabel{background-color:#e8e8e8;text-align:center}.cluster rect{fill:#cdffb2;stroke:#6eaa49;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#cdffb2;border:1px solid #6eaa49;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#13540c;fill:#cde498}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#326932;fill:#cde498}.labelText{fill:#000;stroke:none}.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#326932}.note{stroke:#6eaa49;fill:#fff5ad}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:#6eaa49}.section2{fill:#6eaa49}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#d3d3d3;opacity:0.3;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#487e3a;stroke:#13540c}.taskTextOutside0,.taskTextOutside2{fill:#000}.taskTextOutside1,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#cde498;stroke:#13540c}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000 !important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000 !important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#cde498;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#000 !important}.titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#13540c;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.classGroup rect{fill:#cde498;stroke:#13540c}g.classGroup line{stroke:#13540c;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#cde498;opacity:0.5}.classLabel .label{fill:#13540c;font-size:10px}.relation{stroke:#13540c;stroke-width:1;fill:none}#compositionStart{fill:#13540c;stroke:#13540c;stroke-width:1}#compositionEnd{fill:#13540c;stroke:#13540c;stroke-width:1}#aggregationStart{fill:#cde498;stroke:#13540c;stroke-width:1}#aggregationEnd{fill:#cde498;stroke:#13540c;stroke-width:1}#dependencyStart{fill:#13540c;stroke:#13540c;stroke-width:1}#dependencyEnd{fill:#13540c;stroke:#13540c;stroke-width:1}#extensionStart{fill:#13540c;stroke:#13540c;stroke-width:1}#extensionEnd{fill:#13540c;stroke:#13540c;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#13540c;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#13540c;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#cde498;stroke:#13540c}g.stateGroup line{stroke:#13540c;stroke-width:1}.transition{stroke:#13540c;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.state-note{stroke:#6eaa49;fill:#fff5ad}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#cde498;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n",""])},function(t,e,n){var r=n(212);t.exports="string"==typeof r?r:r.toString()},function(t,e,n){(t.exports=n(40)(!1)).push([t.i,".label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);color:#333}.label text{fill:#333}.node rect,.node circle,.node ellipse,.node polygon{fill:#eee;stroke:#999;stroke-width:1px}.node .label{text-align:center}.node.clickable{cursor:pointer}.arrowheadPath{fill:#333}.edgePath .path{stroke:#666;stroke-width:1.5px}.edgeLabel{background-color:#fff;text-align:center}.cluster rect{fill:#eaf2fb;stroke:#26a;stroke-width:1px}.cluster text{fill:#333}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#eaf2fb;border:1px solid #26a;border-radius:2px;pointer-events:none;z-index:100}.actor{stroke:#999;fill:#eee}text.actor{fill:#333;stroke:none}.actor-line{stroke:#666}.messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}#arrowhead{fill:#333}.sequenceNumber{fill:#fff}#sequencenumber{fill:#333}#crosshead path{fill:#333 !important;stroke:#333 !important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#999;fill:#eee}.labelText{fill:#333;stroke:none}.loopText{fill:#333;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#999}.note{stroke:#770;fill:#ffa}.noteText{fill:black;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:14px}.activation0{fill:#f4f4f4;stroke:#666}.activation1{fill:#f4f4f4;stroke:#666}.activation2{fill:#f4f4f4;stroke:#666}.mermaid-main-font{font-family:\"trebuchet ms\", verdana, arial;font-family:var(--mermaid-font-family)}.section{stroke:none;opacity:0.2}.section0{fill:#80b3e6}.section2{fill:#80b3e6}.section1,.section3{fill:#fff;opacity:0.2}.sectionTitle0{fill:#333}.sectionTitle1{fill:#333}.sectionTitle2{fill:#333}.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid .tick{stroke:#e6e6e6;opacity:0.3;shape-rendering:crispEdges}.grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.grid path{stroke-width:0}.today{fill:none;stroke:#d42;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskText:not([font-size]){font-size:11px}.taskTextOutsideRight{fill:#333;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.taskTextOutsideLeft{fill:#333;text-anchor:end;font-size:11px}.task.clickable{cursor:pointer}.taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#26a;stroke:#1a4d80}.taskTextOutside0,.taskTextOutside2{fill:#333}.taskTextOutside1,.taskTextOutside3{fill:#333}.active0,.active1,.active2,.active3{fill:#eee;stroke:#1a4d80}.activeText0,.activeText1,.activeText2,.activeText3{fill:#333 !important}.done0,.done1,.done2,.done3{stroke:#666;fill:#bbb;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#333 !important}.crit0,.crit1,.crit2,.crit3{stroke:#b1361b;fill:#d42;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#b1361b;fill:#eee;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#b1361b;fill:#bbb;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.milestone{transform:rotate(45deg) scale(0.8, 0.8)}.milestoneText{font-style:italic}.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#333 !important}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3{fill:#333 !important}.titleText{text-anchor:middle;font-size:18px;fill:#333;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.classGroup text{fill:#999;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}g.classGroup text .title{font-weight:bolder}g.classGroup rect{fill:#eee;stroke:#999}g.classGroup line{stroke:#999;stroke-width:1}.classLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:0.5}.classLabel .label{fill:#999;font-size:10px}.relation{stroke:#999;stroke-width:1;fill:none}#compositionStart{fill:#999;stroke:#999;stroke-width:1}#compositionEnd{fill:#999;stroke:#999;stroke-width:1}#aggregationStart{fill:#eee;stroke:#999;stroke-width:1}#aggregationEnd{fill:#eee;stroke:#999;stroke-width:1}#dependencyStart{fill:#999;stroke:#999;stroke-width:1}#dependencyEnd{fill:#999;stroke:#999;stroke-width:1}#extensionStart{fill:#999;stroke:#999;stroke-width:1}#extensionEnd{fill:#999;stroke:#999;stroke-width:1}.commit-id,.commit-msg,.branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.pieTitleText{text-anchor:middle;font-size:25px;fill:#333;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}.slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#999;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}g.stateGroup text{fill:#999;stroke:none;font-size:10px}g.stateGroup .state-title{font-weight:bolder;fill:#000}g.stateGroup rect{fill:#eee;stroke:#999}g.stateGroup line{stroke:#999;stroke-width:1}.transition{stroke:#999;stroke-width:1;fill:none}.stateGroup .composit{fill:white;border-bottom:1px}.state-note{stroke:#770;fill:#ffa}.state-note text{fill:black;stroke:none;font-size:10px}.stateLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:0.5}.stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}:root{--mermaid-font-family: '\"trebuchet ms\", verdana, arial';--mermaid-font-family: \"Comic Sans MS\", \"Comic Sans\", cursive}\n",""])},function(t,e,n){"use strict";n.r(e);var r=n(104),i=n.n(r),a=n(0),o=n(105),s=n.n(o),u=n(34);let c={};const f=t=>{!function(t){const e=Object.keys(t);for(let n=0;n<e.length;n++)if("object"==typeof t[e[n]]&&null!=t[e[n]]){const r=Object.keys(t[e[n]]);for(let i=0;i<r.length;i++)void 0===c[e[n]]&&(c[e[n]]={}),c[e[n]][r[i]]=t[e[n]][r[i]]}else c[e[n]]=t[e[n]]}(t)},l=()=>c;var h=n(15),d=n.n(h);const p=1,g=2,y=3,b=4,m=5,v={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{},fatal:()=>{}},_=function(t){v.debug=()=>{},v.info=()=>{},v.warn=()=>{},v.error=()=>{},v.fatal=()=>{},t<=m&&(v.fatal=console.log.bind(console,"[35m",w("FATAL"))),t<=b&&(v.error=console.log.bind(console,"[31m",w("ERROR"))),t<=y&&(v.warn=console.log.bind(console,"[33m",w("WARN"))),t<=g&&(v.info=console.log.bind(console,"[34m",w("INFO"))),t<=p&&(v.debug=console.log.bind(console,"[32m",w("DEBUG")))},w=t=>{return`${d()().format("HH:mm:ss.SSS")} : ${t} : `},x=(t,e)=>{if(!t)return e;const n=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return a[n]||e},k=(t,e)=>t&&e?Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)):0;var E={detectType:function(t){return t=t.replace(/^\s*%%.*\n/g,"\n"),v.debug("Detecting diagram type based on the text "+t),t.match(/^\s*sequenceDiagram/)?"sequence":t.match(/^\s*gantt/)?"gantt":t.match(/^\s*classDiagram/)?"class":t.match(/^\s*stateDiagram/)?"state":t.match(/^\s*gitGraph/)?"git":t.match(/^\s*info/)?"info":t.match(/^\s*pie/)?"pie":"flowchart"},isSubstringInArray:function(t,e){for(let n=0;n<e.length;n++)if(e[n].match(t))return n;return-1},interpolateToCurve:x,calcLabelPosition:t=>{return(t=>{let e,n=0;t.forEach(t=>{n+=k(t,e),e=t});let r,i=n/2;return e=void 0,t.forEach(t=>{if(e&&!r){const n=k(t,e);if(n<i)i-=n;else{const a=i/n;a<=0&&(r=e),a>=1&&(r={x:t.x,y:t.y}),a>0&&a<1&&(r={x:(1-a)*e.x+a*t.x,y:(1-a)*e.y+a*t.y})}}e=t}),r})(t)},calcCardinalityPosition:(t,e,n)=>{let r,i=0;e[0]!==n&&(e=e.reverse()),e.forEach(t=>{i+=k(t,r),r=t});let a,o=25;r=void 0,e.forEach(t=>{if(r&&!a){const e=k(t,r);if(e<o)o-=e;else{const n=o/e;n<=0&&(a=r),n>=1&&(a={x:t.x,y:t.y}),n>0&&n<1&&(a={x:(1-n)*r.x+n*t.x,y:(1-n)*r.y+n*t.y})}}r=t});let s=t?10:5,u=Math.atan2(e[0].y-a.y,e[0].x-a.x),c={x:0,y:0};return c.x=Math.sin(u)*s+(e[0].x+a.x)/2,c.y=-Math.cos(u)*s+(e[0].y+a.y)/2,c}},A=n(20),S=n.n(A),M=n(41);const T=l();let D,C={},O=[],R=[],N=[],I={},B={},L=0,P=!0,F=[];const q=t=>{let e=t;return"loose"!==T.securityLevel&&(e=(e=(e=(e=(e=e.replace(/<br>/g,"#br#")).replace(/<br\S*?\/>/g,"#br#")).replace(/</g,"&lt;").replace(/>/g,"&gt;")).replace(/=/g,"&equals;")).replace(/#br#/g,"<br/>")),e},j=function(t,e){t.split(",").forEach((function(t){let n=t;t[0].match(/\d/)&&(n="s"+n),void 0!==C[n]&&C[n].classes.push(e),void 0!==I[n]&&I[n].classes.push(e)}))},U=function(t,e){t.split(",").forEach((function(t){void 0!==e&&(B[t]=q(e))}))},z=function(t){let e=a.select(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=a.select("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),a.select(t).select("svg").selectAll("g.node").on("mouseover",(function(){const t=a.select(this);if(null===t.attr("title"))return;const n=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.html(t.attr("title")).style("left",n.left+(n.right-n.left)/2+"px").style("top",n.top-14+document.body.scrollTop+"px"),t.classed("hover",!0)})).on("mouseout",(function(){e.transition().duration(500).style("opacity",0),a.select(this).classed("hover",!1)}))};F.push(z);const Y=function(t){for(let e=0;e<N.length;e++)if(N[e].id===t)return e;return-1};let H=-1;const V=[],$=function(t,e){const n=N[e].nodes;if((H+=1)>2e3)return;if(V[H]=e,N[e].id===t)return{result:!0,count:0};let r=0,i=1;for(;r<n.length;){const e=Y(n[r]);if(e>=0){const n=$(t,e);if(n.result)return{result:!0,count:i+n.count};i+=n.count}r+=1}return{result:!1,count:i}};var G={addVertex:function(t,e,n,r,i){let a,o=t;void 0!==o&&0!==o.trim().length&&(o[0].match(/\d/)&&(o="s"+o),void 0===C[o]&&(C[o]={id:o,styles:[],classes:[]}),void 0!==e?('"'===(a=q(e.trim()))[0]&&'"'===a[a.length-1]&&(a=a.substring(1,a.length-1)),C[o].text=a):C[o].text||(C[o].text=t),void 0!==n&&(C[o].type=n),null!=r&&r.forEach((function(t){C[o].styles.push(t)})),null!=i&&i.forEach((function(t){C[o].classes.push(t)})))},addLink:function(t,e,n,r){let i=t,a=e;i[0].match(/\d/)&&(i="s"+i),a[0].match(/\d/)&&(a="s"+a),v.info("Got edge...",i,a);const o={start:i,end:a,type:void 0,text:""};void 0!==(r=n.text)&&(o.text=q(r.trim()),'"'===o.text[0]&&'"'===o.text[o.text.length-1]&&(o.text=o.text.substring(1,o.text.length-1))),void 0!==n&&(o.type=n.type,o.stroke=n.stroke),O.push(o)},updateLinkInterpolate:function(t,e){t.forEach((function(t){"default"===t?O.defaultInterpolate=e:O[t].interpolate=e}))},updateLink:function(t,e){t.forEach((function(t){"default"===t?O.defaultStyle=e:(-1===E.isSubstringInArray("fill",e)&&e.push("fill:none"),O[t].style=e)}))},addClass:function(t,e){void 0===R[t]&&(R[t]={id:t,styles:[]}),null!=e&&e.forEach((function(e){R[t].styles.push(e)}))},setDirection:function(t){(D=t).match(/.*</)&&(D="RL"),D.match(/.*\^/)&&(D="BT"),D.match(/.*>/)&&(D="LR"),D.match(/.*v/)&&(D="TB")},setClass:j,getTooltip:function(t){return B[t]},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e){let n=t;t[0].match(/\d/)&&(n="s"+n),"loose"===T.securityLevel&&void 0!==e&&void 0!==C[n]&&F.push((function(t){const r=document.querySelector(`[id="${n}"]`);null!==r&&r.addEventListener("click",(function(){window[e](n)}),!1)}))}(t,e)})),U(t,n),j(t,"clickable")},setLink:function(t,e,n){t.split(",").forEach((function(t){let n=t;t[0].match(/\d/)&&(n="s"+n),void 0!==C[n]&&("loose"!==T.securityLevel?C[n].link=Object(M.sanitizeUrl)(e):C[n].link=e)})),U(t,n),j(t,"clickable")},bindFunctions:function(t){F.forEach((function(e){e(t)}))},getDirection:function(){return D.trim()},getVertices:function(){return C},getEdges:function(){return O},getClasses:function(){return R},clear:function(){C={},R={},O=[],(F=[]).push(z),N=[],I={},L=0,B=[],P=!0},defaultStyle:function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},addSubGraph:function(t,e,n){let r=t,i=n;t===n&&n.match(/\s/)&&(r=void 0);let a=[];a=function(t){const e={boolean:{},number:{},string:{}},n=[];return t.filter((function(t){const r=typeof t;return""!==t.trim()&&(r in e?!e[r].hasOwnProperty(t)&&(e[r][t]=!0):!(n.indexOf(t)>=0)&&n.push(t))}))}(a.concat.apply(a,e));for(let t=0;t<a.length;t++)a[t][0].match(/\d/)&&(a[t]="s"+a[t]);(r=r||"subGraph"+L)[0].match(/\d/)&&(r="s"+r),i=q(i=i||""),L+=1;const o={id:r,nodes:a,title:i.trim(),classes:[]};return N.push(o),I[r]=o,r},getDepthFirstPos:function(t){return V[t]},indexNodes:function(){H=-1,N.length>0&&$("none",N.length-1,0)},getSubGraphs:function(){return N},lex:{firstGraph:()=>!!P&&(P=!1,!0)}},W=n(33),K=n.n(W),X=n(12),Z=n.n(X),J=n(11),Q=n.n(J);const tt=/:/g;function et(t){return t?String(t).replace(tt,"\\:"):""}var nt={isSubgraph:function(t,e){return!!t.children(e).length},edgeToId:function(t){return et(t.v)+":"+et(t.w)+":"+et(t.name)},applyStyle:function(t,e){e&&t.attr("style",e)},applyClass:function(t,e,n){e&&t.attr("class",e).attr("class",n+" "+t.attr("class"))},applyTransition:function(t,e){const n=e.graph();if(Q.a.isPlainObject(n)){const e=n.transition;if(Q.a.isFunction(e))return e(t)}return t}};var rt=function(t,e){const n=t.append("foreignObject").attr("width","100000"),r=n.append("xhtml:div");r.attr("xmlns","http://www.w3.org/1999/xhtml");const i=e.label;switch(typeof i){case"function":r.insert(i);break;case"object":r.insert((function(){return i}));break;default:r.html(i)}nt.applyStyle(r,e.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap");const a=r.node().getBoundingClientRect();return n.attr("width",a.width).attr("height",a.height),n};function it(t,e,n){const r=.9*(e.width+e.height),i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],a=ht(t,r,r,i);return n.intersect=function(t){return Z.a.intersect.polygon(n,i,t)},a}function at(t,e,n){const r=e.height,i=r/4,a=e.width+2*i,o=[{x:i,y:0},{x:a-i,y:0},{x:a,y:-r/2},{x:a-i,y:-r},{x:i,y:-r},{x:0,y:-r/2}],s=ht(t,a,r,o);return n.intersect=function(t){return Z.a.intersect.polygon(n,o,t)},s}function ot(t,e,n){const r=e.width,i=e.height,a=[{x:-i/2,y:0},{x:r,y:0},{x:r,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}],o=ht(t,r,i,a);return n.intersect=function(t){return Z.a.intersect.polygon(n,a,t)},o}function st(t,e,n){const r=e.width,i=e.height,a=[{x:-2*i/6,y:0},{x:r-i/6,y:0},{x:r+2*i/6,y:-i},{x:i/6,y:-i}],o=ht(t,r,i,a);return n.intersect=function(t){return Z.a.intersect.polygon(n,a,t)},o}function ut(t,e,n){const r=e.width,i=e.height,a=[{x:2*i/6,y:0},{x:r+i/6,y:0},{x:r-2*i/6,y:-i},{x:-i/6,y:-i}],o=ht(t,r,i,a);return n.intersect=function(t){return Z.a.intersect.polygon(n,a,t)},o}function ct(t,e,n){const r=e.width,i=e.height,a=[{x:-2*i/6,y:0},{x:r+2*i/6,y:0},{x:r-i/6,y:-i},{x:i/6,y:-i}],o=ht(t,r,i,a);return n.intersect=function(t){return Z.a.intersect.polygon(n,a,t)},o}function ft(t,e,n){const r=e.width,i=e.height,a=[{x:i/6,y:0},{x:r-i/6,y:0},{x:r+2*i/6,y:-i},{x:-2*i/6,y:-i}],o=ht(t,r,i,a);return n.intersect=function(t){return Z.a.intersect.polygon(n,a,t)},o}function lt(t,e,n){const r=e.width,i=e.height,a=[{x:0,y:0},{x:r+i/2,y:0},{x:r,y:-i/2},{x:r+i/2,y:-i},{x:0,y:-i}],o=ht(t,r,i,a);return n.intersect=function(t){return Z.a.intersect.polygon(n,a,t)},o}function ht(t,e,n,r){return t.insert("polygon",":first-child").attr("points",r.map((function(t){return t.x+","+t.y})).join(" ")).attr("transform","translate("+-e/2+","+n/2+")")}var dt={addToRender:function(t){t.shapes().question=it,t.shapes().hexagon=at,t.shapes().rect_left_inv_arrow=ot,t.shapes().lean_right=st,t.shapes().lean_left=ut,t.shapes().trapezoid=ct,t.shapes().inv_trapezoid=ft,t.shapes().rect_right_inv_arrow=lt}};const pt={},gt=function(t,e,n){const r=a.select(`[id="${n}"]`),i=Object.keys(t),o=function(t,e,{label:n}){if(n)for(let n=0;n<e.length;n++)void 0!==e[n]&&e[n].match("^color:|^text-align:")&&(t=t+e[n]+";");else for(let n=0;n<e.length;n++)void 0!==e[n]&&(t=t+e[n]+";");return t};i.forEach((function(n){const i=t[n];let a="";i.classes.length>0&&(a=i.classes.join(" "));let s="";s=o(s,i.styles,{label:!1});let u="";u=o(u,i.styles,{label:!0});let c,f=void 0!==i.text?i.text:i.id;if(l().flowchart.htmlLabels){const t={label:f.replace(/fa[lrsb]?:fa-[\w-]+/g,t=>`<i class='${t.replace(":"," ")}'></i>`)};(c=rt(r,t).node()).parentNode.removeChild(c)}else{const t=document.createElementNS("http://www.w3.org/2000/svg","text"),e=f.split(/<br[/]{0,1}>/);for(let n=0;n<e.length;n++){const r=document.createElementNS("http://www.w3.org/2000/svg","tspan");r.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),r.setAttribute("dy","1em"),r.setAttribute("x","1"),r.textContent=e[n],t.appendChild(r)}c=t}if(i.link){const t=document.createElementNS("http://www.w3.org/2000/svg","a");t.setAttributeNS("http://www.w3.org/2000/svg","href",i.link),t.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),t.appendChild(c),c=t}let h=0,d="";switch(i.type){case"round":h=5,d="rect";break;case"square":d="rect";break;case"diamond":d="question";break;case"hexagon":d="hexagon";break;case"odd":d="rect_left_inv_arrow";break;case"lean_right":d="lean_right";break;case"lean_left":d="lean_left";break;case"trapezoid":d="trapezoid";break;case"inv_trapezoid":d="inv_trapezoid";break;case"odd_right":d="rect_left_inv_arrow";break;case"circle":d="circle";break;case"ellipse":d="ellipse";break;case"group":d="rect";break;default:d="rect"}e.setNode(i.id,{labelType:"svg",labelStyle:u,shape:d,label:c,rx:h,ry:h,class:a,style:s,id:i.id})}))},yt=function(t,e){let n,r=0;void 0!==t.defaultStyle&&(n=t.defaultStyle.toString().replace(/,/g,";")),t.forEach((function(i){r++;const o={};"arrow_open"===i.type?o.arrowhead="none":o.arrowhead="normal";let s="";if(void 0!==i.style)i.style.forEach((function(t){s=s+t+";"}));else switch(i.stroke){case"normal":s="fill:none",void 0!==n&&(s=n);break;case"dotted":s="stroke: #333; fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":s="stroke: #333; stroke-width: 3.5px;fill:none"}o.style=s,void 0!==i.interpolate?o.curve=x(i.interpolate,a.curveLinear):void 0!==t.defaultInterpolate?o.curve=x(t.defaultInterpolate,a.curveLinear):o.curve=x(pt.curve,a.curveLinear),void 0===i.text?void 0!==i.style&&(o.arrowheadStyle="fill: #333"):(o.arrowheadStyle="fill: #333",void 0===i.style?(o.labelpos="c",l().flowchart.htmlLabels?(o.labelType="html",o.label='<span class="edgeLabel">'+i.text+"</span>"):(o.labelType="text",o.style=o.style||"stroke: #333; stroke-width: 1.5px;fill:none",o.label=i.text.replace(/<br>/g,"\n"))):o.label=i.text.replace(/<br>/g,"\n")),e.setEdge(i.start,i.end,o,r)}))};var bt=function(t){const e=Object.keys(t);for(let n=0;n<e.length;n++)pt[e[n]]=t[e[n]]},mt=function(t){v.info("Extracting classes"),G.clear();const e=K.a.parser;return e.yy=G,e.parse(t),G.getClasses()},vt=function(t,e){v.info("Drawing flowchart"),G.clear();const n=K.a.parser;n.yy=G;try{n.parse(t)}catch(t){v.debug("Parsing failed")}let r=G.getDirection();void 0===r&&(r="TD");const i=new S.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:r,marginx:20,marginy:20}).setDefaultEdgeLabel((function(){return{}}));let o;const s=G.getSubGraphs();for(let t=s.length-1;t>=0;t--)o=s[t],G.addVertex(o.id,o.title,"group",void 0,o.classes);const u=G.getVertices(),c=G.getEdges();let f=0;for(f=s.length-1;f>=0;f--){o=s[f],a.selectAll("cluster").append("text");for(let t=0;t<o.nodes.length;t++)i.setParent(o.nodes[t],o.id)}gt(u,i,e),yt(c,i);const h=new(0,Z.a.render);dt.addToRender(h),h.arrows().none=function(t,e,n,r){const i=t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 0 0 L 0 0 z");Z.a.util.applyStyle(i,n[r+"Style"])},h.arrows().normal=function(t,e,n,r){t.append("marker").attr("id",e).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").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")};const d=a.select(`[id="${e}"]`),p=a.select("#"+e+" g");h(p,i),p.selectAll("g.node").attr("title",(function(){return G.getTooltip(this.id)}));const g=l().flowchart,y=i.maxX-i.minX+16,b=i.maxY-i.minY+16;for(g.useMaxWidth?(d.attr("width","100%"),d.attr("style",`max-width: ${y}px;`)):(d.attr("height",b),d.attr("width",y)),d.attr("viewBox",`0 0 ${y} ${b}`),d.select("g").attr("transform",`translate(${8-i.minX}, ${8-i.minY})`),G.indexNodes("subGraph"+f),f=0;f<s.length;f++)if("undefined"!==(o=s[f]).title){const t=document.querySelectorAll("#"+e+" #"+o.id+" rect"),n=document.querySelectorAll("#"+e+" #"+o.id),r=t[0].x.baseVal.value,i=t[0].y.baseVal.value,s=t[0].width.baseVal.value,u=a.select(n[0]).select(".label");u.attr("transform",`translate(${r+s/2}, ${i+14})`),u.attr("id",e+"Text")}if(!g.htmlLabels){const t=document.querySelectorAll("#"+e+" .edgeLabel .label");for(let e=0;e<t.length;e++){const n=t[e],r=n.getBBox(),i=document.createElementNS("http://www.w3.org/2000/svg","rect");i.setAttribute("rx",0),i.setAttribute("ry",0),i.setAttribute("width",r.width),i.setAttribute("height",r.height),i.setAttribute("style","fill:#e8e8e8;"),n.insertBefore(i,n.firstChild)}}};const _t=function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n},wt=function(t,e,n){const r=e.text.replace(/<br\/?>/gi," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.attr("fill",e.fill),void 0!==e.class&&i.attr("class",e.class);const a=i.append("tspan");return a.attr("x",e.x+2*e.textMargin),a.attr("fill",e.fill),a.text(r),i},xt=function(t,e){const n=t.append("polygon");var r,i,a,o,s;n.attr("points",(r=e.x,i=e.y,r+","+i+" "+(r+(a=50))+","+i+" "+(r+a)+","+(i+(o=20)-(s=7))+" "+(r+a-1.2*s)+","+(i+o)+" "+r+","+(i+o))),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,wt(t,e)};let kt=-1;const Et=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0}},At=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},St=function(){function t(t,e,n,i,a,o,s){r(e.append("text").attr("x",n+a/2).attr("y",i+o/2+5).style("text-anchor","middle").text(t),s)}function e(t,e,n,i,a,o,s,u){const{actorFontSize:c,actorFontFamily:f}=u,l=t.split(/<br\/?>/gi);for(let t=0;t<l.length;t++){const u=t*c-c*(l.length-1)/2,h=e.append("text").attr("x",n+a/2).attr("y",i).style("text-anchor","middle").style("font-size",c).style("font-family",f);h.append("tspan").attr("x",n+a/2).attr("dy",u).text(l[t]),h.attr("y",i+o/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(h,s)}}function n(t,n,i,a,o,s,u,c){const f=n.append("switch"),l=f.append("foreignObject").attr("x",i).attr("y",a).attr("width",o).attr("height",s).append("div").style("display","table").style("height","100%").style("width","100%");l.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(t),e(t,f,i,a,o,s,u,c),r(l,u)}function r(t,e){for(const n in e)e.hasOwnProperty(n)&&t.attr(n,e[n])}return function(r){return"fo"===r.textPlacement?n:"old"===r.textPlacement?t:e}}();var Mt={drawRect:_t,drawText:wt,drawLabel:xt,drawActor:function(t,e,n,r,i){const a=e+i.width/2,o=t.append("g");0===n&&(kt++,o.append("line").attr("id","actor"+kt).attr("x1",a).attr("y1",5).attr("x2",a).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"));const s=At();s.x=e,s.y=n,s.fill="#eaeaea",s.width=i.width,s.height=i.height,s.class="actor",s.rx=3,s.ry=3,_t(o,s),St(i)(r,o,s.x,s.y,s.width,s.height,{class:"actor"},i)},anchorElement:function(t){return t.append("g")},drawActivation:function(t,e,n,r,i){const a=At(),o=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=n-e.starty,_t(o,a)},drawLoop:function(t,e,n,r){const i=t.append("g"),a=function(t,e,n,r){return i.append("line").attr("x1",t).attr("y1",e).attr("x2",n).attr("y2",r).attr("class","loopLine")};a(e.startx,e.starty,e.stopx,e.starty),a(e.stopx,e.starty,e.stopx,e.stopy),a(e.startx,e.stopy,e.stopx,e.stopy),a(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){a(e.startx,t,e.stopx,t).style("stroke-dasharray","3, 3")}));let o=Et();o.text=n,o.x=e.startx,o.y=e.starty,o.labelMargin=15,o.class="labelText",xt(i,o),(o=Et()).text="[ "+e.title+" ]",o.x=e.startx+(e.stopx-e.startx)/2,o.y=e.starty+1.5*r.boxMargin,o.anchor="middle",o.class="loopText",wt(i,o),void 0!==e.sectionTitles&&e.sectionTitles.forEach((function(t,n){""!==t&&(o.text="[ "+t+" ]",o.y=e.sections[n]+1.5*r.boxMargin,wt(i,o))}))},drawBackgroundRect:function(t,e){_t(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},insertArrowHead:function(t){t.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")},insertSequenceNumber:function(t){t.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)},insertArrowCrossHead:function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.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"),e.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")},getTextObj:Et,getNoteRect:At},Tt=n(1),Dt=n.n(Tt);let Ct={},Ot=[];const Rt=[];let Nt="";const It=function(t,e,n){const r=Ct[t];r&&e===r.name&&null==n||(null==n&&(n=e),Ct[t]={name:e,description:n})},Bt=function(t,e,n,r){v.debug("Adding message from="+t+" to="+e+" message="+n+" type="+r),Ot.push({from:t,to:e,message:n,type:r})},Lt={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},Pt=function(t,e,n){const r={actor:t,placement:e,message:n},i=[].concat(t,t);Rt.push(r),Ot.push({from:i[0],to:i[1],message:n,type:Lt.NOTE,placement:e})},Ft=function(t){Nt=t},qt=function(t){if(t instanceof Array)t.forEach((function(t){qt(t)}));else switch(t.type){case"addActor":It(t.actor,t.actor,t.description);break;case"activeStart":case"activeEnd":Bt(t.actor,void 0,void 0,t.signalType);break;case"addNote":Pt(t.actor,t.placement,t.text);break;case"addMessage":Bt(t.from,t.to,t.msg,t.signalType);break;case"loopStart":Bt(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":Bt(void 0,void 0,void 0,t.signalType);break;case"rectStart":Bt(void 0,void 0,t.color,t.signalType);break;case"rectEnd":Bt(void 0,void 0,void 0,t.signalType);break;case"optStart":Bt(void 0,void 0,t.optText,t.signalType);break;case"optEnd":Bt(void 0,void 0,void 0,t.signalType);break;case"altStart":case"else":Bt(void 0,void 0,t.altText,t.signalType);break;case"altEnd":Bt(void 0,void 0,void 0,t.signalType);break;case"setTitle":Ft(t.text);break;case"parStart":case"and":Bt(void 0,void 0,t.parText,t.signalType);break;case"parEnd":Bt(void 0,void 0,void 0,t.signalType)}};var jt={addActor:It,addMessage:function(t,e,n,r){Ot.push({from:t,to:e,message:n,answer:r})},addSignal:Bt,getMessages:function(){return Ot},getActors:function(){return Ct},getActor:function(t){return Ct[t]},getActorKeys:function(){return Object.keys(Ct)},getTitle:function(){return Nt},clear:function(){Ct={},Ot=[]},LINETYPE:Lt,ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},addNote:Pt,setTitle:Ft,apply:qt};Tt.parser.yy=jt;const Ut={diagramMarginX:50,diagramMarginY:30,actorMargin:50,width:150,height:65,actorFontSize:14,actorFontFamily:'"Open-Sans", "sans-serif"',boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,mirrorActors:!1,bottomMarginAdj:1,activationWidth:10,textPlacement:"tspan",showSequenceNumbers:!1},zt={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],init:function(){this.sequenceItems=[],this.activations=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(t,e,n,r){void 0===t[e]?t[e]=n:t[e]=r(n,t[e])},updateBounds:function(t,e,n,r){const i=this;let a=0;function o(o){return function(s){a++;const u=i.sequenceItems.length-a+1;i.updateVal(s,"starty",e-u*Ut.boxMargin,Math.min),i.updateVal(s,"stopy",r+u*Ut.boxMargin,Math.max),i.updateVal(zt.data,"startx",t-u*Ut.boxMargin,Math.min),i.updateVal(zt.data,"stopx",n+u*Ut.boxMargin,Math.max),"activation"!==o&&(i.updateVal(s,"startx",t-u*Ut.boxMargin,Math.min),i.updateVal(s,"stopx",n+u*Ut.boxMargin,Math.max),i.updateVal(zt.data,"starty",e-u*Ut.boxMargin,Math.min),i.updateVal(zt.data,"stopy",r+u*Ut.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(t,e,n,r){const i=Math.min(t,n),a=Math.max(t,n),o=Math.min(e,r),s=Math.max(e,r);this.updateVal(zt.data,"startx",i,Math.min),this.updateVal(zt.data,"starty",o,Math.min),this.updateVal(zt.data,"stopx",a,Math.max),this.updateVal(zt.data,"stopy",s,Math.max),this.updateBounds(i,o,a,s)},newActivation:function(t,e){const n=Tt.parser.yy.getActors()[t.from.actor],r=Vt(t.from.actor).length,i=n.x+Ut.width/2+(r-1)*Ut.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+Ut.activationWidth,stopy:void 0,actor:t.from.actor,anchored:Mt.anchorElement(e)})},endActivation:function(t){const e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from.actor);return this.activations.splice(e,1)[0]},newLoop:function(t,e){this.sequenceItems.push({startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t,fill:e})},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push(zt.getVerticalPos()),e.sectionTitles.push(t),this.sequenceItems.push(e)},bumpVerticalPos:function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},Yt=function(t,e,n,r,i){const a=Mt.getNoteRect();a.x=e,a.y=n,a.width=i||Ut.width,a.class="note";let o=t.append("g");const s=Mt.drawRect(o,a),u=((t,e,n,r,i)=>{let a=0;const o=t.split(/<br\/?>/gi);for(const t of o){const o=Mt.getTextObj();o.x=e,o.y=n+a,o.textMargin=Ut.noteMargin,o.dy="1em",o.text=t,o.class="noteText";const s=Mt.drawText(r,o,i);a+=(s._groups||s)[0][0].getBBox().height}return a})(r.message,e-4,n+24,o,a.width-Ut.noteMargin);zt.insert(e,n,e+a.width,n+2*Ut.noteMargin+u),s.attr("height",u+2*Ut.noteMargin),zt.bumpVerticalPos(u+2*Ut.noteMargin)},Ht=function(t,e,n,r){for(let i=0;i<n.length;i++){const a=n[i];e[a].x=i*Ut.actorMargin+i*Ut.width,e[a].y=r,e[a].width=Ut.diagramMarginX,e[a].height=Ut.diagramMarginY,Mt.drawActor(t,e[a].x,r,e[a].description,Ut),zt.insert(e[a].x,r,e[a].x+Ut.width,Ut.height)}zt.bumpVerticalPos(Ut.height)},Vt=function(t){return zt.activations.filter((function(e){return e.actor===t}))},$t=function(t){const e=Tt.parser.yy.getActors(),n=Vt(t);return[n.reduce((function(t,e){return Math.min(t,e.startx)}),e[t].x+Ut.width/2),n.reduce((function(t,e){return Math.max(t,e.stopx)}),e[t].x+Ut.width/2)]};var Gt=function(t){Object.keys(t).forEach((function(e){Ut[e]=t[e]})),Ut.actorFontFamily=t.fontFamily},Wt=function(t,e){Tt.parser.yy.clear(),Tt.parser.parse(t+"\n"),zt.init();const n=a.select(`[id="${e}"]`);let r,i,o;const s=Tt.parser.yy.getActors(),u=Tt.parser.yy.getActorKeys(),c=Tt.parser.yy.getMessages(),f=Tt.parser.yy.getTitle();Ht(n,s,u,0),Mt.insertArrowHead(n),Mt.insertArrowCrossHead(n),Mt.insertSequenceNumber(n);let l=1;c.forEach((function(t){let e;switch(t.type){case Tt.parser.yy.LINETYPE.NOTE:zt.bumpVerticalPos(Ut.boxMargin),r=s[t.from].x,i=s[t.to].x,t.placement===Tt.parser.yy.PLACEMENT.RIGHTOF?Yt(n,r+(Ut.width+Ut.actorMargin)/2,zt.getVerticalPos(),t):t.placement===Tt.parser.yy.PLACEMENT.LEFTOF?Yt(n,r-(Ut.width+Ut.actorMargin)/2,zt.getVerticalPos(),t):t.to===t.from?Yt(n,r,zt.getVerticalPos(),t):(o=Math.abs(r-i)+Ut.actorMargin,Yt(n,(r+i+Ut.width-o)/2,zt.getVerticalPos(),t,o));break;case Tt.parser.yy.LINETYPE.ACTIVE_START:zt.newActivation(t,n);break;case Tt.parser.yy.LINETYPE.ACTIVE_END:!function(t,e){const r=zt.endActivation(t);r.starty+18>e&&(r.starty=e-6,e+=12),Mt.drawActivation(n,r,e,Ut,Vt(t.from.actor).length),zt.insert(r.startx,e-10,r.stopx,e)}(t,zt.getVerticalPos());break;case Tt.parser.yy.LINETYPE.LOOP_START:zt.bumpVerticalPos(Ut.boxMargin),zt.newLoop(t.message),zt.bumpVerticalPos(Ut.boxMargin+Ut.boxTextMargin);break;case Tt.parser.yy.LINETYPE.LOOP_END:e=zt.endLoop(),Mt.drawLoop(n,e,"loop",Ut),zt.bumpVerticalPos(Ut.boxMargin);break;case Tt.parser.yy.LINETYPE.RECT_START:zt.bumpVerticalPos(Ut.boxMargin),zt.newLoop(void 0,t.message),zt.bumpVerticalPos(Ut.boxMargin);break;case Tt.parser.yy.LINETYPE.RECT_END:const a=zt.endLoop();Mt.drawBackgroundRect(n,a),zt.bumpVerticalPos(Ut.boxMargin);break;case Tt.parser.yy.LINETYPE.OPT_START:zt.bumpVerticalPos(Ut.boxMargin),zt.newLoop(t.message),zt.bumpVerticalPos(Ut.boxMargin+Ut.boxTextMargin);break;case Tt.parser.yy.LINETYPE.OPT_END:e=zt.endLoop(),Mt.drawLoop(n,e,"opt",Ut),zt.bumpVerticalPos(Ut.boxMargin);break;case Tt.parser.yy.LINETYPE.ALT_START:zt.bumpVerticalPos(Ut.boxMargin),zt.newLoop(t.message),zt.bumpVerticalPos(Ut.boxMargin+Ut.boxTextMargin);break;case Tt.parser.yy.LINETYPE.ALT_ELSE:zt.bumpVerticalPos(Ut.boxMargin),e=zt.addSectionToLoop(t.message),zt.bumpVerticalPos(Ut.boxMargin);break;case Tt.parser.yy.LINETYPE.ALT_END:e=zt.endLoop(),Mt.drawLoop(n,e,"alt",Ut),zt.bumpVerticalPos(Ut.boxMargin);break;case Tt.parser.yy.LINETYPE.PAR_START:zt.bumpVerticalPos(Ut.boxMargin),zt.newLoop(t.message),zt.bumpVerticalPos(Ut.boxMargin+Ut.boxTextMargin);break;case Tt.parser.yy.LINETYPE.PAR_AND:zt.bumpVerticalPos(Ut.boxMargin),e=zt.addSectionToLoop(t.message),zt.bumpVerticalPos(Ut.boxMargin);break;case Tt.parser.yy.LINETYPE.PAR_END:e=zt.endLoop(),Mt.drawLoop(n,e,"par",Ut),zt.bumpVerticalPos(Ut.boxMargin);break;default:try{zt.bumpVerticalPos(Ut.messageMargin);const e=$t(t.from),a=$t(t.to),o=e[0]<=a[0]?1:0,s=e[0]<a[0]?0:1;r=e[o],i=a[s];const u=zt.getVerticalPos();!function(t,e,n,r,i,a){const o=t.append("g"),s=e+(n-e)/2;let u,c=0;const f=i.message.split(/<br\/?>/gi);for(const t of f)u=o.append("text").attr("x",s).attr("y",r-7+17*c).style("text-anchor","middle").attr("class","messageText").text(t.trim()),c++;const l=17*(c-1);let h,d=(u._groups||u)[0][0].getBBox().width;if(e===n){h=Ut.rightAngles?o.append("path").attr("d",`M  ${e},${r+l} H ${e+Ut.width/2} V ${r+25+l} H ${e}`):o.append("path").attr("d","M "+e+","+(r+l)+" C "+(e+60)+","+(r-10+l)+" "+(e+60)+","+(r+30+l)+" "+e+","+(r+20+l)),zt.bumpVerticalPos(30+l);const t=Math.max(d/2,100);zt.insert(e-t,zt.getVerticalPos()-10+l,n+t,zt.getVerticalPos()+l)}else(h=o.append("line")).attr("x1",e),h.attr("y1",r),h.attr("x2",n),h.attr("y2",r),zt.insert(e,zt.getVerticalPos()-10+l,n,zt.getVerticalPos()+l);i.type===Tt.parser.yy.LINETYPE.DOTTED||i.type===Tt.parser.yy.LINETYPE.DOTTED_CROSS||i.type===Tt.parser.yy.LINETYPE.DOTTED_OPEN?(h.style("stroke-dasharray","3, 3"),h.attr("class","messageLine1")):h.attr("class","messageLine0");let p="";Ut.arrowMarkerAbsolute&&(p=(p=(p=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),h.attr("stroke-width",2),h.attr("stroke","black"),h.style("fill","none"),i.type!==Tt.parser.yy.LINETYPE.SOLID&&i.type!==Tt.parser.yy.LINETYPE.DOTTED||h.attr("marker-end","url("+p+"#arrowhead)"),i.type!==Tt.parser.yy.LINETYPE.SOLID_CROSS&&i.type!==Tt.parser.yy.LINETYPE.DOTTED_CROSS||h.attr("marker-end","url("+p+"#crosshead)"),Ut.showSequenceNumbers&&(h.attr("marker-start","url("+p+"#sequencenumber)"),o.append("text").attr("x",e).attr("y",r+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("textLength","16px").attr("class","sequenceNumber").text(a))}(n,r,i,u,t,l);const c=e.concat(a);zt.insert(Math.min.apply(null,c),u,Math.max.apply(null,c),u)}catch(t){v.error("error while drawing message",t)}}[Tt.parser.yy.LINETYPE.SOLID_OPEN,Tt.parser.yy.LINETYPE.DOTTED_OPEN,Tt.parser.yy.LINETYPE.SOLID,Tt.parser.yy.LINETYPE.DOTTED,Tt.parser.yy.LINETYPE.SOLID_CROSS,Tt.parser.yy.LINETYPE.DOTTED_CROSS].includes(t.type)&&l++})),Ut.mirrorActors&&(zt.bumpVerticalPos(2*Ut.boxMargin),Ht(n,s,u,zt.getVerticalPos()));const h=zt.getBounds();v.debug("For line height fix Querying: #"+e+" .actor-line"),a.selectAll("#"+e+" .actor-line").attr("y2",h.stopy);let d=h.stopy-h.starty+2*Ut.diagramMarginY;Ut.mirrorActors&&(d=d-Ut.boxMargin+Ut.bottomMarginAdj);const p=h.stopx-h.startx+2*Ut.diagramMarginX;f&&n.append("text").text(f).attr("x",(h.stopx-h.startx)/2-2*Ut.diagramMarginX).attr("y",-25),Ut.useMaxWidth?(n.attr("height","100%"),n.attr("width","100%"),n.attr("style","max-width:"+p+"px;")):(n.attr("height",d),n.attr("width",p));const g=f?40:0;n.attr("viewBox",h.startx-Ut.diagramMarginX+" -"+(Ut.diagramMarginY+g)+" "+p+" "+(d+g))},Kt=n(16),Xt=n.n(Kt);const Zt=l();let Jt="",Qt="",te=[],ee="",ne=[],re=[],ie="";const ae=["active","done","crit","milestone"];let oe=[],se=!1;const ue=function(t,e,n){return t.isoWeekday()>=6&&n.indexOf("weekends")>=0||(n.indexOf(t.format("dddd").toLowerCase())>=0||n.indexOf(t.format(e.trim()))>=0)},ce=function(t,e,n){if(!n.length||t.manualEndTime)return;let r=d()(t.startTime,e,!0);r.add(1,"d");let i=d()(t.endTime,e,!0),a=fe(r,i,e,n);t.endTime=i.toDate(),t.renderEndTime=a},fe=function(t,e,n,r){let i=!1,a=null;for(;t.date()<=e.date();)i||(a=e.toDate()),(i=ue(t,n,r))&&e.add(1,"d"),t.add(1,"d");return a},le=function(t,e,n){n=n.trim();const r=/^after\s+([\d\w-]+)/.exec(n.trim());if(null!==r){const t=_e(r[1]);if(void 0===t){const t=new Date;return t.setHours(0,0,0,0),t}return t.endTime}let i=d()(n,e.trim(),!0);return i.isValid()?i.toDate():(v.debug("Invalid date:"+n),v.debug("With date format:"+e.trim()),new Date)},he=function(t,e){if(null!==t)switch(t[2]){case"s":e.add(t[1],"seconds");break;case"m":e.add(t[1],"minutes");break;case"h":e.add(t[1],"hours");break;case"d":e.add(t[1],"days");break;case"w":e.add(t[1],"weeks")}return e.toDate()},de=function(t,e,n,r){r=r||!1,n=n.trim();let i=d()(n,e.trim(),!0);return i.isValid()?(r&&i.add(1,"d"),i.toDate()):he(/^([\d]+)([wdhms])/.exec(n.trim()),d()(t))};let pe=0;const ge=function(t){return void 0===t?"task"+(pe+=1):t};let ye,be,me=[];const ve={},_e=function(t){const e=ve[t];return me[e]},we=function(){const t=function(t){const e=me[t];let n="";switch(me[t].raw.startTime.type){case"prevTaskEnd":const r=_e(e.prevTaskId);e.startTime=r.endTime;break;case"getStartDate":(n=le(0,Jt,me[t].raw.startTime.startData))&&(me[t].startTime=n)}return me[t].startTime&&(me[t].endTime=de(me[t].startTime,Jt,me[t].raw.endTime.data,se),me[t].endTime&&(me[t].processed=!0,me[t].manualEndTime=d()(me[t].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),ce(me[t],Jt,te))),me[t].processed};let e=!0;for(let n=0;n<me.length;n++)t(n),e=e&&me[n].processed;return e},xe=function(t,e){t.split(",").forEach((function(t){let n=_e(t);void 0!==n&&n.classes.push(e)}))},ke=function(t,e){oe.push((function(n){const r=document.querySelector(`[id="${t}"]`);null!==r&&r.addEventListener("click",(function(){e()}))})),oe.push((function(n){const r=document.querySelector(`[id="${t}-text"]`);null!==r&&r.addEventListener("click",(function(){e()}))}))};var Ee={clear:function(){ne=[],re=[],ie="",oe=[],ee="",pe=0,ye=void 0,be=void 0,me=[],Jt="",Qt="",te=[],se=!1},setDateFormat:function(t){Jt=t},getDateFormat:function(){return Jt},enableInclusiveEndDates:function(){se=!0},endDatesAreInclusive:function(){return se},setAxisFormat:function(t){Qt=t},getAxisFormat:function(){return Qt},setTitle:function(t){ee=t},getTitle:function(){return ee},addSection:function(t){ie=t,ne.push(t)},getSections:function(){return ne},getTasks:function(){let t=we();let e=0;for(;!t&&e<10;)t=we(),e++;return re=me},addTask:function(t,e){const n={section:ie,type:ie,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:e},task:t,classes:[]},r=function(t,e){let n;const r=(n=":"===e.substr(0,1)?e.substr(1,e.length):e).split(","),i={};Ae(r,i,ae);for(let t=0;t<r.length;t++)r[t]=r[t].trim();switch(r.length){case 1:i.id=ge(),i.startTime={type:"prevTaskEnd",id:t},i.endTime={data:r[0]};break;case 2:i.id=ge(),i.startTime={type:"getStartDate",startData:r[0]},i.endTime={data:r[1]};break;case 3:i.id=ge(r[0]),i.startTime={type:"getStartDate",startData:r[1]},i.endTime={data:r[2]}}return i}(be,e);n.raw.startTime=r.startTime,n.raw.endTime=r.endTime,n.id=r.id,n.prevTaskId=be,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone;const i=me.push(n);be=n.id,ve[n.id]=i-1},findTaskById:_e,addTaskOrg:function(t,e){const n={section:ie,type:ie,description:t,task:t,classes:[]},r=function(t,e){let n;const r=(n=":"===e.substr(0,1)?e.substr(1,e.length):e).split(","),i={};Ae(r,i,ae);for(let t=0;t<r.length;t++)r[t]=r[t].trim();let a="";switch(r.length){case 1:i.id=ge(),i.startTime=t.endTime,a=r[0];break;case 2:i.id=ge(),i.startTime=le(0,Jt,r[0]),a=r[1];break;case 3:i.id=ge(r[0]),i.startTime=le(0,Jt,r[1]),a=r[2]}return a&&(i.endTime=de(i.startTime,Jt,a,se),i.manualEndTime=d()(a,"YYYY-MM-DD",!0).isValid(),ce(i,Jt,te)),i}(ye,e);n.startTime=r.startTime,n.endTime=r.endTime,n.id=r.id,n.active=r.active,n.done=r.done,n.crit=r.crit,n.milestone=r.milestone,ye=n,re.push(n)},setExcludes:function(t){te=t.toLowerCase().split(/[\s,]+/)},getExcludes:function(){return te},setClickEvent:function(t,e,n){t.split(",").forEach((function(t){!function(t,e,n){if("loose"!==Zt.securityLevel)return;if(void 0===e)return;let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t<r.length;t++){let e=r[t].trim();'"'===e.charAt(0)&&'"'===e.charAt(e.length-1)&&(e=e.substr(1,e.length-2)),r[t]=e}}void 0!==_e(t)&&ke(t,()=>{window[e](...r)})}(t,e,n)})),xe(t,"clickable")},setLink:function(t,e){let n=e;"loose"!==Zt.securityLevel&&(n=Object(M.sanitizeUrl)(e)),t.split(",").forEach((function(t){void 0!==_e(t)&&ke(t,()=>{window.open(n,"_self")})})),xe(t,"clickable")},bindFunctions:function(t){oe.forEach((function(e){e(t)}))},durationToDate:he};function Ae(t,e,n){let r=!0;for(;r;)r=!1,n.forEach((function(n){const i=new RegExp("^\\s*"+n+"\\s*$");t[0].match(i)&&(e[n]=!0,t.shift(1),r=!0)}))}Kt.parser.yy=Ee;const Se={titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"'};let Me;var Te=function(t){Object.keys(t).forEach((function(e){Se[e]=t[e]}))},De=function(t,e){Kt.parser.yy.clear(),Kt.parser.parse(t);const n=document.getElementById(e);void 0===(Me=n.parentElement.offsetWidth)&&(Me=1200),void 0!==Se.useWidth&&(Me=Se.useWidth);const r=Kt.parser.yy.getTasks(),i=r.length*(Se.barHeight+Se.barGap)+2*Se.topPadding;n.setAttribute("height","100%"),n.setAttribute("viewBox","0 0 "+Me+" "+i);const o=a.select(`[id="${e}"]`),s=a.scaleTime().domain([a.min(r,(function(t){return t.startTime})),a.max(r,(function(t){return t.endTime}))]).rangeRound([0,Me-Se.leftPadding-Se.rightPadding]);let u=[];for(let t=0;t<r.length;t++)u.push(r[t].type);const c=u;function f(t){let e=t.length;const n={};for(;e;)n[t[--e]]=(n[t[e]]||0)+1;return n}u=function(t){const e={},n=[];for(let r=0,i=t.length;r<i;++r)e.hasOwnProperty(t[r])||(e[t[r]]=!0,n.push(t[r]));return n}(u),function(t,e,n){const r=Se.barHeight,i=r+Se.barGap,l=Se.topPadding,h=Se.leftPadding;a.scaleLinear().domain([0,u.length]).range(["#00B9FA","#F95002"]).interpolate(a.interpolateHcl);(function(t,e,n,r){let i=a.axisBottom(s).tickSize(-r+e+Se.gridLineStartPadding).tickFormat(a.timeFormat(Kt.parser.yy.getAxisFormat()||Se.axisFormat||"%Y-%m-%d"));o.append("g").attr("class","grid").attr("transform","translate("+t+", "+(r-50)+")").call(i).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em")})(h,l,0,n),function(t,e,n,r,i,a,c,f){o.append("g").selectAll("rect").data(t).enter().append("rect").attr("x",0).attr("y",(function(t,r){return r*e+n-2})).attr("width",(function(){return c-Se.rightPadding/2})).attr("height",e).attr("class",(function(t){for(let e=0;e<u.length;e++)if(t.type===u[e])return"section section"+e%Se.numberSectionStyles;return"section section0"}));const l=o.append("g").selectAll("rect").data(t).enter();l.append("rect").attr("id",(function(t){return t.id})).attr("rx",3).attr("ry",3).attr("x",(function(t){return t.milestone?s(t.startTime)+r+.5*(s(t.endTime)-s(t.startTime))-.5*i:s(t.startTime)+r})).attr("y",(function(t,r){return r*e+n})).attr("width",(function(t){return t.milestone?i:s(t.renderEndTime||t.endTime)-s(t.startTime)})).attr("height",i).attr("transform-origin",(function(t,a){return(s(t.startTime)+r+.5*(s(t.endTime)-s(t.startTime))).toString()+"px "+(a*e+n+.5*i).toString()+"px"})).attr("class",(function(t){let e="";t.classes.length>0&&(e=t.classes.join(" "));let n=0;for(let e=0;e<u.length;e++)t.type===u[e]&&(n=e%Se.numberSectionStyles);let r="";return t.active?t.crit?r+=" activeCrit":r=" active":t.done?r=t.crit?" doneCrit":" done":t.crit&&(r+=" crit"),0===r.length&&(r=" task"),t.milestone&&(r=" milestone "+r),r+=n,"task"+(r+=" "+e)})),l.append("text").attr("id",(function(t){return t.id+"-text"})).text((function(t){return t.task})).attr("font-size",Se.fontSize).attr("x",(function(t){let e=s(t.startTime),n=s(t.renderEndTime||t.endTime);t.milestone&&(e+=.5*(s(t.endTime)-s(t.startTime))-.5*i),t.milestone&&(n=e+i);const a=this.getBBox().width;return a>n-e?n+a+1.5*Se.leftPadding>c?e+r-5:n+r+5:(n-e)/2+e+r})).attr("y",(function(t,r){return r*e+Se.barHeight/2+(Se.fontSize/2-2)+n})).attr("text-height",i).attr("class",(function(t){const e=s(t.startTime);let n=s(t.endTime);t.milestone&&(n=e+i);const r=this.getBBox().width;let a="";t.classes.length>0&&(a=t.classes.join(" "));let o=0;for(let e=0;e<u.length;e++)t.type===u[e]&&(o=e%Se.numberSectionStyles);let f="";return t.active&&(f=t.crit?"activeCritText"+o:"activeText"+o),t.done?f=t.crit?f+" doneCritText"+o:f+" doneText"+o:t.crit&&(f=f+" critText"+o),t.milestone&&(f+=" milestoneText"),r>n-e?n+r+1.5*Se.leftPadding>c?a+" taskTextOutsideLeft taskTextOutside"+o+" "+f:a+" taskTextOutsideRight taskTextOutside"+o+" "+f+" width-"+r:a+" taskText taskText"+o+" "+f+" width-"+r}))}(t,i,l,h,r,0,e),function(t,e){const n=[];let r=0;for(let t=0;t<u.length;t++)n[t]=[u[t],(i=u[t],a=c,f(a)[i]||0)];var i,a;o.append("g").selectAll("text").data(n).enter().append("text").text((function(t){return t[0]})).attr("x",10).attr("y",(function(i,a){if(!(a>0))return i[1]*t/2+e;for(let o=0;o<a;o++)return r+=n[a-1][1],i[1]*t/2+r*t+e})).attr("class",(function(t){for(let e=0;e<u.length;e++)if(t[0]===u[e])return"sectionTitle sectionTitle"+e%Se.numberSectionStyles;return"sectionTitle"}))}(i,l),function(t,e,n,r){const i=o.append("g").attr("class","today"),a=new Date;i.append("line").attr("x1",s(a)+t).attr("x2",s(a)+t).attr("y1",Se.titleTopMargin).attr("y2",r-Se.titleTopMargin).attr("class","today")}(h,0,0,n)}(r,Me,i),void 0!==Se.useWidth&&n.setAttribute("width",Me),o.append("text").text(Kt.parser.yy.getTitle()).attr("x",Me/2).attr("y",Se.titleTopMargin).attr("class","titleText")},Ce=n(32),Oe=n.n(Ce);let Re=[],Ne={};const Ie=function(t){void 0===Ne[t]&&(Ne[t]={id:t,methods:[],members:[],annotations:[]})},Be=function(t,e){const n=Ne[t];if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?n.annotations.push(t.substring(2,t.length-2)):t.endsWith(")")?n.methods.push(t):t&&n.members.push(t)}};var Le={addClass:Ie,clear:function(){Re=[],Ne={}},getClass:function(t){return Ne[t]},getClasses:function(){return Ne},addAnnotation:function(t,e){Ne[t].annotations.push(e)},getRelations:function(){return Re},addRelation:function(t){v.debug("Adding relation: "+JSON.stringify(t)),Ie(t.id1),Ie(t.id2),Re.push(t)},addMember:Be,addMembers:function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach(e=>Be(t,e)))},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}},Pe=n(24),Fe=n.n(Pe);Pe.parser.yy=Le;const qe={};let je=0;const Ue={dividerMargin:10,padding:5,textHeight:10},ze=function(t){const e=Object.keys(qe);for(let n=0;n<e.length;n++)if(qe[e[n]].label===t)return e[n]};let Ye=0,He=0;const Ve=function(t,e){v.info("Rendering class "+e);const n=function(t,e,n){const r=t.append("tspan").attr("x",Ue.padding).text(e);n||r.attr("dy",Ue.textHeight)},r="classId"+je%He,i={id:r,label:e.id,width:0,height:0},a=t.append("g").attr("id",r).attr("class","classGroup"),o=a.append("text").attr("y",Ue.textHeight+Ue.padding).attr("x",0);let s=!0;e.annotations.forEach((function(t){const e=o.append("tspan").text("«"+t+"»");s||e.attr("dy",Ue.textHeight),s=!1})),console.warn("classDef.id",e.id),console.warn("isFirst",s);const u=o.append("tspan").text(e.id).attr("class","title");s||u.attr("dy",Ue.textHeight);const c=o.node().getBBox().height,f=a.append("line").attr("x1",0).attr("y1",Ue.padding+c+Ue.dividerMargin/2).attr("y2",Ue.padding+c+Ue.dividerMargin/2),l=a.append("text").attr("x",Ue.padding).attr("y",c+Ue.dividerMargin+Ue.textHeight).attr("fill","white").attr("class","classText");console.warn(e.id,c,Ue.dividerMargin,Ue.textHeight),s=!0,e.members.forEach((function(t){n(l,t,s),s=!1}));const h=l.node().getBBox(),d=a.append("line").attr("x1",0).attr("y1",Ue.padding+c+Ue.dividerMargin+h.height).attr("y2",Ue.padding+c+Ue.dividerMargin+h.height),p=a.append("text").attr("x",Ue.padding).attr("y",c+2*Ue.dividerMargin+h.height+Ue.textHeight).attr("fill","white").attr("class","classText");s=!0,e.methods.forEach((function(t){n(p,t,s),s=!1}));const g=a.node().getBBox(),y=a.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",g.width+2*Ue.padding).attr("height",g.height+Ue.padding+.5*Ue.dividerMargin).node().getBBox().width;return o.node().childNodes.forEach((function(t){t.setAttribute("x",(y-t.getBBox().width)/2)})),f.attr("x2",y),d.attr("x2",y),i.width=y,i.height=g.height+Ue.padding+.5*Ue.dividerMargin,qe[r]=i,je++,i};var $e=function(t){Object.keys(t).forEach((function(e){Ue[e]=t[e]}))},Ge=function(t,e){Pe.parser.yy.clear(),Pe.parser.parse(t),v.info("Rendering diagram "+t);const n=a.select(`[id='${e}']`);var r;(r=n).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"),r.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"),r.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"),r.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"),r.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"),r.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"),r.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"),r.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");const i=new S.a.Graph({multigraph:!0});i.setGraph({isMultiGraph:!0}),i.setDefaultEdgeLabel((function(){return{}}));const o=Le.getClasses(),s=Object.keys(o);He=s.length;for(let t=0;t<s.length;t++){const e=o[s[t]],r=Ve(n,e);i.setNode(r.id,r),v.info("Org height: "+r.height)}Le.getRelations().forEach((function(t){v.info("tjoho"+ze(t.id1)+ze(t.id2)+JSON.stringify(t)),i.setEdge(ze(t.id1),ze(t.id2),{relation:t})})),Oe.a.layout(i),i.nodes().forEach((function(t){void 0!==t&&void 0!==i.node(t)&&(v.debug("Node "+t+": "+JSON.stringify(i.node(t))),a.select("#"+t).attr("transform","translate("+(i.node(t).x-i.node(t).width/2)+","+(i.node(t).y-i.node(t).height/2)+" )"))})),i.edges().forEach((function(t){void 0!==t&&void 0!==i.edge(t)&&(v.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(i.edge(t))),function(t,e,n){const r=function(t){switch(t){case Le.relationType.AGGREGATION:return"aggregation";case Le.relationType.EXTENSION:return"extension";case Le.relationType.COMPOSITION:return"composition";case Le.relationType.DEPENDENCY:return"dependency"}};e.points=e.points.filter(t=>!Number.isNaN(t.y));const i=e.points,o=a.line().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),s=t.append("path").attr("d",o(i)).attr("id","edge"+Ye).attr("class","relation");let u,c,f="";Ue.arrowMarkerAbsolute&&(f=(f=(f=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),"none"!==n.relation.type1&&s.attr("marker-start","url("+f+"#"+r(n.relation.type1)+"Start)"),"none"!==n.relation.type2&&s.attr("marker-end","url("+f+"#"+r(n.relation.type2)+"End)");const l=e.points.length;let h=E.calcLabelPosition(e.points);u=h.x,c=h.y;let d,p,g,y;Ue.padding,Ue.padding,Ue.padding,Ue.padding;if(l%2!=0&&l>1){let t=E.calcCardinalityPosition("none"!==n.relation.type1,e.points,e.points[0]),r=E.calcCardinalityPosition("none"!==n.relation.type2,e.points,e.points[l-1]);v.debug("cardinality_1_point "+JSON.stringify(t)),v.debug("cardinality_2_point "+JSON.stringify(r)),d=t.x,p=t.y,g=r.x,y=r.y}if(void 0!==n.title){const e=t.append("g").attr("class","classLabel"),r=e.append("text").attr("class","label").attr("x",u).attr("y",c).attr("fill","red").attr("text-anchor","middle").text(n.title);window.label=r;const i=r.node().getBBox();e.insert("rect",":first-child").attr("class","box").attr("x",i.x-Ue.padding/2).attr("y",i.y-Ue.padding/2).attr("width",i.width+Ue.padding).attr("height",i.height+Ue.padding)}if(v.info("Rendering relation "+JSON.stringify(n)),void 0!==n.relationTitle1&&"none"!==n.relationTitle1){t.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",d).attr("y",p).attr("fill","black").attr("font-size","6").text(n.relationTitle1)}if(void 0!==n.relationTitle2&&"none"!==n.relationTitle2){t.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",g).attr("y",y).attr("fill","black").attr("font-size","6").text(n.relationTitle2)}Ye++}(n,i.edge(t),i.edge(t).relation))})),n.attr("height","100%"),n.attr("width",`${1.5*i.graph().width+20}`),n.attr("viewBox","-10 -10 "+(i.graph().width+20)+" "+(i.graph().height+20))};let We=[];let Ke={root:{relations:[],states:{},documents:{}}},Xe=Ke.root,Ze=0;const Je=function(t,e,n,r,i){void 0===Xe.states[t]?Xe.states[t]={id:t,descriptions:[],type:e,doc:n,note:i}:(Xe.states[t].doc||(Xe.states[t].doc=n),Xe.states[t].type||(Xe.states[t].type=e)),r&&en(t,r.trim()),i&&(Xe.states[t].note=i)},Qe=function(){Xe=(Ke={root:{relations:[],states:{},documents:{}}}).root},tn=function(t,e,n){let r=t,i=e,a="default",o="default";"[*]"===t&&(r="start"+ ++Ze,a="start"),"[*]"===e&&(i="end"+Ze,o="end"),Je(r,a),Je(i,o),Xe.relations.push({id1:r,id2:i,title:n})},en=function(t,e){const n=Xe.states[t];let r=e;":"===r[0]&&(r=r.substr(1).trim()),n.descriptions.push(r)};let nn=0;var rn={addState:Je,clear:Qe,getState:function(t){return Xe.states[t]},getStates:function(){return Xe.states},getRelations:function(){return Xe.relations},addRelation:tn,getDividerId:()=>"divider-id-"+ ++nn,cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){v.info("Documents = ",Ke)},getRootDoc:()=>We,setRootDoc:t=>{v.info("Setting root doc",t),We=t},extract:t=>{Qe(),t.forEach(t=>{"state"===t.stmt&&Je(t.id,t.type,t.doc,t.description,t.note),"relation"===t.stmt&&tn(t.state1.id,t.state2.id,t.description)})}},an=n(25),on=n.n(an);const sn={};var un=(t,e)=>{sn[t]=e};const cn=(t,e)=>{const n=t.append("text").attr("x",2*l().state.padding).attr("y",l().state.textHeight+1.5*l().state.padding).attr("font-size",l().state.fontSize).attr("class","state-title").text(e.id).node().getBBox(),r=n.height,i=t.append("text").attr("x",l().state.padding).attr("y",r+.2*l().state.padding+l().state.dividerMargin+l().state.textHeight).attr("class","state-description");let a=!0;e.descriptions.forEach((function(t){!function(t,e,n){const r=t.append("tspan").attr("x",2*l().state.padding).text(e);n||r.attr("dy",l().state.textHeight)}(i,t,a),a=!1}));const o=t.append("line").attr("x1",l().state.padding).attr("y1",l().state.padding+r+l().state.dividerMargin/2).attr("y2",l().state.padding+r+l().state.dividerMargin/2).attr("class","descr-divider"),s=i.node().getBBox();console.warn(s.width,n.width);const u=Math.max(s.width,n.width);return o.attr("x2",u+3*l().state.padding),t.insert("rect",":first-child").attr("x",l().state.padding).attr("y",l().state.padding).attr("width",u+2*l().state.padding).attr("height",s.height+r+2*l().state.padding).attr("rx",l().state.radius),t},fn=(t,e)=>{const n=t.append("text").attr("x",2*l().state.padding).attr("y",l().state.titleShift).attr("font-size",l().state.fontSize).attr("class","state-title").text(e.id),r=(n.node().getBBox().height,1-l().state.textHeight),i=t.append("line").attr("x1",0).attr("y1",r).attr("y2",r).attr("class","descr-divider"),a=t.node().getBBox();return n.attr("x",a.width/2-n.node().getBBox().width/2),i.attr("x2",a.width+l().state.padding),t.insert("rect",":first-child").attr("x",a.x).attr("y",r).attr("class","composit").attr("width",a.width+l().state.padding).attr("height",a.height+l().state.textHeight+l().state.titleShift+1).attr("rx","0"),t.insert("rect",":first-child").attr("x",a.x).attr("y",l().state.titleShift-l().state.textHeight-l().state.padding).attr("width",a.width+l().state.padding).attr("height",3*l().state.textHeight).attr("rx",l().state.radius),t.insert("rect",":first-child").attr("x",a.x).attr("y",l().state.titleShift-l().state.textHeight-l().state.padding).attr("width",a.width+l().state.padding).attr("height",a.height+3+2*l().state.textHeight).attr("rx",l().state.radius),t},ln=(t,e)=>{e.attr("class","state-note");const n=e.append("rect").attr("x",0).attr("y",l().state.padding),r=e.append("g"),{textWidth:i,textHeight:a}=((t,e,n,r)=>{let i=0;const a=r.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let o=t.replace(/\r\n/g,"<br/>");const s=(o=o.replace(/\n/g,"<br/>")).split(/<br\/?>/gi);for(const t of s){const r=t.trim();if(r.length>0){const t=a.append("tspan");t.text(r),i+=t.node().getBBox().height,t.attr("x",e+l().state.noteMargin),t.attr("y",n+i+1.25*l().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}})(t,0,0,r);return n.attr("height",a+2*l().state.noteMargin),n.attr("width",i+2*l().state.noteMargin),n};const hn=function(t,e,n,r){const i=e.id,a={id:i,label:e.id,width:0,height:0},o=t.append("g").attr("id",i).attr("class","stateGroup");"start"===e.type&&(t=>t.append("circle").style("stroke","black").style("fill","black").attr("r",l().state.sizeUnit).attr("cx",l().state.padding+l().state.sizeUnit).attr("cy",l().state.padding+l().state.sizeUnit))(o),"end"===e.type&&(t=>(t.append("circle").style("stroke","black").style("fill","white").attr("r",l().state.sizeUnit+l().state.miniPadding).attr("cx",l().state.padding+l().state.sizeUnit+l().state.miniPadding).attr("cy",l().state.padding+l().state.sizeUnit+l().state.miniPadding),t.append("circle").style("stroke","black").style("fill","black").attr("r",l().state.sizeUnit).attr("cx",l().state.padding+l().state.sizeUnit+2).attr("cy",l().state.padding+l().state.sizeUnit+2)))(o),"fork"!==e.type&&"join"!==e.type||((t,e)=>{let n=l().state.forkWidth,r=l().state.forkHeight;if(e.parentId){let t=n;n=r,r=t}t.append("rect").style("stroke","black").style("fill","black").attr("width",n).attr("height",r).attr("x",l().state.padding).attr("y",l().state.padding)})(o,e),"note"===e.type&&ln(e.note.text,o),"divider"===e.type&&(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",l().state.textHeight).attr("class","divider").attr("x2",2*l().state.textHeight).attr("y1",0).attr("y2",0))(o),"default"===e.type&&0===e.descriptions.length&&((t,e)=>{const n=t.append("text").attr("x",2*l().state.padding).attr("y",l().state.textHeight+2*l().state.padding).attr("font-size",l().state.fontSize).attr("class","state-title").text(e.id),r=n.node().getBBox();t.insert("rect",":first-child").attr("x",l().state.padding).attr("y",l().state.padding).attr("width",r.width+2*l().state.padding).attr("height",r.height+2*l().state.padding).attr("rx",l().state.radius)})(o,e),"default"===e.type&&e.descriptions.length>0&&cn(o,e);const s=o.node().getBBox();return a.width=s.width+2*l().state.padding,a.height=s.height+2*l().state.padding,un(i,a),a};let dn=0;an.parser.yy=rn;let pn,gn=0;const yn={},bn=t=>t?t.length*pn.fontSizeFactor:1,mn=(t,e,n)=>{const r=new S.a.Graph({compound:!0});n?r.setGraph({rankdir:"LR",compound:!0,rankdir:"LR",ranker:"tight-tree",ranksep:pn.edgeLengthFactor}):r.setGraph({rankdir:"TB",compound:!0,ranksep:pn.edgeLengthFactor,ranker:"tight-tree"}),r.setDefaultEdgeLabel((function(){return{}})),rn.extract(t);const i=rn.getStates(),o=rn.getRelations(),s=Object.keys(i);gn=s.length;for(let t=0;t<s.length;t++){const a=i[s[t]];let o;if(n&&(a.parentId=n),a.doc){let t=e.append("g").attr("id",a.id).attr("class","stateGroup");o=mn(a.doc,t,a.id);{let e=(t=fn(t,a)).node().getBBox();o.width=e.width,o.height=e.height+2*pn.padding,yn[a.id]={y:pn.compositTitleSize}}}else o=hn(e,a);if(a.note){const t={descriptions:[],id:a.id+"-note",note:a.note,type:"note"},n=hn(e,t);"left of"===a.note.position?(r.setNode(o.id+"-note",n),r.setNode(o.id,o)):(r.setNode(o.id,o),r.setNode(o.id+"-note",n)),r.setParent(o.id,o.id+"-group"),r.setParent(o.id+"-note",o.id+"-group")}else r.setNode(o.id,o)}v.info("Count=",r.nodeCount()),o.forEach((function(t){r.setEdge(t.id1,t.id2,{relation:t,width:bn(t.title),height:pn.labelHeight,labelpos:"c"})})),Oe.a.layout(r),v.debug("Graph after layout",r.nodes());const u=e.node();r.nodes().forEach((function(t){if(void 0!==t&&void 0!==r.node(t)){v.warn("Node "+t+": "+JSON.stringify(r.node(t))),a.select("#"+u.id+" #"+t).attr("transform","translate("+(r.node(t).x-r.node(t).width/2)+","+(r.node(t).y+(yn[t]?yn[t].y:0)-r.node(t).height/2)+" )"),a.select("#"+u.id+" #"+t).attr("data-x-shift",r.node(t).x-r.node(t).width/2),document.querySelectorAll("#"+u.id+" #"+t+" .divider").forEach(t=>{const e=t.parentElement;let n=0,r=0;e&&(e.parentElement&&(n=e.parentElement.getBBox().width),r=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(r)&&(r=0)),t.setAttribute("x1",0-r),t.setAttribute("x2",n-r)})}else v.debug("No Node "+t+": "+JSON.stringify(r.node(t)))}));let c=u.getBBox();r.edges().forEach((function(t){void 0!==t&&void 0!==r.edge(t)&&(v.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(r.edge(t))),function(t,e,n){e.points=e.points.filter(t=>!Number.isNaN(t.y));const r=e.points,i=a.line().x((function(t){return t.x})).y((function(t){return t.y})).curve(a.curveBasis),o=t.append("path").attr("d",i(r)).attr("id","edge"+dn).attr("class","transition");let s="";if(l().state.arrowMarkerAbsolute&&(s=(s=(s=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),o.attr("marker-end","url("+s+"#"+function(t){switch(t){case rn.relationType.AGGREGATION:return"aggregation";case rn.relationType.EXTENSION:return"extension";case rn.relationType.COMPOSITION:return"composition";case rn.relationType.DEPENDENCY:return"dependency"}}(rn.relationType.DEPENDENCY)+"End)"),void 0!==n.title){const r=t.append("g").attr("class","stateLabel"),i=r.append("text").attr("text-anchor","middle").text(n.title),{x:a,y:o}=E.calcLabelPosition(e.points);i.attr("x",a).attr("y",o);const s=i.node().getBBox();r.insert("rect",":first-child").attr("class","box").attr("x",s.x-l().state.padding/2).attr("y",s.y-l().state.padding/2).attr("width",s.width+l().state.padding).attr("height",s.height+l().state.padding)}dn++}(e,r.edge(t),r.edge(t).relation))})),c=u.getBBox(),console.warn("Diagram node",u.id);const f={id:n||"root",label:n||"root",width:0,height:0};return f.width=c.width+2*pn.padding,f.height=c.height+2*pn.padding,v.info("Doc rendered",f,r),f};var vn=function(t){},_n=function(t,e){pn=l().state,an.parser.yy.clear(),an.parser.parse(t),v.debug("Rendering diagram "+t);const n=a.select(`[id='${e}']`);n.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"),new S.a.Graph({multigraph:!1,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));const r=rn.getRootDoc(),i=(mn(r,n),n.node().getBBox());n.attr("height","100%"),n.attr("style",`width: ${3*i.width+2*pn.padding};`),n.attr("viewBox",`${-1*pn.padding} ${-1*pn.padding} `+(1.5*i.width+2*pn.padding)+" "+(i.height+5*pn.padding))},wn=n(106),xn=n.n(wn);let kn={},En=null,An={master:En},Sn="master",Mn="LR",Tn=0;function Dn(){return xn()({length:7,characters:"0123456789abcdef"})}function Cn(t,e){for(v.debug("Entering isfastforwardable:",t.id,e.id);t.seq<=e.seq&&t!==e&&null!=e.parent;){if(Array.isArray(e.parent))return v.debug("In merge commit:",e.parent),Cn(t,kn[e.parent[0]])||Cn(t,kn[e.parent[1]]);e=kn[e.parent]}return v.debug(t.id,e.id),t.id===e.id}let On={};function Rn(t,e,n){const r=t.indexOf(e);-1===r?t.push(n):t.splice(r,1,n)}const Nn=function(){const t=Object.keys(kn).map((function(t){return kn[t]}));return t.forEach((function(t){v.debug(t.id)})),Q.a.orderBy(t,["seq"],["desc"])};var In={setDirection:function(t){Mn=t},setOptions:function(t){v.debug("options str",t),t=(t=t&&t.trim())||"{}";try{On=JSON.parse(t)}catch(t){v.error("error while parsing gitGraph options",t.message)}},getOptions:function(){return On},commit:function(t){const e={id:Dn(),message:t,seq:Tn++,parent:null==En?null:En.id};En=e,kn[e.id]=e,An[Sn]=e.id,v.debug("in pushCommit "+e.id)},branch:function(t){An[t]=null!=En?En.id:null,v.debug("in createBranch")},merge:function(t){const e=kn[An[Sn]],n=kn[An[t]];if(function(t,e){return t.seq>e.seq&&Cn(e,t)}(e,n))v.debug("Already merged");else{if(Cn(e,n))An[Sn]=An[t],En=kn[An[Sn]];else{const e={id:Dn(),message:"merged branch "+t+" into "+Sn,seq:Tn++,parent:[null==En?null:En.id,An[t]]};En=e,kn[e.id]=e,An[Sn]=e.id}v.debug(An),v.debug("in mergeBranch")}},checkout:function(t){v.debug("in checkout");const e=An[Sn=t];En=kn[e]},reset:function(t){v.debug("in reset",t);const e=t.split(":")[0];let n=parseInt(t.split(":")[1]),r="HEAD"===e?En:kn[An[e]];for(v.debug(r,n);n>0;)if(n--,!(r=kn[r.parent])){const t="Critical error - unique parent commit not found during reset";throw v.error(t),t}En=r,An[Sn]=r.id},prettyPrint:function(){v.debug(kn),function t(e){const n=Q.a.maxBy(e,"seq");let r="";e.forEach((function(t){r+=t===n?"\t*":"\t|"}));const i=[r,n.id,n.seq];for(let t in An)An[t]===n.id&&i.push(t);if(v.debug(i.join(" ")),Array.isArray(n.parent)){const t=kn[n.parent[0]];Rn(e,n,t),e.push(kn[n.parent[1]])}else{if(null==n.parent)return;{const t=kn[n.parent];Rn(e,n,t)}}t(e=Q.a.uniqBy(e,"id"))}([Nn()[0]])},clear:function(){kn={},An={master:En=null},Sn="master",Tn=0},getBranchesAsObjArray:function(){const t=[];for(let e in An)t.push({name:e,commit:kn[An[e]]});return t},getBranches:function(){return An},getCommits:function(){return kn},getCommitsArray:Nn,getCurrentBranch:function(){return Sn},getDirection:function(){return Mn},getHead:function(){return En}},Bn=n(42),Ln=n.n(Bn);let Pn,Fn={},qn={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}},jn={};function Un(t,e,n,r){const i=x(r,a.curveBasis),o=qn.branchColors[n%qn.branchColors.length],s=a.line().x((function(t){return Math.round(t.x)})).y((function(t){return Math.round(t.y)})).curve(i);t.append("svg:path").attr("d",s(e)).style("stroke",o).style("stroke-width",qn.lineStrokeWidth).style("fill","none")}function zn(t,e){e=e||t.node().getBBox();const n=t.node().getCTM();return{left:n.e+e.x*n.a,top:n.f+e.y*n.d,width:e.width,height:e.height}}function Yn(t,e,n,r,i){v.debug("svgDrawLineForCommits: ",e,n);const a=zn(t.select("#node-"+e+" circle")),o=zn(t.select("#node-"+n+" circle"));switch(r){case"LR":if(a.left-o.left>qn.nodeSpacing){const e={x:a.left-qn.nodeSpacing,y:o.top+o.height/2};Un(t,[e,{x:o.left+o.width,y:o.top+o.height/2}],i,"linear"),Un(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-qn.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-qn.nodeSpacing/2,y:e.y},e],i)}else Un(t,[{x:a.left,y:a.top+a.height/2},{x:a.left-qn.nodeSpacing/2,y:a.top+a.height/2},{x:a.left-qn.nodeSpacing/2,y:o.top+o.height/2},{x:o.left+o.width,y:o.top+o.height/2}],i);break;case"BT":if(o.top-a.top>qn.nodeSpacing){const e={x:o.left+o.width/2,y:a.top+a.height+qn.nodeSpacing};Un(t,[e,{x:o.left+o.width/2,y:o.top}],i,"linear"),Un(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+a.height+qn.nodeSpacing/2},{x:o.left+o.width/2,y:e.y-qn.nodeSpacing/2},e],i)}else Un(t,[{x:a.left+a.width/2,y:a.top+a.height},{x:a.left+a.width/2,y:a.top+qn.nodeSpacing/2},{x:o.left+o.width/2,y:o.top-qn.nodeSpacing/2},{x:o.left+o.width/2,y:o.top}],i)}}function Hn(t,e){return t.select(e).node().cloneNode(!0)}function Vn(t,e,n,r){let i;const a=Object.keys(Fn).length;if("string"==typeof e)do{if(i=Fn[e],v.debug("in renderCommitHistory",i.id,i.seq),t.select("#node-"+e).size()>0)return;let o;t.append((function(){return Hn(t,"#def-commit")})).attr("class","commit").attr("id",(function(){return"node-"+i.id})).attr("transform",(function(){switch(r){case"LR":return"translate("+(i.seq*qn.nodeSpacing+qn.leftMargin)+", "+Pn*qn.branchOffset+")";case"BT":return"translate("+(Pn*qn.branchOffset+qn.leftMargin)+", "+(a-i.seq)*qn.nodeSpacing+")"}})).attr("fill",qn.nodeFillColor).attr("stroke",qn.nodeStrokeColor).attr("stroke-width",qn.nodeStrokeWidth);for(let t in n)if(n[t].commit===i){o=n[t];break}o&&(v.debug("found branch ",o.name),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","branch-label").text(o.name+", ")),t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-id").text(i.id),""!==i.message&&"BT"===r&&t.select("#node-"+i.id+" p").append("xhtml:span").attr("class","commit-msg").text(", "+i.message),e=i.parent}while(e&&Fn[e]);Array.isArray(e)&&(v.debug("found merge commmit",e),Vn(t,e[0],n,r),Pn++,Vn(t,e[1],n,r),Pn--)}function $n(t,e,n,r){for(r=r||0;e.seq>0&&!e.lineDrawn;)"string"==typeof e.parent?(Yn(t,e.id,e.parent,n,r),e.lineDrawn=!0,e=Fn[e.parent]):Array.isArray(e.parent)&&(Yn(t,e.id,e.parent[0],n,r),Yn(t,e.id,e.parent[1],n,r+1),$n(t,Fn[e.parent[1]],n,r+1),e.lineDrawn=!0,e=Fn[e.parent[0]])}var Gn=function(t){jn=t},Wn=function(t,e,n){try{const r=Ln.a.parser;r.yy=In,v.debug("in gitgraph renderer",t+"\n","id:",e,n),r.parse(t+"\n"),qn=Q.a.assign(qn,jn,In.getOptions()),v.debug("effective options",qn);const i=In.getDirection();Fn=In.getCommits();const o=In.getBranchesAsObjArray();"BT"===i&&(qn.nodeLabel.x=o.length*qn.branchOffset,qn.nodeLabel.width="100%",qn.nodeLabel.y=-2*qn.nodeRadius);const s=a.select(`[id="${e}"]`);!function(t){t.append("defs").append("g").attr("id","def-commit").append("circle").attr("r",qn.nodeRadius).attr("cx",0).attr("cy",0),t.select("#def-commit").append("foreignObject").attr("width",qn.nodeLabel.width).attr("height",qn.nodeLabel.height).attr("x",qn.nodeLabel.x).attr("y",qn.nodeLabel.y).attr("class","node-label").attr("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility").append("p").html("")}(s),Pn=1;for(let t in o){const e=o[t];Vn(s,e.commit.id,o,i),$n(s,e.commit,i),Pn++}s.attr("height",(function(){return"BT"===i?Object.keys(Fn).length*qn.nodeSpacing:(o.length+1)*qn.branchOffset}))}catch(t){v.error("Error while rendering gitgraph"),v.error(t.message)}},Kn="",Xn=!1;var Zn={setMessage:t=>{v.debug("Setting message to: "+t),Kn=t},getMessage:()=>Kn,setInfo:t=>{Xn=t},getInfo:()=>Xn},Jn=n(43),Qn=n.n(Jn);const tr={};var er=function(t){Object.keys(t).forEach((function(e){tr[e]=t[e]}))},nr=(t,e,n)=>{try{const r=Qn.a.parser;r.yy=Zn,v.debug("Renering info diagram\n"+t),r.parse(t),v.debug("Parsed info diagram");const i=a.select("#"+e);i.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+n),i.attr("height",100),i.attr("width",400)}catch(t){v.error("Error while rendering info diagram"),v.error(t.message)}};let rr={},ir="";var ar={addSection:function(t,e){void 0===rr[t]&&(rr[t]=e,v.debug("Added new section :",t))},getSections:()=>rr,cleanupValue:function(t){return":"===t.substring(0,1)?(t=t.substring(1).trim(),Number(t.trim())):Number(t.trim())},clear:function(){rr={},ir=""},setTitle:function(t){ir=t},getTitle:function(){return ir}},or=n(44),sr=n.n(or);const ur={};let cr;var fr=function(t){Object.keys(t).forEach((function(e){ur[e]=t[e]}))},lr=(t,e,n)=>{try{const n=sr.a.parser;n.yy=ar,v.debug("Rendering info diagram\n"+t),n.yy.clear(),n.parse(t),v.debug("Parsed info diagram");const l=document.getElementById(e);void 0===(cr=l.parentElement.offsetWidth)&&(cr=1200),void 0!==ur.useWidth&&(cr=ur.useWidth);const h=450;l.setAttribute("height","100%"),l.setAttribute("viewBox","0 0 "+cr+" "+h);var r=cr,i=Math.min(r,450)/2-40,o=a.select("#"+e).append("svg").attr("width",r).attr("height",450).append("g").attr("transform","translate("+r/2+",225)"),s=ar.getSections();v.info(s);var u=a.scaleOrdinal().domain(s).range(a.schemeSet2),c=a.pie().value((function(t){return t.value}))(a.entries(s)),f=a.arc().innerRadius(0).outerRadius(i);o.selectAll("mySlices").data(c).enter().append("path").attr("d",f).attr("fill",(function(t){return u(t.data.key)})).attr("stroke","black").style("stroke-width","2px").style("opacity",.7),o.selectAll("mySlices").data(c).enter().append("text").text((function(t){return t.data.key})).attr("transform",(function(t){return"translate("+f.centroid(t)+")"})).style("text-anchor","middle").attr("class","slice").style("font-size",17),o.append("text").text(n.yy.getTitle()).attr("x",0).attr("y",-(h-50)/2).attr("class","pieTitleText")}catch(t){v.error("Error while rendering info diagram"),v.error(t.message)}};const hr={};for(const t of["default","forest","dark","neutral"])hr[t]=n(204)(`./${t}/index.scss`);const dr={theme:"default",themeCSS:void 0,fontFamily:'"trebuchet ms", verdana, arial;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!0,curve:"linear"},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},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"},class:{},git:{},state:{dividerMargin:10,sizeUnit:5,padding:5,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,padding:5,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5}};_(dr.logLevel),f(dr);const pr=function(t){const e=Object.keys(t);for(let n=0;n<e.length;n++)if("object"==typeof t[e[n]]&&null!=t[e[n]]){const r=Object.keys(t[e[n]]);for(let i=0;i<r.length;i++)v.debug("Setting conf ",e[n],"-",r[i]),void 0===dr[e[n]]&&(dr[e[n]]={}),v.debug("Setting config: "+e[n]+" "+r[i]+" to "+t[e[n]][r[i]]),dr[e[n]][r[i]]=t[e[n]][r[i]]}else dr[e[n]]=t[e[n]]};var gr={render:function(t,e,n,r){if(void 0!==r)r.innerHTML="",a.select(r).append("div").attr("id","d"+t).attr("style","font-family: "+dr.fontFamily).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g");else{const e=document.getElementById(t);e&&e.remove();const n=document.querySelector("#d"+t);n&&(n.innerHTML=""),a.select("body").append("div").attr("id","d"+t).append("svg").attr("id",t).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}window.txt=e,e=function(t){let e=t;return e=(e=(e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)}))).replace(/#\w+;/g,(function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"ﬂ°°"+e+"¶ß":"ﬂ°"+e+"¶ß"}))}(e);const i=a.select("#d"+t).node(),o=E.detectType(e),c=i.firstChild,f=c.firstChild;let l=hr[dr.theme];if(void 0===l&&(l=""),void 0!==dr.themeCSS&&(l+=`\n${dr.themeCSS}`),void 0!==dr.fontFamily&&(l+=`\n:root { --mermaid-font-family: ${dr.fontFamily}}`),void 0!==dr.altFontFamily&&(l+=`\n:root { --mermaid-alt-font-family: ${dr.altFontFamily}}`),"flowchart"===o){const t=mt(e);for(const e in t)l+=`\n.${e} > * { ${t[e].styles.join(" !important; ")} !important; }`}const h=document.createElement("style");h.innerHTML=s()(l,`#${t}`),c.insertBefore(h,f);const d=document.createElement("style"),p=window.getComputedStyle(c);switch(d.innerHTML=`#${t} {\n    color: ${p.color};\n    font: ${p.font};\n  }`,c.insertBefore(d,f),o){case"git":dr.flowchart.arrowMarkerAbsolute=dr.arrowMarkerAbsolute,Gn(dr.git),Wn(e,t,!1);break;case"flowchart":dr.flowchart.arrowMarkerAbsolute=dr.arrowMarkerAbsolute,bt(dr.flowchart),vt(e,t,!1);break;case"sequence":dr.sequence.arrowMarkerAbsolute=dr.arrowMarkerAbsolute,dr.sequenceDiagram?(Gt(Object.assign(dr.sequence,dr.sequenceDiagram)),console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")):Gt(dr.sequence),Wt(e,t);break;case"gantt":dr.gantt.arrowMarkerAbsolute=dr.arrowMarkerAbsolute,Te(dr.gantt),De(e,t);break;case"class":dr.class.arrowMarkerAbsolute=dr.arrowMarkerAbsolute,$e(dr.class),Ge(e,t);break;case"state":vn(dr.state),_n(e,t);break;case"info":dr.class.arrowMarkerAbsolute=dr.arrowMarkerAbsolute,er(dr.class),nr(e,t,u.version);break;case"pie":dr.class.arrowMarkerAbsolute=dr.arrowMarkerAbsolute,fr(dr.class),lr(e,t,u.version)}a.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let g="";dr.arrowMarkerAbsolute&&(g=(g=(g=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)"));let y=a.select("#d"+t).node().innerHTML.replace(/url\(#arrowhead/g,"url("+g+"#arrowhead","g");if(y=function(t){let e=t;return e=(e=(e=e.replace(/ﬂ°°/g,(function(){return"&#"}))).replace(/ﬂ°/g,(function(){return"&"}))).replace(/¶ß/g,(function(){return";"}))}(y),void 0!==n)switch(o){case"flowchart":n(y,G.bindFunctions);break;case"gantt":n(y,Ee.bindFunctions);break;default:n(y)}else v.debug("CB = undefined!");const b=a.select("#d"+t).node();return null!==b&&"function"==typeof b.remove&&a.select("#d"+t).node().remove(),y},parse:function(t){const e=E.detectType(t);let n;switch(v.debug("Type "+e),e){case"git":(n=Ln.a).parser.yy=In;break;case"flowchart":G.clear(),(n=K.a).parser.yy=G;break;case"sequence":(n=Dt.a).parser.yy=jt;break;case"gantt":(n=Xt.a).parser.yy=Ee;break;case"class":(n=Fe.a).parser.yy=Le;break;case"state":(n=on.a).parser.yy=rn;break;case"info":v.debug("info info info"),console.warn("In API",u.version),(n=Qn.a).parser.yy=Zn;break;case"pie":v.debug("pie"),(n=sr.a).parser.yy=ar}n.parser.yy.parseError=(t,e)=>{throw{str:t,hash:e}},n.parse(t)},initialize:function(t){v.debug("Initializing mermaidAPI ",u.version),"object"==typeof t&&pr(t),f(dr),_(dr.logLevel)},getConfig:l};const yr=function(){let t;br.startOnLoad?(t=gr.getConfig()).startOnLoad&&br.init():void 0===br.startOnLoad&&(v.debug("In start, no config"),(t=gr.getConfig()).startOnLoad&&br.init())};"undefined"!=typeof document&&
+/*!
+   * Wait for document loaded before starting the execution
+   */
+window.addEventListener("load",(function(){yr()}),!1);const br={startOnLoad:!0,htmlLabels:!0,mermaidAPI:gr,parse:gr.parse,render:gr.render,init:function(){const t=gr.getConfig();let e,n,r;v.debug("Starting rendering diagrams"),arguments.length>=2?(
+/*! sequence config was passed as #1 */
+void 0!==arguments[0]&&(br.sequenceConfig=arguments[0]),e=arguments[1]):e=arguments[0],"function"==typeof arguments[arguments.length-1]?(n=arguments[arguments.length-1],v.debug("Callback function found")):void 0!==t.mermaid&&("function"==typeof t.mermaid.callback?(n=t.mermaid.callback,v.debug("Callback function found")):v.debug("No Callback function found")),e=void 0===e?document.querySelectorAll(".mermaid"):"string"==typeof e?document.querySelectorAll(e):e instanceof window.Node?[e]:e,v.debug("Start On Load before: "+br.startOnLoad),void 0!==br.startOnLoad&&(v.debug("Start On Load inner: "+br.startOnLoad),gr.initialize({startOnLoad:br.startOnLoad})),void 0!==br.ganttConfig&&gr.initialize({gantt:br.ganttConfig});for(let t=0;t<e.length;t++){const a=e[t];
+/*! Check if previously processed */if(a.getAttribute("data-processed"))continue;a.setAttribute("data-processed",!0);const o=`mermaid-${Date.now()}`;r=a.innerHTML,r=i.a.decode(r).trim().replace(/<br>/gi,"<br/>"),gr.render(o,r,(t,e)=>{a.innerHTML=t,void 0!==n&&n(o),e&&e(a)},a)}},initialize:function(t){v.debug("Initializing mermaid "),void 0!==t.mermaid&&(void 0!==t.mermaid.startOnLoad&&(br.startOnLoad=t.mermaid.startOnLoad),void 0!==t.mermaid.htmlLabels&&(br.htmlLabels=t.mermaid.htmlLabels)),gr.initialize(t)},contentLoaded:yr};e.default=br}]).default}));
+//# sourceMappingURL=mermaid.min.js.map
\ No newline at end of file
diff --git a/docs/assets/js/pdfobject.min.js b/docs/assets/js/pdfobject.min.js
new file mode 100644
index 0000000..826719c
--- /dev/null
+++ b/docs/assets/js/pdfobject.min.js
@@ -0,0 +1,20 @@
+/*
+    PDFObject v2.1.1
+    https://github.com/pipwerks/PDFObject
+    Copyright (c) 2008-2018 Philip Hutchison
+    MIT-style license: http://pipwerks.mit-license.org/
+    UMD module pattern from https://github.com/umdjs/umd/blob/master/templates/returnExports.js
+*/
+
+(function(root,factory){if(typeof define==='function'&&define.amd){define([],factory);}else if(typeof module==='object'&&module.exports){module.exports=factory();}else{root.PDFObject=factory();}}(this,function(){"use strict";if(typeof window==="undefined"||typeof navigator==="undefined"){return false;}
+var pdfobjectversion="2.1.1",ua=window.navigator.userAgent,supportsPDFs,isIE,supportsPdfMimeType=(typeof navigator.mimeTypes['application/pdf']!=="undefined"),supportsPdfActiveX,isModernBrowser=(function(){return(typeof window.Promise!=="undefined");})(),isFirefox=(function(){return(ua.indexOf("irefox")!==-1);})(),isFirefoxWithPDFJS=(function(){if(!isFirefox){return false;}
+return(parseInt(ua.split("rv:")[1].split(".")[0],10)>18);})(),isIOS=(function(){return(/iphone|ipad|ipod/i.test(ua.toLowerCase()));})(),createAXO,buildFragmentString,log,embedError,embed,getTargetElement,generatePDFJSiframe,generateEmbedElement;createAXO=function(type){var ax;try{ax=new ActiveXObject(type);}catch(e){ax=null;}
+return ax;};isIE=function(){return!!(window.ActiveXObject||"ActiveXObject"in window);};supportsPdfActiveX=function(){return!!(createAXO("AcroPDF.PDF")||createAXO("PDF.PdfCtrl"));};supportsPDFs=(!isIOS&&(isFirefoxWithPDFJS||supportsPdfMimeType||(isIE()&&supportsPdfActiveX())));buildFragmentString=function(pdfParams){var string="",prop;if(pdfParams){for(prop in pdfParams){if(pdfParams.hasOwnProperty(prop)){string+=encodeURIComponent(prop)+"="+encodeURIComponent(pdfParams[prop])+"&";}}
+if(string){string="#"+string;string=string.slice(0,string.length-1);}}
+return string;};log=function(msg){if(typeof console!=="undefined"&&console.log){console.log("[PDFObject] "+msg);}};embedError=function(msg){log(msg);return false;};getTargetElement=function(targetSelector){var targetNode=document.body;if(typeof targetSelector==="string"){targetNode=document.querySelector(targetSelector);}else if(typeof jQuery!=="undefined"&&targetSelector instanceof jQuery&&targetSelector.length){targetNode=targetSelector.get(0);}else if(typeof targetSelector.nodeType!=="undefined"&&targetSelector.nodeType===1){targetNode=targetSelector;}
+return targetNode;};generatePDFJSiframe=function(targetNode,url,pdfOpenFragment,PDFJS_URL,id){var fullURL=PDFJS_URL+"?file="+encodeURIComponent(url)+pdfOpenFragment;var scrollfix=(isIOS)?"-webkit-overflow-scrolling: touch; overflow-y: scroll; ":"overflow: hidden; ";var iframe="<div style='"+scrollfix+"position: absolute; top: 0; right: 0; bottom: 0; left: 0;'><iframe  "+id+" src='"+fullURL+"' style='border: none; width: 100%; height: 100%;' frameborder='0'></iframe></div>";targetNode.className+=" pdfobject-container";targetNode.style.position="relative";targetNode.style.overflow="auto";targetNode.innerHTML=iframe;return targetNode.getElementsByTagName("iframe")[0];};generateEmbedElement=function(targetNode,targetSelector,url,pdfOpenFragment,width,height,id){var style="";if(targetSelector&&targetSelector!==document.body){style="width: "+width+"; height: "+height+";";}else{style="position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%;";}
+targetNode.className+=" pdfobject-container";targetNode.innerHTML="<embed "+id+" class='pdfobject' src='"+url+pdfOpenFragment+"' type='application/pdf' style='overflow: auto; "+style+"'/>";return targetNode.getElementsByTagName("embed")[0];};embed=function(url,targetSelector,options){if(typeof url!=="string"){return embedError("URL is not valid");}
+targetSelector=(typeof targetSelector!=="undefined")?targetSelector:false;options=(typeof options!=="undefined")?options:{};var id=(options.id&&typeof options.id==="string")?"id='"+options.id+"'":"",page=(options.page)?options.page:false,pdfOpenParams=(options.pdfOpenParams)?options.pdfOpenParams:{},fallbackLink=(typeof options.fallbackLink!=="undefined")?options.fallbackLink:true,width=(options.width)?options.width:"100%",height=(options.height)?options.height:"100%",assumptionMode=(typeof options.assumptionMode==="boolean")?options.assumptionMode:true,forcePDFJS=(typeof options.forcePDFJS==="boolean")?options.forcePDFJS:false,PDFJS_URL=(options.PDFJS_URL)?options.PDFJS_URL:false,targetNode=getTargetElement(targetSelector),fallbackHTML="",pdfOpenFragment="",fallbackHTML_default="<p>This browser does not support inline PDFs. Please download the PDF to view it: <a href='[url]'>Download PDF</a></p>";if(!targetNode){return embedError("Target element cannot be determined");}
+if(page){pdfOpenParams.page=page;}
+pdfOpenFragment=buildFragmentString(pdfOpenParams);if(forcePDFJS&&PDFJS_URL){return generatePDFJSiframe(targetNode,url,pdfOpenFragment,PDFJS_URL,id);}else if(supportsPDFs||(assumptionMode&&isModernBrowser&&!isIOS)){return generateEmbedElement(targetNode,targetSelector,url,pdfOpenFragment,width,height,id);}else if(PDFJS_URL){return generatePDFJSiframe(targetNode,url,pdfOpenFragment,PDFJS_URL,id);}else{if(fallbackLink){fallbackHTML=(typeof fallbackLink==="string")?fallbackLink:fallbackHTML_default;targetNode.innerHTML=fallbackHTML.replace(/\[url\]/g,url);}
+return embedError("This browser does not support embedded PDFs");}};return{embed:function(a,b,c){return embed(a,b,c);},pdfobjectversion:(function(){return pdfobjectversion;})(),supportsPDFs:(function(){return supportsPDFs;})()};}));
\ No newline at end of file
diff --git a/docs/assets/js/zoom-image.min.js b/docs/assets/js/zoom-image.min.js
new file mode 100644
index 0000000..c40a77a
--- /dev/null
+++ b/docs/assets/js/zoom-image.min.js
@@ -0,0 +1 @@
+!function(){function t(e){return"IMG"===e.tagName}function w(e){return e&&1===e.nodeType}function L(e){return".svg"===(e.currentSrc||e.src).substr(-4).toLowerCase()}function p(e){try{return Array.isArray(e)?e.filter(t):function(e){return NodeList.prototype.isPrototypeOf(e)}(e)?[].slice.call(e).filter(t):w(e)?[e].filter(t):"string"==typeof e?[].slice.call(document.querySelectorAll(e)).filter(t):[]}catch(e){throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList or an array.\nSee: https://github.com/francoischalifour/medium-zoom")}}function g(e,t){var o=H({bubbles:!1,cancelable:!1,detail:void 0},t);if("function"==typeof window.CustomEvent)return new CustomEvent(e,o);var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,o.bubbles,o.cancelable,o.detail),n}function v(e,t){function o(){for(var e=arguments,t=arguments.length,o=Array(t),n=0;n<t;n++)o[n]=e[n];var i=o.reduce(function(e,t){return[].concat(e,p(t))},[]);return i.filter(function(e){return-1===c.indexOf(e)}).forEach(function(e){c.push(e),e.classList.add("medium-zoom-image")}),d.forEach(function(e){var t=e.type,o=e.listener,n=e.options;i.forEach(function(e){e.addEventListener(t,o,n)})}),f}function n(e){function r(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,o=void 0;if(b.container)if(b.container instanceof Object)t=(e=H({},e,b.container)).width-e.left-e.right-2*b.margin,o=e.height-e.top-e.bottom-2*b.margin;else{var n=(w(b.container)?b.container:document.querySelector(b.container)).getBoundingClientRect(),i=n.width,r=n.height,d=n.left,a=n.top;e=H({},e,{width:i,height:r,left:d,top:a})}t=t||e.width-2*b.margin,o=o||e.height-2*b.margin;var m=E.zoomedHd||E.original,c=L(m)?t:m.naturalWidth||t,l=L(m)?o:m.naturalHeight||o,u=m.getBoundingClientRect(),s=u.top,f=u.left,p=u.width,g=u.height,v=Math.min(c,t)/p,h=Math.min(l,o)/g,z=Math.min(v,h),y="scale("+z+") translate3d("+((t-p)/2-f+b.margin+e.left)/z+"px, "+((o-g)/2-s+b.margin+e.top)/z+"px, 0)";E.zoomed.style.transform=y,E.zoomedHd&&(E.zoomedHd.style.transform=y)}var d=(0<arguments.length&&void 0!==e?e:{}).target;return new a(function(t){if(d&&-1===c.indexOf(d))t(f);else{if(E.zoomed)t(f);else{if(d)E.original=d;else{if(!(0<c.length))return void t(f);var e=c;E.original=e[0]}if(E.original.dispatchEvent(g("medium-zoom:open",{detail:{zoom:f}})),u=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,l=!0,E.zoomed=function(e){var t=e.getBoundingClientRect(),o=t.top,n=t.left,i=t.width,r=t.height,d=e.cloneNode(),a=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,m=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return d.removeAttribute("id"),d.style.position="absolute",d.style.top=o+a+"px",d.style.left=n+m+"px",d.style.width=i+"px",d.style.height=r+"px",d.style.transform="",d}(E.original),document.body.appendChild(s),b.template){var o=w(b.template)?b.template:document.querySelector(b.template);E.template=document.createElement("div"),E.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(E.template)}if(document.body.appendChild(E.zoomed),window.requestAnimationFrame(function(){document.body.classList.add("medium-zoom--opened")}),E.original.classList.add("medium-zoom-image--hidden"),E.zoomed.classList.add("medium-zoom-image--opened"),E.zoomed.addEventListener("click",m),E.zoomed.addEventListener("transitionend",function e(){l=!1,E.zoomed.removeEventListener("transitionend",e),E.original.dispatchEvent(g("medium-zoom:opened",{detail:{zoom:f}})),t(f)}),E.original.getAttribute("data-zoom-src")){E.zoomedHd=E.zoomed.cloneNode(),E.zoomedHd.removeAttribute("srcset"),E.zoomedHd.removeAttribute("sizes"),E.zoomedHd.src=E.zoomed.getAttribute("data-zoom-src"),E.zoomedHd.onerror=function(){clearInterval(n),console.warn("Unable to reach the zoom image target "+E.zoomedHd.src),E.zoomedHd=null,r()};var n=setInterval(function(){E.zoomedHd.complete&&(clearInterval(n),E.zoomedHd.classList.add("medium-zoom-image--opened"),E.zoomedHd.addEventListener("click",m),document.body.appendChild(E.zoomedHd),r())},10)}else if(E.original.hasAttribute("srcset")){E.zoomedHd=E.zoomed.cloneNode(),E.zoomedHd.removeAttribute("sizes");var i=E.zoomedHd.addEventListener("load",function(){E.zoomedHd.removeEventListener("load",i),E.zoomedHd.classList.add("medium-zoom-image--opened"),E.zoomedHd.addEventListener("click",m),document.body.appendChild(E.zoomedHd),r()})}else r()}}})}var i=1<arguments.length&&void 0!==t?t:{},a=window.Promise||function(e){function t(){}e(t,t)},m=function(){return new a(function(t){if(!l&&E.original){l=!0,document.body.classList.remove("medium-zoom--opened"),E.zoomed.style.transform="",E.zoomedHd&&(E.zoomedHd.style.transform=""),E.template&&(E.template.style.transition="opacity 150ms",E.template.style.opacity=0),E.original.dispatchEvent(g("medium-zoom:close",{detail:{zoom:f}})),E.zoomed.addEventListener("transitionend",function e(){E.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(E.zoomed),E.zoomedHd&&document.body.removeChild(E.zoomedHd),document.body.removeChild(s),E.zoomed.classList.remove("medium-zoom-image--opened"),E.template&&document.body.removeChild(E.template),l=!1,E.zoomed.removeEventListener("transitionend",e),E.original.dispatchEvent(g("medium-zoom:closed",{detail:{zoom:f}})),E.original=null,E.zoomed=null,E.zoomedHd=null,E.template=null,t(f)})}else t(f)})},r=function(e){var t=(0<arguments.length&&void 0!==e?e:{}).target;return E.original?m():n({target:t})},c=[],d=[],l=!1,u=0,b=i,E={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(e)?b=e:!e&&"string"!=typeof e||o(e);var s=function(e){var t=document.createElement("div");return t.classList.add("medium-zoom-overlay"),t.style.background=e,t}((b=H({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},b)).background);document.addEventListener("click",function(e){var t=e.target;t!==s?-1!==c.indexOf(t)&&r({target:t}):m()}),document.addEventListener("keyup",function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||m()}),document.addEventListener("scroll",function(){if(!l&&E.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(u-e)>b.scrollOffset&&setTimeout(m,150)}}),window.addEventListener("resize",m);var f={open:n,close:m,toggle:r,update:function(e){var t=0<arguments.length&&void 0!==e?e:{},o=t;if(t.background&&(s.style.background=t.background),t.container&&t.container instanceof Object&&(o.container=H({},b.container,t.container)),t.template){var n=w(t.template)?t.template:document.querySelector(t.template);o.template=n}return b=H({},b,o),c.forEach(function(e){e.dispatchEvent(g("medium-zoom:update",{detail:{zoom:f}}))}),f},clone:function(e){return v(H({},b,0<arguments.length&&void 0!==e?e:{}))},attach:o,detach:function(){for(var e=arguments,t=arguments.length,o=Array(t),n=0;n<t;n++)o[n]=e[n];E.zoomed&&m();var i=0<o.length?o.reduce(function(e,t){return[].concat(e,p(t))},[]):c;return i.forEach(function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(g("medium-zoom:detach",{detail:{zoom:f}}))}),c=c.filter(function(e){return-1===i.indexOf(e)}),f},on:function(t,o,e){var n=2<arguments.length&&void 0!==e?e:{};return c.forEach(function(e){e.addEventListener("medium-zoom:"+t,o,n)}),d.push({type:"medium-zoom:"+t,listener:o,options:n}),f},off:function(t,o,e){var n=2<arguments.length&&void 0!==e?e:{};return c.forEach(function(e){e.removeEventListener("medium-zoom:"+t,o,n)}),d=d.filter(function(e){return!(e.type==="medium-zoom:"+t&&e.listener.toString()===o.toString())}),f},getOptions:function(){return b},getImages:function(){return c},getZoomedImage:function(){return E.original}};return f}var H=Object.assign||function(e){for(var t=arguments,o=1;o<arguments.length;o++){var n=t[o];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e};!function(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===o&&n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}(".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}");var n=Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.msMatchesSelector;$docsify.plugins=[].concat(function(e){var o;e.doneEach(function(e){var t=Array.apply(null,document.querySelectorAll(".markdown-section img:not(.emoji):not([data-no-zoom])"));t=t.filter(function(e){return!1===n.call(e,"a img")}),o&&o.detach(),o=v(t)})},$docsify.plugins)}();
diff --git a/docs/audio/audio.md b/docs/audio/audio.md
new file mode 100644
index 0000000..e0d41e4
--- /dev/null
+++ b/docs/audio/audio.md
@@ -0,0 +1,29 @@
+## Audio
+
+* [Reaktion](https://github.com/keijiro/Reaktion "Audio reactive animation toolkit for Unity.")
+* [Unity-NodeSynthesizer](https://github.com/rngtm/Unity-NodeSynthesizer "") - Nose-Based Synthesizer on UnityEditor.
+* [Unity-Synth-Experiments](https://github.com/pixlpa/Unity-Synth-Experiments "") - A set of simple generative synth scripts for Unity written in C# (OnAudioFilterRead).
+* [Videolab](https://github.com/teenageengineering/videolab "") - Toolkit for designing midi-controlled video content.
+* [Resonance-audio-unity-sdk](https://github.com/resonance-audio/resonance-audio-unity-sdk "") - Resonance Audio SDK for Unity.
+* [MusicEngine](https://github.com/geekdrums/MusicEngine "") - Make music synced game with Unity.
+* [G Audio](https://github.com/gregzo/G-Audio "") - 2D Audio Framework for Unity.
+* [UnityWav](https://github.com/deadlyfingers/UnityWav "") - WAV utility for saving and loading wav files in Unity.
+* [UnityOSC](https://github.com/thomasfredericks/UnityOSC "") - Open Sound Control (OSC) for Unity.
+* [UnityOSC](https://github.com/jorgegarcia/UnityOSC "") - Open Sound Control (OSC) C# classes interface for the Unity3d game engine.
+* [Rhythmify](https://github.com/Gkxd/Rhythmify "") - A Rhythm Syncing Implementation for Unity.
+* [Algorithmic-beat-mapping-unity](https://github.com/jesse-scam/algorithmic-beat-mapping-unity "") - Real-time and Preprocessed Audio Analysis for Onset Detection (Beat Mapping) Using Spectral Flux.
+* [UniBpmAnalyzer](https://github.com/WestHillApps/UniBpmAnalyzer "") - BPM analyzer for Unity.
+* [Spotify4Unity](https://github.com/JoshLmao/Spotify4Unity "") - Set of UI tools and scripts for integrating Spotify into your Unity game/app!
+* [CSharpSynthForUnity](https://github.com/kewlniss/CSharpSynthForUnity "") - Ported CSharpSynth Project from [codeplex](http://csharpsynthproject.codeplex.com/) to work in Unity.
+* [UniMic](https://github.com/adrenak/UniMic "") - A wrapper for Unity's Microphone class.
+* [Low Latency_Sound_for_Unity Android](https://github.com/tsubaki/Low-latency_Sound_for_UnityAndroid "")
+* [USFXR](https://github.com/zeh/usfxr) - A C# library used to generate and play game-like procedural audio effects inside Unity.
+* [Audio Toolkit](https://assetstore.unity.com/packages/tools/audio/audio-toolkit-free-version-2679) - A complete, easy-to-use, and performance optimized framework to play and manage music and sound effects in Unity. Both paid and free.
+* [Unity Beat Detection](https://github.com/allanpichardo/Unity-Beat-Detection) - Musical beat detection and audio spectrum analysis for use with the Unity game engine.
+* [LibPdIntegration](https://github.com/LibPdIntegration/LibPdIntegration) - A libpd wrapper for Unity. See [Pure Data](https://puredata.info/)
+* [NAudio Unity](https://github.com/WulfMarius/NAudio-Unity) - Port of NAudio to the Mono subset used by Unity3D.
+* [Unity3D-SoundManager](https://github.com/baratgabor/Unity3D-SoundManager) - Simple but decent sound manager for Unity3D, with AudioSource pooling, 3D positioning support and completion callback.
+* [UniIosAudioService](https://github.com/sanukin39/UniIosAudioService) - Unity iOS plugin JUST playing iOS system sound. (#PLUGINS)
+* [KlakLasp](https://github.com/keijiro/KlakLasp) - An extension for the Klak Wiring system to create audio reactive behaviors.
+* [AudioRecorder](https://github.com/alternator/AudioRecorder) - Audio recorder component for Unity.
+* [UnityAbletonLink](https://github.com/comoc/UnityAbletonLink) - An Ableton Link plugin for Unity. (#PLUGINS)
diff --git a/docs/augmented-reality/augmented-reality.md b/docs/augmented-reality/augmented-reality.md
new file mode 100644
index 0000000..8b9e0a0
--- /dev/null
+++ b/docs/augmented-reality/augmented-reality.md
@@ -0,0 +1,18 @@
+## Augmented Reality
+
+* [Vuforia](https://vuforia.com/) - Augmented Reality SDK with image and object recognition, smart terrain and extended tracking features.
+* [iOSUnityVuforiaGuide](https://github.com/keyv/iOSUnityVuforiaGuide) - Integration of Unity + Vuforia into native iOS application.
+* [ARToolKit](http://artoolkit.org/documentation/doku.php?id=6_Unity:unity_about) - Augmented Reality SDK that includes libraries, utilities, and examples. (Redirects to DAQRI website.)
+* [ARunity5](https://github.com/artoolkit/arunity5) - ARToolKit for Unity v5.x.
+* [ARCore Unity SDK](https://github.com/google-ar/arcore-unity-sdk "") - ARCore SDK for Unity.
+* [ARFoundation Samples](https://github.com/Unity-Technologies/arfoundation-samples "") - Example content for Unity projects based on [AR Foundation](https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@1.0/manual/index.html). :fab fa-unity:
+* [Facial AR Remote](https://github.com/Unity-Technologies/facial-ar-remote "") - A tool that allows you to capture blendshape animations directly from your iPhone X into Unity 3d by use of an app on your phone. :fab fa-unity:
+* [ArucoUnity](https://github.com/NormandErwan/ArucoUnity "") - Bring augmented reality to Unity by tracking Aruco markers in real time.
+* [UnityARFaceDeformation](https://github.com/kitasenjudesign/UnityARFaceDeformation "") - AR Face Deformation with Unity ARKit Plugin.
+* [UnityARKitFaceGestures](https://github.com/dilmerv/UnityARKitFaceGestures "") - An example repository created to demonstrate how to track gestures with ARKit and Unity3D.
+* [Location-Based-Markerless-Augmented-Reality](https://github.com/hynra/Location-Based-Markerless-Augmented-Reality "") - Markerless Augmented Reality based on location made with Unity and Kudan AR SDK.
+* [Tango Examples Unity](https://github.com/googlearchive/tango-examples-unity "") - Project Tango UnitySDK Example Projects (#DEPRECATED).
+* [AR Unity](https://github.com/Bewolf2/AR-Unity "") - Augmented Reality in Unity. Uses [ALVAR](http://virtual.vtt.fi/virtual/proj2/multimedia/alvar/index.html) and OpenCV.
+* [MagicLeapFramework Unity](https://github.com/jamesashley1/MagicLeapFramework-Unity "") - Unity helper classes and examples to accelerate prototyping for Magic Leap.
+* [Magic Leap Dev Resources](https://github.com/MagicLeapDevs/MagicLeapDevResources "") - Magic Leap Developer Resources for the Lumin SDK and Magic Leap One.
+* [Vuforia Runtime Dataset Sample](https://github.com/rizasif/vuforia-runtime-dataset-sample "") - A sample unity project for loading datasets in vuforia at runtime.
diff --git a/docs/awesome-unity.png b/docs/awesome-unity.png
new file mode 100644
index 0000000..c1d1a65
Binary files /dev/null and b/docs/awesome-unity.png differ
diff --git a/docs/camera/camera.md b/docs/camera/camera.md
new file mode 100644
index 0000000..35d938a
--- /dev/null
+++ b/docs/camera/camera.md
@@ -0,0 +1,22 @@
+## Camera
+
+* [Cinemachine](https://github.com/Unity-Technologies/upm-package-cinemachine "") - Smart camera tools for passionate creators. :fab fa-unity:
+* [Unity Cinemachine](https://github.com/tonygod/unity-cinemachine "") - A few helpful starter Unity Cinemachine scripts.
+* [Pixel Perfect Retro Camera](https://github.com/wolv-interactive/Pixel-Perfect-Retro-Camera "") - Pixel perfect retro camera system for Unity.
+* [Unity Pixel Camera](https://github.com/ChemiKhazi/UnityPixelCamera) - A resolution independent pixel perfect camera for Unity.
+* [DeadSimple Pixel-Perfect Camera](https://github.com/cmilr/DeadSimple-Pixel-Perfect-Camera) - An exceedingly easy-to-use pixel perfect orthographic camera script for 2D scenes in Unity. Punch in a few specs and you've got a working pixel perfect camera. It's that easy.
+* [UnityEquiCam](https://github.com/bodhid/UnityEquiCam "") - Realtime 360° ( equirectangular ) panorama Camera for Unity.
+* [Game Eye 2D](https://github.com/JasonHein/Game-Eye-2D "") - A component based orthographic camera extension for unity that tracks 2D environments.
+* [DeadSimple Pixel Perfect Camera](https://github.com/cmilr/DeadSimple-Pixel-Perfect-Camera "") - An exceedingly easy-to-use pixel perfect orthographic camera script for 2D scenes in Unity.
+An exceedingly easy-to-use pixel perfect orthographic camera script for 2D scenes in Unity.
+* [UFPS](https://www.assetstore.unity3d.com/en/#!/content/2943) - Provides camera, controllers, and other effects for use in FPS games. :fas fa-coins:
+* [Physical Camera](https://github.com/Unity-Technologies/Physical-Camera) - Unity Component that can describes a physical camera's attributes. (#PHYSICS) :fab fa-unity:
+* [Unity Camera Follow 2D](https://github.com/minhhh/unity-camera-follow-2d) - Script to make 2d camera follow players in an interesting way.
+* [Unity CameraSizeToVelocity2D](https://github.com/tonisuo/Unity-CameraSizeToVelocity2D) - Simple script to change the cameras size depending on the velocity of the target.
+* [CameraLib4U](https://github.com/mortennobel/CameraLib4U) - A third person camera system for Unity using Chase Camera.
+* [Unity First Person View](https://github.com/TiagoF11/-Unity-First-Person-View) - An asset that allows you to have a First Person Perspective where first person objects do not clip through the environment, have a separate field of view from the environment and can receive shadows from the environment. 
+* [GyroCam](https://github.com/keijiro/GyroCam) - Quasi-AR with gyroscopic input.
+* [Unity3D PerlinCameraShake](https://github.com/baratgabor/Unity3D-PerlinCameraShake) - Perlin noise based camera shake MonoBehaviour script for Unity3D, ready to attach to a Camera. Uses a coroutine-based execution that exits after the job is done. Should be relatively performant.
+* [Unity Jobs View Frustum Culling](https://github.com/MPozek/Unity-Jobs-View-Frustum-Culling) - A simple collection of jobs used for view frustum culling
+* [UnityCameraShake](https://github.com/IronWarrior/UnityCameraShake) - Generates pseudo-random camera shake using Perlin noise.
+* [UnitySceneCameraController](https://github.com/XJINE/Unity_SceneCameraController) - Control a camera or any other object like SceneView camera.
diff --git a/docs/character-controllers/character-controllers.md b/docs/character-controllers/character-controllers.md
new file mode 100644
index 0000000..eb38bb2
--- /dev/null
+++ b/docs/character-controllers/character-controllers.md
@@ -0,0 +1,19 @@
+## Character Controllers
+
+* [Standard Assets Characters](https://github.com/Unity-Technologies/Standard-Assets-Characters "") - Unity Standard Asset Controllers. :fab fa-unity:
+
+### 2D Character Controllers
+
+* [CharacterController2D](https://github.com/prime31/CharacterController2D) - A 2D controller that behaves very similarly to Unity's CharacterController component.
+* [PlatformerRails](https://github.com/FriendSea/PlatformerRails "") - Character Controller for 2.5D Platformer on Unity.
+* [SuperCharacterController](https://github.com/IronWarrior/SuperCharacterController "") - Unity custom character controller.
+* [2DCharacterControllerTutorial](https://github.com/IronWarrior/2DCharacterControllerTutorial "") - Source code for 2D Character Controller tutorial for Unity. (#TUTORIALS)
+* [Unity 2D Platformer Controller](https://github.com/cjddmut/Unity-2D-Platformer-Controller) - A customizable 2D platformer motor that handles mechanics such as double jumps, wall jumps, and corner grabs. Includes a player controlled prefab that can be dropped into any scene for immediate support.
+
+### 3D Character Controllers
+
+* [Unity3D ThirdPersonController](https://github.com/Arjunxxxl/Unity3d_ThirdPersonController "") - Unity3d Third Person Controller.
+* [NaughtyCharacter](https://github.com/dbrizov/NaughtyCharacter) - Third Person Controller for Unity.
+* [Advanced Rigidbody FirstPerson Controller](https://github.com/Moe-Baker/Advanced-Rigidbody-FirstPerson-Controller) - Rigidbody Based FirstPerson Controller.
+* [UNet Controller](https://github.com/GreenByteSoftware/UNet-Controller) - A Character Controller based controller for Unity's new Networking system. (#NETWORKING)
+* [SuperCharacterController](https://github.com/gucheng0712/SuperCharacterController) - Unity custom character controller. (#ARCHIVED)
diff --git a/docs/code-of-conduct/code-of-conduct.md b/docs/code-of-conduct/code-of-conduct.md
new file mode 100644
index 0000000..5825749
--- /dev/null
+++ b/docs/code-of-conduct/code-of-conduct.md
@@ -0,0 +1,3 @@
+# Code of Conduct <a name="code-of-conduct"></a>
+
+See [Code of Conduct](https://github.com/agarcialeon/awesome-unity/blob/master/CODE-OF-CONDUCT.md).
diff --git a/docs/communities/communities.md b/docs/communities/communities.md
new file mode 100644
index 0000000..8933c20
--- /dev/null
+++ b/docs/communities/communities.md
@@ -0,0 +1,42 @@
+# Communities
+
+## Chat Servers
+
+:construction:
+
+## Forums
+
+* [/r/Unity3D](https://www.reddit.com/r/Unity3D/ "") - Reddit forum focused in 3D Unity projects.
+* [/r/Unity2D](https://www.reddit.com/r/Unity2D/ "") - Reddit forum focused in 2D Unity projects.
+* [Unity Forum](https://forum.unity.com/ "") - Unity3D Official Forum.
+* [Unitylist](https://unitylist.com/) - Search for everything.
+* [Armedunity](https://armedunity.com/) - Shooter focused forum.
+
+## Groups
+
+* [Unity Connect](https://connect.unity.com/ "") - Unity official's marketplace for work showcase, job hunting and contact with other developers.
+* [Unity User Groups](https://unity3d.com/es/community/user-groups "") - Unity user groups around the globe. Find yours.
+* [Unity Community](https://github.com/UnityCommunity "") - Home for Unity Community Utilities (Snippets, Scripts, Shaders, Projects, ...). Everyone is free to post.
+
+## People to follow
+
+### Unity Developers
+
+* Keijiro Takahashi [:fab fa-twitter:](https://twitter.com/_kzr) / [:fab fa-github:](https://github.com/keijiro)
+* Andy Touch [:fab fa-twitter:](https://twitter.com/andytouch) - Builds feature demos at @Unity3d Technologies. Tweets about Shaders, Game Technology, Art and more.
+* Mike Geig [:fab fa-twitter:](https://twitter.com/mikegeig) - Global Head of Evangelism Content.
+* Adam Myhill [:fab fa-twitter:](https://twitter.com/Adamjcmyhill) - Creator of Cinemachine.
+* Ciro Continisio [:fab fa-twitter:](https://twitter.com/CiroContns) -  Tech Evangelist. Unity, graphics, design and game jams.
+* Jonathan Chambers [:fab fa-twitter:](https://twitter.com/jon_cham) - Developer at Unity3D. IL2CPP and Mono.
+* Unity3D [:fab fa-twitter:](https://twitter.com/unity3d) - Unity Official Account on Twitter. Blog posts, tips, developers retweets.
+
+### Independent Developers
+
+* Alan Zucconi [:fab fa-twitter:](https://twitter.com/AlanZucconi) - Tutorials, shaders and math theory well explained.
+* Andy Duboc [:fab fa-twitter:](https://twitter.com/andyduboc) / [:fab fa-github:](https://github.com/andydbc) -  Cool effects and particle systems.
+* Sebastian Lague [:fab fa-twitter:](https://twitter.com/SebastianLague) - Unity and Blender game development tutorials.
+* Minionsart [:fab fa-twitter:](https://twitter.com/minionsart) - Artist/Shaderwitch/Programmer. Weekly tutorials on 3D/Unity.
+* Linden Reid [:fab fa-twitter:](https://twitter.com/so_good_lin) - Tech artists at Blizzard. Shares shader tutorials.
+* Jeppe Zapp [:fab fa-github:](https://github.com/mrzapp) - Unity tools and utilities.
+* Mix & Jam [:fab fa-github:](https://github.com/mixandjam) - Unity video tutorials on Youtube.
+* Takashi Sakai [:fab fa-github:](https://github.com/mob-sakai) - Unity tools and effects.
diff --git a/docs/computer-vision-traking/computer-vision-traking.md b/docs/computer-vision-traking/computer-vision-traking.md
new file mode 100644
index 0000000..7d42768
--- /dev/null
+++ b/docs/computer-vision-traking/computer-vision-traking.md
@@ -0,0 +1,20 @@
+## Computer Vision & Tracking
+
+* [Azure Kinect](https://azure.microsoft.com/es-es/services/kinect-dk/ "") - A developer kit and PC peripheral with advanced artificial intelligence (AI) sensors for sophisticated computer vision and speech models. See its [specs](https://opdhsblobprod03.blob.core.windows.net/contents/503db294612a42b3b95420aaabac44cc/0b5422607ce5da1919083d6373d49fa4?sv=2015-04-05&sr=b&sig=zX1I4tMK6KYa89hVIPJWpSH%2FYsVptK%2Fr07MaUipuVDM%3D&st=2019-02-25T07%3A36%3A47Z&se=2019-02-26T07%3A46%3A47Z&sp=r).
+* [K4Wv2UnityBridge](https://github.com/jamesashley1/K4Wv2UnityBridge "") - A Kinect v2 bridge for Unity notes: 1. currently 64-bit, so plays but does not run in editor 2. curently hd color stream only.
+* [Leap Motion](https://www.leapmotion.com/ "") - A computer hardware sensor device that supports hand and finger motions as input, analogous to a mouse, but requires no hand contact or touching.
+* [Leap Motion Core Assets](https://github.com/leapmotion/LeapMotionCoreAssets "") - Unity Assets for Leap Motion v2 Skeletal Tracking.
+* [Project North Star](https://github.com/leapmotion/ProjectNorthStar "") - The open-source files comprising Leap Motion's Project North Star AR Headset. See the blog post [here](http://blog.leapmotion.com/north-star-open-source/).
+* [Myo](https://support.getmyo.com/hc/en-us) - A gesture control armband developed by Thalmic Labs. See [link](https://xinreality.com/wiki/Myo).
+* [Intel Realsense Hand Toolkit for Unity](https://github.com/ReiiYuki/Intel-Realsense-Hand-Toolkit-Unity "") - Intel Realsense Toolkit for Hand tracking and Gestural Recognition on Unity3D.
+* [ZED SKD Unity Plugin](https://github.com/stereolabs/zed-unity "") - ZED SDK Unity plugin.
+* [UnityCloudVision](https://github.com/comoc/UnityCloudVision "") - Google Cloud Vision API client for Unity.
+* [TensorFlowUnity ObjectDetection](https://github.com/MatthewHallberg/TensorFlowUnity-ObjectDetection "") - Object detection test project with Tensorflow and Unity.
+* [KinectSDK Unity3D Interface Plugin](https://github.com/adevine1618/KinectSDK-Unity3D_Interface_Plugin "") - This is a wrapper that allows the user to access Microsoft's Kinect SDK v.1.7 data from inside the free Unity3D game engine.
+* [Kinect-VFX-Graph](https://github.com/roelkok/Kinect-VFX-Graph "") - Use Kinect's depth feed with Unity's VFX Graph. (#SHADERS)
+* [Deepdive](https://github.com/asymingt/deepdive "") - Rigid body tracking with HTC Vive trackers. (#VIRTUAL-REALITY)
+* [Rsvfx](https://github.com/keijiro/Rsvfx "") - Visual effects by Keijiro using Intel Realsense camera.
+* [Dkvfx](https://github.com/keijiro/Dkvfx "") - An example that shows how to use recorded Depthkit footage with Unity VFX Graph.
+* [Project Gesture](https://github.com/Microsoft/Gestures-Samples "") - [Project Prague](https://labs.cognitive.microsoft.com/en-us/project-gesture) Code Samples.
+* [Yolo Unity](https://github.com/mbaske/yolo-unity "") - YOLO Object Detection for Unity (Windows).
+* [Alturos.Yolo](https://github.com/AlturosDestinations/Alturos.Yolo "") - C# Yolo Darknet Wrapper (real-time object detection).
diff --git a/docs/continuous-integration/ci.md b/docs/continuous-integration/ci.md
new file mode 100644
index 0000000..1c95b28
--- /dev/null
+++ b/docs/continuous-integration/ci.md
@@ -0,0 +1,5 @@
+## Continuous Integration
+
+* [Docker Unity3D](https://github.com/wtanaka/docker-unity3d "") - This docker image runs in a terminal so you don't have access to the UI. This docker image is intended to run unity commands with the command line. You can use it for running tests and creating builds.
+* [Unity3D CI Example](https://github.com/GabLeRoux/unity3d-ci-example "") - Additional remote of Unity3D CI example project for Travis and CircleCI on Github.
+* [Unity3D Travis CI](https://github.com/kevinta893/unity3d-travis-ci "") - A simple example of how to build and deploy a Unity3D package on Travis CI and GitHub Releases.
diff --git a/docs/continuous-integration/jenkins.md b/docs/continuous-integration/jenkins.md
new file mode 100644
index 0000000..2b36b08
--- /dev/null
+++ b/docs/continuous-integration/jenkins.md
@@ -0,0 +1 @@
+# Jenkins
\ No newline at end of file
diff --git a/docs/continuous-integration/travis.md b/docs/continuous-integration/travis.md
new file mode 100644
index 0000000..178acd2
--- /dev/null
+++ b/docs/continuous-integration/travis.md
@@ -0,0 +1 @@
+# Travis
\ No newline at end of file
diff --git a/docs/contributors/contributors.md b/docs/contributors/contributors.md
new file mode 100644
index 0000000..a0cb5fb
--- /dev/null
+++ b/docs/contributors/contributors.md
@@ -0,0 +1,19 @@
+# Contributors to this repository
+
+[@agarcialeon](https://github.com/agarcialeon) - Creator
+
+# Contributing
+
+Please see [CONTRIBUTING](https://github.com/agarcialeon/awesome-unity/blob/master/CONTRIBUTING.md) for details.
+
+Thanks to all the [contributors](https://github.com/agarcialeon/awesome-unity/graphs/contributors), this wouldn't be possible without you! 
+
+<!--<a href="https://github.com/agarcialeon/awesome-unity/graphs/contributors">
+	 <img src="https://opencollective.com/vuejs/contributors.svg?width=890" /> 
+</a>-->
+
+# To be done
+
+See the state of the project in the [kanban board](https://github.com/UnityCommunity/AwesomeUnityCommunity/projects/1).
+
+[:fas fa-arrow-up: Back to Top](/README)
diff --git a/docs/customization/customization.md b/docs/customization/customization.md
new file mode 100644
index 0000000..06ebcc0
--- /dev/null
+++ b/docs/customization/customization.md
@@ -0,0 +1,6 @@
+## Customization
+
+* [Unity3D Rainbow Folders](https://github.com/PhannGor/unity3d-rainbow-folders "") - This asset allows you to set custom icons for any folder in unity project browser.
+* [Unity Dark Theme Patch](https://github.com/ejlv/UnityDarkThemePatch "") - Patch that switches Unity theme from light to dark.
+* [UnityDarkSkin](https://github.com/Gluschenko/UnityDarkSkin "") - Switching layout skin in Unity Editor (white => dark, white => dark).
+* [UnityLauncher](https://github.com/unitycoder/UnityLauncher "") - Unity Version Launcher.
diff --git a/docs/databases/databases.md b/docs/databases/databases.md
new file mode 100644
index 0000000..cc85a6c
--- /dev/null
+++ b/docs/databases/databases.md
@@ -0,0 +1,7 @@
+## Databases
+
+* [SQLite4Unity3D](https://github.com/robertohuertasm/SQLite4Unity3d "") - SQLite made easy for Unity3d.
+* [USqlite](https://github.com/springd5211/USqlite "") - Sqlite for Unity.
+* [SQLiteUnityKit](https://github.com/Busta117/SQLiteUnityKit "") - Framework to connect with a SQLite database from Unity for iOS, Android, MAC , Windows.
+* [SqlCipher4Unity3D](https://github.com/netpyoung/SqlCipher4Unity3D "") - SqlCipher made easy for Unity3d.
+* [CastleDB Unity Importer](https://github.com/kkukshtel/castledb-unity-importer")
diff --git a/docs/extensibility/extensibility.md b/docs/extensibility/extensibility.md
new file mode 100644
index 0000000..a579f03
--- /dev/null
+++ b/docs/extensibility/extensibility.md
@@ -0,0 +1,176 @@
+## Extensibility
+
+### Node Editor
+
+* [Node Editor Framework](https://github.com/Seneral/Node_Editor_Framework "") - A flexible and modular Node Editor Framework for creating node based displays and editors in Unity.
+* [xNode](https://github.com/Siccity/xNode "") - Basic editor extension functionality to get a node editor up and running.
+* [qAI](https://github.com/jlreymendez/qAI "") - A xNode based tool for designing AI Graphs like Behavior Trees and Finite State Machines in Unity.
+* [UnityNodeEditorBase](https://github.com/luis-l/UnityNodeEditorBase "") - Lets you view and edit node graphs inside Unity.
+* [Node Inspector](https://github.com/nicloay/Node-Inspector) - Unity graph editor extension.
+* [GTLogicGraph](https://github.com/rygo6/GTLogicGraph "") - A generic graph made off the UIElement GraphView built into Unity.
+* [Simple Graph Editor](https://github.com/Aridez/Simple-Graph-Editor "") - An editor extension for Unity that allows making directional graphs quickly.
+<!-- * [Node Canvas](https://assetstore.unity.com/packages/tools/visual-scripting/nodecanvas-14914) - The complete Visual Behaviour Authoring framework for Unity. -->
+
+### Inspector
+
+* [ReorderableInspector](https://github.com/SubjectNerd-Unity/ReorderableInspector "") - Automatic reorderable lists for Unity game engine components.
+* [Reorderable Inspector](https://github.com/ChemiKhazi/ReorderableInspector) - Automatic reorderable lists for Unity game engine components.
+* [Reorderable List Editor Field for Unity](https://bitbucket.org/rotorz/reorderable-list-editor-field-for-unity) - Reorderable List Editor Field for Unity.
+* [Reorderable List Example](https://github.com/valyard/ReorderableListExample "") - Example project for UnityEditorInternal.ReorderableList in Unity 4.5.
+* [Unity Runtime Inspector](https://github.com/yasirkula/UnityRuntimeInspector "") - Runtime Inspector and Hierarchy solution for Unity for debugging and runtime editing purposes.
+* [ExtendedTransformEditor](https://github.com/keenanwoodall/ExtendedTransformEditor "") - A clutterless custom Transform editor for Unity.
+* [ExtendedTransformEditor](https://github.com/starikcetin/ExtendedTransformEditor "") - A clutterless custom Transform editor for Unity.
+* [Inspector Foldout Group](https://github.com/dimmpixeye/InspectorFoldoutGroup "") - Group variables in Unity 3d inspector with style!
+* [Unity3D Property Enabled Inspector](https://github.com/XaeroDegreaz/unity3d-property-enabled-inspector "") - This project aims to allow C# properties to be fully supported for in-editor inspection.
+* [Unity Reorderable List](https://github.com/cfoulston/Unity-Reorderable-List "") - Extended version of the Reorderable List in Unity.
+* [Stackable Decorator](https://github.com/Kinwailo/Stackable-Decorator "") - Stackable decorator for property drawer of Unity.
+* [UnityExtensions.ArrayDrawer](https://github.com/garettbass/UnityExtensions.ArrayDrawer "") - ArrayDrawer is a base class like PropertyDrawer, but for arrays and lists.
+* [Property Drawer Collection](https://github.com/anchan828/property-drawer-collection)
+* [Chest Of Property Drawers](https://github.com/tenpn/ChestOfPropertyDrawers) - A collection of small reusable Unity3D property drawers.
+* [Reflected Inspector](https://github.com/ByronMayne/Reflected-Inspector) - Reflected Inspector is a system for Unity that works very much like Serialized Properties but works with non-Unity types and can serialize the values. 
+* [UnityExtensions.InspectInline](https://github.com/garettbass/UnityExtensions.InspectInline) - Enables you to inspect and edit object references, and easily embed such objects as subassets.
+* [EditorButton](https://github.com/miguel12345/EditorButton "") - Turn your Unity methods into buttons just by adding an attribute.
+* [EasyButtons](https://github.com/madsbangh/EasyButtons "") - Add buttons to your inspector in Unity super easily with this simple attribute.
+* [Enum Flags](https://github.com/umm/enum_flags) - Handle enum as bit flag in Inspector.
+* [Unity Define Inspector](https://github.com/haydenjameslee/unity-define-inspector "") - A Unity inspector panel to quickly add and remove a set of custom Scripting Define Symbols.
+* [Unity Readme](https://github.com/JohnAlbin/UnityReadme) - Add a Readme / tutorial to the inspector tab of your Unity project.
+* [Stickies](https://github.com/charblar/stickies) - Simple in-editor notes for Unity3D.
+* [Unity ColourLovers Importer](https://github.com/shelleylowe/unity-colourlovers-importer) - Unity editor tool to load colours and palettes directly from COLOURlovers.com.
+* [Gradient Editor](https://github.com/SebLague/Gradient-Editor)
+* [Render Queue](https://github.com/FreyaHolmer/Render-Queue) - Render Queue Unity Extension.
+* [Pongpector](https://github.com/PhillipMwaniki/pongpector "") - Play a pong on a Unity custom inspector. (#GAMES)
+* [Unity QuickSheet](https://github.com/kimsama/Unity-QuickSheet "") - Enables you to use spreadsheet file data within Unity editor.
+* [UnityMarkdeepViewer](https://github.com/Sirithang/UnityMarkdeepViewer "") - Editor scripts allowing to display Markdown, markdeep and HMTL directly inside the Unity Editor.
+* [UnityDebugger](https://github.com/joexi/UnityDebugger "") - Lite tool helping check runtime status of unity application in Editor.
+* [ReferenceVisualizerUnity3D](https://github.com/Sebastian-Schuchmann/ReferenceVisualizerUnity3D "") - An Editor Window that lets you see and edit all references of your Scene Objects.
+* [ShaderInspector](https://github.com/myacat/ShaderInspector "") - Hide parameters in Unity Shader Inspector Window. (#SHADERS)
+* [EditorGenerator](https://github.com/keenanwoodall/EditorGenerator "") - A tool that generates custom editors in Unity.
+* [ToDoManager](https://github.com/densylkin/ToDoManager "") - Simple tool for managing todo's in your code.
+* [UnityPickers](https://github.com/vasyab/UnityPickers "") - Value selection controls for Unity game engine editor. 
+* [Unitasks](https://github.com/raimis001/Unitasks "") - Very simple task organizer for Unity3D editor.
+* [Unity Docky](https://github.com/jeffcampbellmakesgames/unity-docky "") - Docky is a custom Unity editor tool to help automate documentation creation and updating.
+* [Curve Editor](https://github.com/SebLague/Curve-Editor "")
+
+
+### Timeline
+
+* [TimelineParticleControl](https://github.com/keijiro/TimelineParticleControl "") - An example of controlling particle system from timeline.
+* [UnityTimelineEvents](https://github.com/georgejecook/UnityTimelineEvents "") - Adds ability to execute arbitrary code, with int, bool, float, string and enum values, at both runtime and edit time, from Unity timelines.
+* [AudioPreviewTrack](https://github.com/keijiro/AudioPreviewTrack "") - Instant audio playback (scrubbing) in preview mode of Unity Timeline editor.
+* [TimeFlowShiki](https://github.com/sassembla/TimeFlowShiki) - Unity Editor Timeline GUI skeleton.
+* [Animator_Timeline](https://github.com/absameen/Animator_Timeline) - Timeline Editor for Unity. (#ANIMATION)
+* [TimelineEvent](https://github.com/inoook/TimelineEvent) - Modify timeline through events.
+* [UnityTimelordBlender](https://github.com/imxzjv/UnityTimelordBlender) - Timelord is a demo for custom blending of Unity3D Timelines.
+* [Timeline MessageMarker](https://github.com/imxzjv/Timeline-MessageMarker) - Timeline Message markers.
+* [UnityTimelineConditions](https://github.com/imxzjv/UnityTimelineConditions) - Experimental port of Animator conditions interface to Timeline events. 
+
+### Project Folder
+
+* [Tidy Up](https://github.com/Nutshell-Hack/Tidy-Up) - Neat little tool! to help you keep your Unity projects organised by throwing assets in their designated folders.
+* [Script Templates for Unity](https://bitbucket.org/rotorz/script-templates-for-unity) - A little window which automatically generates C# source code stubs for Unity.
+* [T4 Templates Unity3D](https://github.com/deniszykov/t4-templates-unity3d "") - T4 Text Template Processor for Unity3D.
+* [Unity File Extension](https://github.com/pointcache/unity-file-extension) - Shows file extension in 1 column project window.
+* [Unity Symlink Utility](https://github.com/karl-/unity-symlink-utility) - A small extension that adds a menu item to add folders as symlinks in Unity.
+
+### Contextual Menu
+
+* [TextMeshPro Button Extension](https://github.com/jackisgames/TextMeshProButtonExtension "") - Add new context menu "UI/TextMeshPro - Button". To create button with TextMeshPro instead of Unity UI Text. (#UI)
+
+### Scene View
+
+* [UnitySceneViewFovControl](https://github.com/t-mat/UnitySceneViewFovControl "") - Unity Editor Extension which enables controlling Scene View's FoV.
+
+#### Spline Editor
+
+* [BezierCanvas](https://github.com/setchi/BezierCanvas) - Adobe Illustrator's pen tool style bezier editor on Unity.
+* [BGCurve](https://github.com/bansheeGz/BGCurve "") - Bezier spline editor for Unity 5.3.
+
+#### Level Editor
+
+* [ProBuilder](https://assetstore.unity.com/packages/tools/modeling/probuilder-111418) - 3D Prototyping tool buyed by Unity. See [Procore](http://www.procore3d.com/).
+* [Prototype](https://www.assetstore.unity3d.com/en/#!/content/11919) - Uses the core of ProBuilder, enabling you to build entire game levels (or objects) with speed and simplicity.
+* [SabreCSG](http://sabrecsg.com/) - A set of [Constructive Solid Geometry](https://en.wikipedia.org/wiki/Constructive_solid_geometry) level design tools for building complex levels quickly inside Unity.
+* [Chisel.Prototype](https://github.com/RadicalCSG/Chisel.Prototype) - Work in progress prototype for the Chisel Level Editor, for Unity.
+* [UnityTile3D](https://github.com/NoelFB/UnityTile3D) - Simple 3D Tile Editor.
+* [HexTiles](https://github.com/RoryDungan/HexTiles) - Unity Hex Tile Editor.
+* [Editor2D](https://github.com/stillwwater/editor2d) - Tile based level editor for Unity
+
+### Game View
+
+* [Game View Maximizer](https://github.com/tomori-hikage/game-view-maximizer) - Maximizes the game view window with a Shortcut. See [related](https://answers.unity.com/questions/180607/shortcut-key-to-maximize-viewport.html).
+* [In-Game Editor UI](https://github.com/Coac/ingame-editor-ui) - Unity3D in-game UI, which shows at runtime a Hierarchy and an Inspector like the built-in Editor.
+
+#### Level Editor
+
+* [GILES](https://github.com/Unity-Technologies/giles) - A Runtime Level Editor for Unity3D. :fab fa-unity:
+* [OpenEd](https://github.com/mrzapp/opened) - Open source runtime editor for Unity.
+
+### Custom Windows
+
+* [Unity IMGUI TreeView](https://github.com/luke161/Unity-IMGUI-TreeView "") - Simple Tree View implementation for IMGUI (Editor GUI) in Unity.
+* [Unity Visual Behavior Tree](https://github.com/MystikalPooka/Unity-Visual-Behavior-Tree) - Reactive Visual Scripting Behavior Tree Tool for Unity 2018.x+.
+* [Node Level Editor](https://github.com/James-Frowen/node-level-editor "") - Unity3d Editor tools to create rooms quickly.
+* [Unity Editor Texel Density](https://github.com/bandures/Unity-Editor-Texel-Density) - Texel density editor for Unity.
+* [Texture3DPreview for Unity](https://github.com/raphael-ernaelsten/Texture3DPreview-for-Unity) - This package enables interactive previews of Texture3D assets in Unity's Inspector window.
+* [StyleBrowser](https://github.com/ByronMayne/StyleBrowser) - A browser editor window to view all Unity built in styles.
+* [Charon Unity3D](https://github.com/deniszykov/charon-unity3d) - Charon Game Data Editor Plug-in for Unity3D. Charon is a software for managing game's data. It is used for creating data structure, editing data and accessing this data in the code.
+* [Bona Data Editor](https://github.com/bonahona/BonaDataEditor) - Unity plugin editor for easier manipulation of assets of certain types. (#ATTRIBUTES)
+* [WebViewHook](https://github.com/willnode/WebViewHook) - Exposed UnityEditor WebView API.
+* [UnityMeshCounter](https://github.com/raimis001/unityMeshCounter) - Shows counters for mesh data.
+* [Unity Editor Icons](https://github.com/halak/unity-editor-icons) - Unity version: 2018.3.0f2 Icons what can load using EditorGUIUtility.IconContent.
+
+### Search
+
+* [Unity Editor Spotlight](https://github.com/marijnz/unity-editor-spotlight) - MacOS-like Spotlight file search in Unity.
+* [UniOmni](https://github.com/lochrist/UniOmni) - Global search for Unity.
+* [Selection History Navigator](https://github.com/mminer/selection-history-navigator) - Unity editor extension to navigate between object selections.
+* [UnityExtensions.SelectionHistory](https://github.com/garettbass/UnityExtensions.SelectionHistory) - Adds navigation menu items in Unity Editor: "Edit/Selection/Back", "Edit/Selection/Forward".
+* [Shortcuter](https://github.com/intentor/shortcuter) - Shortcut utility for Unity. (#SHORTCUTS)
+* [SearchTools](https://github.com/eral/SearchTools) - Search Tools In Unity.
+
+### Events
+
+* [Unity3D Extended Event](https://github.com/Thundernerd/Unity3D-ExtendedEvent "") - A UnityEvent replacement.
+* [Unity Events](https://github.com/GalvanicGames/unity-events) - A code focused strongly typed event system with global system and per GameObject system.
+* [Unity Editor Coroutines](https://github.com/marijnz/unity-editor-coroutines "") - Coroutines for Editor scripts, just like regular coroutines.
+* [ScriptableObjectEvent](https://github.com/Wokarol/ScriptableObjectEvent "")
+* [BetterEvents](https://github.com/7ark/BetterEvents "") - A replacement for UnityEvents that are: better.
+
+### Packs
+
+* [Vexe Framework (VFW)](https://github.com/vexe/VFW) - An editor extension that offers much more advance editor extensibility features than what comes out of the box with Unity.
+* [BitStrap](https://bitbucket.org/bitcake-studio/bitstrap) - A set of useful tools that will let you quickly bootstrap a new Unity project.
+* [NGTools](https://github.com/naphier/ngtools) - Unity Editor Extensions and Tools by Napland Games.
+* [Unex](https://github.com/adrenak/Unex "") - Unity3D, extended. Includes hotkeys, C# extensions, utilities and more.
+
+### Utilities
+
+* [Asset Usage Finder](https://assetstore.unity.com/packages/tools/utilities/asset-usage-finder-59997) - Editor extension for finding references of assets inside project and all scene files. :fas fa-coins:
+* [Unity Asset Usage Detector](https://github.com/yasirkula/UnityAssetUsageDetector) - Find usages of the selected asset(s) and/or Object(s) in your Unity project, i.e. list the objects that refer to them.
+* [Missing References Unity](https://github.com/liortal53/MissingReferencesUnity) - A Unity editor extension for finding missing object references.
+* [DT Compile Time Tracker](https://github.com/DarrenTsung/DTCompileTimeTracker) - Unity editor extension which tracks compile time.
+* [Unity3D Automatron](https://github.com/Thundernerd/Unity3D-Automatron) - An automation tool for Unity3D.
+* [CaptureGroup](https://github.com/ByronMayne/CaptureGroup) - A editor tool used to take screenshots for documentation.
+* [Screen Shooter](https://github.com/PhannGor/Screen-Shooter "") - A simple tool for creating screenshots at any resolution within the Unity Editor.
+* [UniDLL](https://github.com/adrenak/UniDLL "") - Editor window to create DLLs from C# code in Unity. (#Utilities)
+* [UnityAndroidIl2cppPatchDemo](https://github.com/noodle1983/UnityAndroidIl2cppPatchDemo "")
+* [Hobbyistcoder.Editor.Utilities](https://github.com/Shogan/Hobbyistcoder.Editor.Utilities "") - Useful editor extensions and utilities for Unity3D.
+* [Unity In-Editor Screen Shooter](https://github.com/ertanturan/Unity-Screenshot-Tool "") - A basic tool for capturing screenshot in Unity at desired resolution.
+
+### WebGL
+
+* [Vue Unity WebGL](https://github.com/votetake/vue-unity-webgl "") - A Vue.js component for Unity3D.
+* [React Unity WebGL](https://github.com/elraccoone/react-unity-webgl "") - React Unity WebGL provides an easy solution for embedding Unity WebGL builds in your React application, with two-way communication between your React and Unity application with advanced API's.
+* [Better WebGL Template](https://github.com/greggman/better-unity-webgl-template "") - A better default template for Unity WebGL.
+* [Unity WebGL Utilities](https://github.com/kongregate/Unity-WebGL-Utilities "") - Some helpful utilities for Unity WebGL games.
+* [UnityStreamingMovieTexture](https://github.com/jtothebell/UnityStreamingMovieTexture "") - A movie texture extension for Unity that adds support for WebGL. 
+* [Unity3D Globe](https://github.com/Dandarawy/Unity3D-Globe "") - Unity3D Implementation for Chrome Experiment WebGL Globe.
+
+### Others
+
+* [Giacomelli.Unity.EditorToolbox](https://github.com/giacomelli/Giacomelli.Unity.EditorToolbox "") - Unity3d editor tools to make life easier for game developers.
+* [Unity Editor Junkie](https://github.com/roboryantron/UnityEditorJunkie) - Editor scripts to make working with the Unity Editor better
+* [Unity Editor Snippets](https://github.com/pointcache/UnityEditorSnippets) - Collection of different editor things that help with productivity.
+* [Unity Editor Helper](https://github.com/JefferiesTube/UnityEditorHelper) - An organized bunch of scripts to make editor scripting in Unity easier.
+* [Unity Editor LINQ Extensions](https://github.com/bandures/Unity-Editor-LINQ-Extensions) -  Extensions set for Unity Editor that allows traverse hierarchy of GameObject, Components, Assets and their properties.
+* [UnityExtensions MeshIntersection](https://github.com/garettbass/UnityExtensions.MeshIntersection) - Perform a raycast against one or more meshes.
diff --git a/docs/faq/faq.md b/docs/faq/faq.md
new file mode 100644
index 0000000..1be8107
--- /dev/null
+++ b/docs/faq/faq.md
@@ -0,0 +1,3 @@
+# Frequently Asked Questions (FAQ)
+
+:construction:
diff --git a/docs/importers-exporters/importers-exporters.md b/docs/importers-exporters/importers-exporters.md
new file mode 100644
index 0000000..213a15d
--- /dev/null
+++ b/docs/importers-exporters/importers-exporters.md
@@ -0,0 +1,21 @@
+## Importers & Exporters
+
+* [PIXYZ](https://unity3d.com/es/pixyz "") - Prepare, optimize and import CAD models into your Unity3D application. :fas fa-coins:
+* [AsImpL](https://github.com/gpvigano/AsImpL "") - Asynchronous Importer and run-time Loader for Unity.
+* [FbxExporter](https://github.com/unity3d-jp/FbxExporter "") - Export meshes to .fbx or .obj from Unity.
+* [FBXImporterExporterForUnity_20150901](https://github.com/Hoetan/FBXImporterExporterForUnity_20150901 "") - FBX Importer & Exporter for Unity Trial Version 2015/09/01.
+* [ColladaExporter](https://github.com/linuxaged/ColladaExporter "") - Collada exporter for Unity3D.
+* [Unity glTF Exporter](https://github.com/tparisi/Unity-glTF-Exporter "") - Unity editor wizard that exports to glTF Format.
+* [Unity OBJ Loader](https://github.com/hammmm/unity-obj-loader "") - Runtime .OBJ file loader for Unity3D.
+* [UnityGLTF](https://github.com/KhronosGroup/UnityGLTF "") - Runtime glTF Loader for Unity3D. (Official from Khronos Group).
+* [UniGLTF](https://github.com/ousttrue/UniGLTF "") - glTF 2.0 importer and exporter for Unity 5.6 or later.
+* [Unity VMF Loader](https://github.com/atrblizzard/unity-vmf-loader "") - Import maps created in Valve Hammer Editor to Unity. 
+* [Unity Source Tools](https://github.com/atrblizzard/Unity-Source-Tools "") - Plugin to import resources from the Source engine in Unity3D.
+* [Unity Source Tools](https://github.com/lewa-j/Unity-Source-Tools "") - Plugin to import resources from the Source engine in Unity3D. (#REVIEW)
+* [Alembic For Unity](https://github.com/unity3d-jp/AlembicForUnity "") - Alembic importer and exporter plugin for Unity.
+* [Unity PSD Importer](https://github.com/ChemiKhazi/UnityPsdImporter) - Advanced PSD importer for Unity3D. (#DEPRECATED)
+* [Unity Excel Importer Maker](https://github.com/tsubaki/Unity-Excel-Importer-Maker "") - Import excel files into Unity.
+* [Stunts Unity](https://github.com/cobbpg/stunts-unity "") - A tiny Unity project to import assets from the original Stunts game.
+* [SuperPrefabReplacement](https://github.com/Seanba/SuperPrefabReplacement "") - An example of replacing Tiled objects with prefabs, automatically, during import into Unity.
+* [ExportSceneToObj](https://github.com/monitor1394/ExportSceneToObj "") - Export Unity3D scene ( objects and terrain ) or fbx to .obj file.
+* [Unity Custom Terrain Tool](https://github.com/drParadox312/Unity-Custom-Terrain-Tool- "") - Height/angle based painting
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..943c514
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <meta name="viewport" content="width=device-width,initial-scale=1">
+  <meta charset="UTF-8">
+  <title>Awesome Unity Community</title>
+  <link type="text/css" rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/themes/vue.css" />
+  <link type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/fontawesome.min.css" />
+  <link type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/brands.min.css" />
+  <link type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/regular.min.css" />
+  <link type="text/css" rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/solid.min.css" />
+  <script type="text/javascript" src="//cdn.jsdelivr.net/npm/docsify-edit-on-github"></script>
+</head>
+<body>
+  <div data-app id="main"></div>
+  <script>
+    window.$docsify = {
+      el: '#main',
+      name: 'Awesome Unity Community',
+      repo: 'https://github.com/UnityCommunity/AwesomeUnityCommunity',
+      themeColor: '#42b983',
+      loadSidebar: true,
+      coverpage: '_coverpage.md',
+      onlyCover: true,
+      autoHeader: false,
+      notFoundPage: true,
+      requestHeaders: {
+        'Access-Control-Allow-Origin': '*'
+      },
+      formatUpdated: '{DD}/{MM}/{YYYY} {HH}:{mm}',
+      // formatUpdated: function (time) {
+      //   return time;
+      // },
+      tabs: {
+        persist: true, // default
+        sync: true, // default
+        theme: 'classic', // default
+        tabComments: true, // default
+        tabHeadings: true // default
+      },
+      'flexible-alerts': {
+        style: 'flat'
+      },
+      markdown: {
+        renderer: {
+          code: function (code, lang) {
+            if (lang === "mermaid") {
+              return (
+                '<div class="mermaid">' + mermaid.render('mermaid-svg-' + num++, code) + "</div>"
+              );
+            }
+            return this.origin.code.apply(this, arguments);
+          }
+        }
+      },
+      changelog : 'CHANGELOG.md',
+      darklightTheme: {
+            siteFont : "Open Sans",
+            defaultTheme : 'dark',
+            codeFontFamily : 'Roboto Mono, Monaco, courier, monospace',
+            bodyFontSize : '14px',
+            dark: {
+                accent: '#4ECCA3',
+                toogleBackground : '#ffffff',
+                background: '#232931',
+                textColor: '#ffffff',
+                codeTextColor : '#ffffff',
+                codeBackgroudColor : '#0e2233',
+                borderColor : '#0d2538',
+                blockQuoteColour : '#858585',
+                highlightColor : '#d22778',
+                sidebarSublink : '#b4b4b4',
+                codeTypeColor : '#ffffff',
+                coverBackground : '#232931',
+                toogleImage : 'url(https://cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/icons/sun.svg)'
+            },
+            light: {
+                accent: '#42b983',
+                toogleBackground : '#091a28',
+                background: '#ffffff',
+                textColor: '#34495e',
+                codeTextColor : '#525252',
+                codeBackgroudColor : '#f8f8f8',
+                borderColor : 'rgba(0, 0, 0, 0.07)',
+                blockQuoteColor : '#858585',
+                highlightColor : '#d22778',
+                sidebarSublink : '#b4b4b4',
+                codeTypeColor : '#091a28',
+                coverBackground : 'linear-gradient(to left bottom, hsl(118, 100%, 85%) 0%,hsl(181, 100%, 85%) 100%)',
+                toogleImage : 'url(https://cdn.jsdelivr.net/npm/docsify-darklight-theme@latest/icons/moon.svg)'
+            }
+        },
+      plugins: [
+        EditOnGithubPlugin.create("https://github.com/UnityCommunity/AwesomeUnityCommunity/tree/master/docs/", null, "Edit on Github")
+      ]
+    }
+  </script>
+  <script type="text/javascript" src="//cdn.jsdelivr.net/npm/docsify@4"></script>
+  <script type="text/javascript" src="//unpkg.com/docsify-fontawesome/dist/docsify-fontawesome.min.js"></script>
+</body>
+</html>
diff --git a/docs/input/input.md b/docs/input/input.md
new file mode 100644
index 0000000..89ba9f5
--- /dev/null
+++ b/docs/input/input.md
@@ -0,0 +1,25 @@
+## Input
+
+* [TouchUIWatcher](https://github.com/Syy9/TouchUIWatcher "") - Unity GameView Touch UI Watcher.
+* [TouchScript](https://github.com/TouchScript/TouchScript "") - Complete multi-touch solution for Unity: iOS, Android, Windows, TUIO.
+* [Unity Steer](https://github.com/ricardojmendez/UnitySteer "") - Steering, obstacle avoidance and path following behaviors for the Unity Game Engine. See the [examples](https://github.com/ricardojmendez/UnitySteerExamples "").
+* [TouchKit](https://github.com/prime31/TouchKit "") - Gestures and input handling made sane for Unity.
+* [InControl](https://github.com/pbhogan/InControl "") - An input manager for Unity that tames the cross-platform controller beast. (DEPRECATED)
+* [InputBinder](https://github.com/RyanNielson/InputBinder) - Bind game inputs to methods via code or using the inspector to add event driven input handling to your project.
+* [MouseFlight](https://github.com/brihernandez/MouseFlight "") - War Thunder style mouse flight controls for aircraft.
+* [FreelancerFlightExample](https://github.com/brihernandez/FreelancerFlightExample "") - Spaceship flight in a similar style to Freelancer.
+* [InputSystem](https://github.com/Unity-Technologies/InputSystem "") - An efficient and versatile input system for Unity. :fab fa-unity:
+* [InputManager](https://github.com/daemon3000/InputManager "") - Custom InputManager for Unity.
+* [Unity Wiimote](https://github.com/Flafla2/Unity-Wiimote "") - An easy to use interface between Unity3D / C# and a Wii Remote controller.
+* [UnityMobileInput](https://github.com/mopsicus/UnityMobileInput "") - Unity mobile Input plugin for iOS and Android (Unity UI compatible).
+* [Virtual Joystick Unity](https://github.com/maydinunlu/virtual-joystick-unity "") - Virtual Joystick for Mobile Devices with Unity3D.
+* [UnityRawInput](https://github.com/Elringus/UnityRawInput "") - Windows Raw Input wrapper for Unity game engine.
+
+### Controller Mappings
+
+* [Dualshock 3 (PS3)](https://forum.unity.com/threads/ps3-button-map.89288/)
+* [Dualshock 4 (PS4)](https://twitter.com/erik_tellier/status/1071457079854944256)
+* [Nintendo Joy Con](https://www.reddit.com/r/Unity3D/comments/60wh7g/nintendo_switch_joycon_controller_mapped_for_unity/)
+* [Nintendo Pro Controller](https://answers.unity.com/questions/1419842/nintendo-switch-pro-controller-mapping.html)
+* [Xbox 360](http://wiki.unity3d.com/index.php?title=Xbox360Controller)
+* [Xbox One](https://answers.unity.com/questions/1350081/xbox-one-controller-mapping-solved.html)
diff --git a/docs/internationalization-localization/internationalization-localization.md b/docs/internationalization-localization/internationalization-localization.md
new file mode 100644
index 0000000..e633754
--- /dev/null
+++ b/docs/internationalization-localization/internationalization-localization.md
@@ -0,0 +1,9 @@
+## Internationalization & Localization (I18n & L10n)
+
+* [Language](https://github.com/FarrokhGames/Language "") - An easy-to-use localization solution for Unity3D.
+* [PolyglotUnity](https://github.com/agens-no/PolyglotUnity "") - A Polyglot Localization plugin for Unity3d that translates games to many languages.
+* [GameToolkit Localization](https://github.com/ibrahimpenekli/GameToolkit-Localization "") - Asset localization system for Unity.
+* [Unity_CSV_Localization](https://github.com/xacalite/Unity_CSV_Localization "") - Simple system for using localization values (language translations) from a CSV file in a Unity project.
+* [UnityLocalizationManager](https://github.com/Mukarillo/UnityLocalizationManager "") - Localization system to manage multiple languages including date time, currencies, and other informations that change depending on current language.
+* [Diplomata Unity](https://github.com/lavaleak/diplomata-unity "") - A Unity multi language dialogues content management system and editor extension inspired by Twine, like Fungus and Yarn, but is not node based.
+* [Localization Tool (RTL/LTR)](https://github.com/ertanturan/Unity-Localization "") - An easy-to-use alphabet and language extendible localization solution for Unity3D. Including Left-to-Right and Right-To-Left writing support for different alphabets.
diff --git a/docs/learning-resources/learning-resources.md b/docs/learning-resources/learning-resources.md
new file mode 100644
index 0000000..59fe624
--- /dev/null
+++ b/docs/learning-resources/learning-resources.md
@@ -0,0 +1,137 @@
+#  Learning Resources
+
+## Tips and Tricks
+
+* [Editor Tips](http://imgur.com/a/2w7zd) - Tips in gif form showing a few ways to use the editor more efficiently.
+* [Unity Tips](https://unity3d.com/learn/tutorials/topics/tips) - Short videos showing some handy tips when using Unity.
+* [Devdog UnityTips Compilation](https://devdog.io/blog/?tag=UnityTips) - Tweets gathered by Devdog with tips and tricks posted by developers.
+* [#UnityTips](https://twitter.com/hashtag/unitytips?src=hash) - Hashtag used in Twitter to post Unity related tips.
+* [Unity Official Tips & Tricks Videos](https://unity3d.com/es/learn/tutorials/topics/tips/unity-tips-tricks) - Video sessions recorded by Unity developers with tips and tricks for Unity.
+* [50 Unity Tips](https://github.com/defuncart/50-unity-tips) - A collection of 50 tips for Unity (focusing on Mobile) ranging from editor tools to serialization to UI shortcuts.
+
+## Books
+
+* [Unity 2018 By Example (Second Edition)](https://www.packtpub.com/game-development/unity-2018-example-second-edition)
+* [Unity Game Development in 24 Hours](https://www.amazon.com/Unity-Development-Hours-Teach-Yourself/dp/0134998138/ref=sr_1_fkmrnull_1?keywords=Unity+2018+Game+Development+in+24+Hours%2C+Sams+Teach+Yourself&qid=1548086253&s=Books&sr=1-1-fkmrnull)
+* [Unity in Action: Multiplatform Game Development in C# with Unity 5](https://www.amazon.com/gp/product/161729232X/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=161729232X&linkId=9c6a4f1db8f9e25c9e2d6458173de5e0)
+* [Learning C# by Developing Games with Unity 5.x](https://www.amazon.com/gp/product/1785287591/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1785287591&linkId=4a8a6d17929b1f02e6ad4cbadf32cc9d)
+* [Unity 5.x By Example](https://www.amazon.com/gp/product/1785888382/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1785888382&linkId=abdb54c6f24add55caf7ce2665bc4ac1)
+* [Unity AI Game Programming](https://www.amazon.com/gp/product/178528827X/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=178528827X&linkId=dd52e71985b54d994f76cc3dd6433296)
+* [Mastering Unity 2D Game Development](https://www.amazon.com/gp/product/1786463458/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1786463458&linkId=da46c86948003f30fd307e718917f597)
+* [Unity 5.x Shaders and Effects Cookbook](https://www.amazon.com/gp/product/1785285246/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1785285246&linkId=a26109ceb55490f774420795467c3fdb)
+* [Unity UI Cookbook](https://www.amazon.com/gp/product/1785885820/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1785885820&linkId=2c0abb5a96d14d3d27e37d13114bbfba)
+* [Unity 5.x Cookbook](https://www.amazon.com/gp/product/1784391360/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=whatpixel-20&camp=1789&creative=9325&linkCode=as2&creativeASIN=1784391360&linkId=29ff0faf721f67a07eea3f0de919527b)
+
+## Blogs
+
+* [Catlike Coding](http://catlikecoding.com/unity/tutorials/) - Tutorials designed for learning the C# scripting side of Unity. 
+* [Jackson Dunstan](https://jacksondunstan.com/)
+* [Keijiro Takahashi](https://www.keijiro.tokyo/) :fas fa-burn:
+* [Unity3D Official Blog](https://blogs.unity3d.com/es/) - News and deep insights involving Unity development.
+* [Alan Zucconi's Blog](https://www.alanzucconi.com/) - Shaders and maths. Well explained and very interesting.
+* [Unity Gems Wordpress](https://unitygem.wordpress.com/) - Unity3D tutorials.
+
+##  Videos
+
+### Youtube Channels
+
+* [Unity3D](https://www.youtube.com/channel/UCG08EqOAXJk_YXPDsAvReSg)
+* [Unity3D LatAm](https://www.youtube.com/channel/UCfw-8uwWw5U942pccws0duA)
+* [Brackeys](https://www.youtube.com/channel/UCYbK_tjZ2OrIZFBvU6CCMiA)
+* [Infallible Code](https://www.youtube.com/channel/UCTjnCCcuIbrprhOiaDJxxHA)
+* [Sebastian Lague](https://www.youtube.com/user/Cercopithecan/videos)
+* [quill18creates](https://www.youtube.com/channel/UCPXOQq7PWh5OdCwEO60Y8jQ)
+* [N3K EN](https://www.youtube.com/channel/UCtQPCnbIB7SP_gM1Xtv8bDQ)
+* [Jesse Etzler](https://www.youtube.com/user/JesseEtzler0/videos)
+* [Burg Zerg Arcade](https://www.youtube.com/user/BurgZergArcade/videos)
+* [Sharp Accent](https://www.youtube.com/channel/UCq9_1E5HE4c_xmhzD3r7VMw/videos)
+* [inScope Studios](https://www.youtube.com/user/KnnthRA/videos)
+* [Makin' Stuff Look Good](https://www.youtube.com/channel/UCEklP9iLcpExB8vp_fWQseg/videos)
+* [Shaders Laboratory](https://www.youtube.com/channel/UCDk9-aPr8zQzwi4ylnuoJ6w/videos)
+
+### Unity Official Sessions
+
+:construction:
+* [Unite Asia 2019 Deck (Keijiro)](https://github.com/keijiro/unite-asia-2019-deck) - Presentation deck for my talk at Unite 2019 Shanghai.
+
+## Tutorials
+
+* [Game Programming Patterns](http://gameprogrammingpatterns.com/contents.html) - Lots of great game development patterns useful when making games with or without Unity.
+* [UnityGraphicsProgramming](https://github.com/IndieVisualLab/UnityGraphicsProgramming) - UnityGraphicsProgramming vol.1.
+* [2D Splatter Effects Using the Stencil Buffer](http://nielson.io/2015/12/splatter-effects-in-unity-using-the-stencil-buffer) - Using the stencil buffer in Unity to draw splatter effects on surfaces. This could be used for paint or blood splatter.
+* [A Gentle Introduction to Shaders in Unity3D](http://www.alanzucconi.com/2015/06/10/a-gentle-introduction-to-shaders-in-unity3d) - This series of posts will  introduce you to shader coding, and is oriented to developers with little to no knowledge about shaders.
+* [Unity Dev Basic Geometry Shaders](https://github.com/theMaxscriptGuy/Unity_Dev-BasicGeometryShaders "") - An introduction to Geometry Shaders.
+* [Amit’s Game Programming Information](http://www-cs-students.stanford.edu/~amitp/gameprog.html) - An great collection of general purpose game programming content.
+* [Fixing Gaps Between Sprites](http://nielson.io/2015/10/fixing-gaps-between-sprites-better-2d-in-unity-part-2) - A short tutorial about removing the small gaps that sometimes appear between adjacent sprites.
+* [Modern GUI Development in Unity 4.6](https://www.youtube.com/playlist?list=PLt_Y3Hw1v3QTEbh8fQV1DUOUIh9nF0k6c) - A video tutorial providing an in-depth explanation of Unity's new UI system. 
+* [Official Video Tutorials](http://unity3d.com/learn/tutorials/modules) - The official tutorials for scripting, animation, audio, and almost anything Unity related.
+* [Ray Wenderlich's Tutorials](http://www.raywenderlich.com/category/unity) - Beginner and mid-level tutorials focused on learning Unity features or creating small example games.
+* [Unity in HoloLens](https://developer.microsoft.com/en-us/windows/holographic/unity_development_overview) - Official tutorials from Microsoft for creating Microsoft HoloLens applications.
+* [Unity Virtual Reality](http://docs.unity3d.com/Manual/VROverview.html) - Unity's official documentation on developing virtual reality applications.
+* [Character Customization Tutorial](https://github.com/Glauz/Unity3D-CharacterCustomizationTutorial) - This is the finished project of part 4 of the tutorial series for using blendshapes for character customization in Unity3D.
+* [Roll A-Ball ECS Style](https://github.com/KptEmreU/Roll-A-Ball-ECS-style) - Recreation of Unity Roll-A-Ball tutorial using Entity Component System.
+* [Unity Shader Tutorials](https://github.com/lindenreid/Unity-Shader-Tutorials) - Full project and code for all of my shader tutorials.
+* [Unity3D Shaders Learning](https://github.com/TarasOsiris/unity3d-shaders-learning) - ust learning Unity3D shaders here.
+* [Shader Graph Tutorials](https://github.com/Brackeys/Shader-Graph-Tutorials) - Project files for our tutorials on using Shader Graph in Unity.
+* [UnityVJShaderSlide20181108](https://github.com/kaiware007/UnityVJShaderSlide20181108)
+* [Learning-Unity-ECS](https://github.com/starikcetin/Learning-Unity-ECS)
+* [UnityGraphicsProgramming Vol.2](https://github.com/IndieVisualLab/UnityGraphicsProgramming2) - Unity Graphics Programming vol.2
+* [ShaderGraphExample](https://github.com/rngtm/ShaderGraphExample)
+* [Introduction to Shaders by Alan Zucconi](http://www.alanzucconi.com/2015/06/10/a-gentle-introduction-to-shaders-in-unity3d/) - Alan Zucconi's blog post introducing Unity shaders.
+* [Resources for Writing Shaders in Unity](https://github.com/VoxelBoy/Resources-for-Writing-Shaders-in-Unity) - For the UNITE Boston 2015 talk titled Writing Shaders: YOU can do it!
+* [Unity Character Customization](https://github.com/eriseven/UnityCharacterCustomization) - A character customization demo for Unity.
+* [Complete Unity 2018 Game Development](https://github.com/PacktPublishing/Complete-Unity-2018-Game-Development) - Explore techniques to build 2D/3D applications using real-world examples.
+* [UnityShaderCheatsheet](https://github.com/nothke/UnityShaderCheatsheet) - Collection of Unity shader copypastas and gotchas.
+* [Simple ECS](https://github.com/AkanshDivker/Simple-ECS) - An example using the core features of the Entity Component System (ECS) for Unity, inspired by Roll-a-ball.
+* [Unity Projection Mapping Tutorial](https://github.com/keijiro/unity-pm-tutorial "") - Projection Mapping tutorial.
+* [Unity Android Plugin Example](https://github.com/Real-Serious-Games/Unity-Android-Plugin-Example "") - A simple example of an Android specific plugin for Unity3D.
+* [SurvivalShooterECS](https://github.com/davidpol/SurvivalShooterECS "") - A port of Unity's official Survival Shooter tutorial to the Entity Component System.
+* [ClassicToHybrid](https://github.com/seanmoakes/ClassicToHybrid "") - A look into how to implement Hybrid ECS in a classic Unity Project.
+* [PrefabWorkflows SpiderRobots](https://github.com/UnityTechnologies/PrefabWorkflows_SpiderRobots "") - Demo Project showing the new Prefab Workflows: Prefab Mode, Editing and Nesting!
+* [Marching Cubes](https://github.com/SebLague/Marching-Cubes "")
+
+## Best Practices
+
+### Coding Practices
+
+* [Good Coding Practices in Unity](https://trello.com/b/Z6cDRyis/good-coding-practices-in-unity) - Trello board with good coding practices in Unity.
+* [Reddit's Unity Best Practices](https://www.reddit.com/r/Unity3D/comments/81v4te/what_are_software_development_best_practices_for/) - Reddit's thread with best practices collected by Unity developers.
+* [Unity Good Practices](https://github.com/futurice/unity-good-practices) - Github repository with Unity best practices.
+* [Gamasutra's 50 Tips & Best Practices](http://www.gamasutra.com/blogs/HermanTulleken/20160812/279100/50_Tips_and_Best_Practices_for_Unity_2016_Edition.php) - Gamasutra article with 50 tips and best practices.
+* [Unity3D Official Best Practices](https://unity3d.com/es/learn/tutorials/s/best-practices) - Unity's official page for best practices.
+
+### Organizational Practices
+
+:construction:
+
+## Style Guide
+
+* [Unity Styl eGuide](https://github.com/stillwwater/UnityStyleGuide) - The Ramen Unity Style Guide: For file structure, naming conventions and other things.
+
+## Shortcuts
+
+* [Unity Editor Hotkeys](https://docs.unity3d.com/Manual/UnityHotkeys.html) - Unity manual's page with editor hotkeys.
+* [Simple Editor Shortcuts Tools Collection](https://bitbucket.org/sirgru/simple-editor-shortcuts-tools-collection) - This is a small collection of simple tools to help in scene editing workflows.
+* [Raywenderlich.com Unity Cheatsheet](https://koenig-media.raywenderlich.com/uploads/2017/12/UnityCheatSheet.pdf) - Cheatsheet with some common problems when developing with Unity.
+* [Cheatografy Cheatsheet](https://www.cheatography.com/narren/cheat-sheets/unity-3d-engine/) - Hotkeys for Unity editor.
+* [UniteBerlin](https://github.com/VoxelBoy/UniteBerlin) - Repository for my Unite Berlin talk - Become a Speed Demon: Being faster at everything you do in Unity.
+
+## Other references
+
+* [Unity3D Github Page](https://github.com/Unity-Technologies "") - Unity3D Github Page. :fab fa-unity:
+* [Unity3D C# Reference](https://github.com/Unity-Technologies/UnityCsReference "") - Unity C# reference source code. :fab fa-unity:
+* [Unity3D Script Reference](http://docs.unity3d.com/ScriptReference/ "") - Unity scripting reference.
+* [UnityReleaseNotes](https://github.com/UnityCommunity/UnityReleaseNotes "") - Unity Release Notes. To be used with Github search.
+* [Unity Roadmap](http://unity3d.com/roadmap "") - Unity Feature Roadmap.
+* [Microsoft HLSL Reference](https://docs.microsoft.com/en-us/windows/desktop/direct3dhlsl/dx-graphics-hlsl-reference "") - HLSL language reference for shaders.
+* [NVIDIA CG Reference](http://developer.download.nvidia.com/cg/index_stdlib.html "") - NVIDIA's computer graphics reference for shaders.
+* [Unity Graphics Reference](https://docs.unity3d.com/Manual/GraphicsReference.html "") - Unity Feature Roadmap.
+* [Job System Cookbook](https://github.com/stella3d/job-system-cookbook "") - Examples of using the C# Job System in Unity 2018.
+* [Unity Editor Manual](http://anchan828.github.io/editor-manual/ "") - Unity editor unofficial manual written in Japanese.
+* [Awesome Unity](https://github.com/RyanNielson/awesome-unity "") - Awesome list repository for Unity. (Already integrated in the repository) 
+* [Awesome Unity Free](https://github.com/netpyoung/awesome-unity-free "") - A community driven list of useful Unity Game Engine 'FREE' packages, libraries and others. (Note: Resources are already integrated into this repository).
+* [Awesome Unity3D](https://github.com/insthync/awesome-unity3d "") - A categorized collection of awesome opensource unity3d repos.
+* [Unity Script Collection](https://github.com/michidk/Unity-Script-Collection "") - A maintained collection of useful & free unity scripts / library's / plugins and extensions.
+* [Unity3d Open Source](https://unity3d-open-source.zeef.com/taras.leskiv "") - Useful Unity repositories sorted by topics.
+* [Unity Script Collection](https://github.com/michidk/Unity-Script-Collection "") -  A maintained collection of useful & free unity scripts / library's / plugins and extensions. 
+* [Awesome Unity Wiki](https://github.com/agarcialeon/awesome-unity/wiki "") - The wiki of this repository.
diff --git a/docs/machine-learning/machine-learning.md b/docs/machine-learning/machine-learning.md
new file mode 100644
index 0000000..d61b678
--- /dev/null
+++ b/docs/machine-learning/machine-learning.md
@@ -0,0 +1,16 @@
+## Machine Learning
+
+* [Unity3D Machine Learning Toolkit](https://github.com/Unity-Technologies/ml-agents "") - Unity Machine Learning Agents Toolkit. :fab fa-unity:
+* [PPOL](https://github.com/A7ocin/PPOL) - A crowd simulator based on Unity's ML Agents and using PPO Reinforcement Learning Algorithm.
+* [UnityTensorflowKeras](https://github.com/tcmxx/UnityTensorflowKeras "") - Unity In Editor Deep Learning Tools. Using KerasSharp, TensorflowSharp, Unity MLAgent. In-Editor training and no python needed.
+* [Unity Reinforcement Learning](https://github.com/eProw/Unity-reinforcement-learning "") - Reinforcement Learning project based on genetic algorithms.
+* [Unity TensorRT](https://github.com/aman-tiwari/Unity-TensorRT "") - Unity + TensorRT integration.
+* [TFClassify Unity](https://github.com/Syn-McJ/TFClassify-Unity "") - An example of using Tensorflow with Unity for image classification and object detection.
+* [Pix2Pix](https://github.com/keijiro/Pix2Pix "") - Real-time pix2pix implementation with Unity.
+* [ML Game](https://github.com/aman-tiwari/ml-game "") - Experiments with Unity and Pix2Pix.
+* [Angry AI](https://github.com/mbaske/angry-ai "") - Unity Machine Learning Battle Robots.
+* [Unity Neural Network Tanks AI](https://github.com/trulyspinach/Unity-Neural-Network-Tanks-AI "") - A simple tank battle game but it's controlled by Neural Network.
+* [ML Explorer Drone](https://github.com/mbaske/ml-explorer-drone "") - Unity Machine Learning Controlled Explorer Drone.
+* [Unity ML Environments](https://github.com/MarcoMeter/Unity-ML-Environments "") - This repository features game simulations as machine learning environments to experiment with deep learning approaches such as deep reinforcement learning inside of Unity.
+* [Obstacle Tower Challenge](https://github.com/Unity-Technologies/obstacle-tower-challenge "") - Starter Kit for the Unity Obstacle Tower challenge. :fab fa-unity:
+* [Obstacle Tower Environment](https://github.com/Unity-Technologies/obstacle-tower-env "") - A procedurally generated environment consisting of multiple floors to be solved by a learning agent. It is designed to test learning agents abilities in computer vision, locomotion skills, high-level planning, and generalization. :fab fa-unity:
diff --git a/docs/misc/misc.md b/docs/misc/misc.md
new file mode 100644
index 0000000..e7dc670
--- /dev/null
+++ b/docs/misc/misc.md
@@ -0,0 +1,63 @@
+## Misc.
+
+* [Unity Version Manager](https://github.com/wooga/unity-version-manager "") - Tool that just manipulates a link to the current unity version. Unity already provides a similar tool (Unity Hub).
+* [Incremental Compiler](https://github.com/SaladLab/Unity3D.IncrementalCompiler "") - Incremental Compiler Github's Page
+* [Unity3D.IncrementalCompiler](https://github.com/SaladLab/Unity3D.IncrementalCompiler "") - Unity3D Incremental C# Compiler using Roslyn.
+* [Il2CppDumper](https://github.com/Perfare/Il2CppDumper "") - Get types, methods, fields and so on from Unity Il2Cpp binary file.
+* [ILSpy](https://github.com/icsharpcode/ILSpy "") - .NET Decompiler.
+* [dotPeek](https://www.jetbrains.com/decompiler/ "") - Jetbrains decompiler.
+* [Unity Metadata Loader](https://github.com/nevermoe/unity_metadata_loader "") - This project will load strings and method/class names in global-metadata.dat to IDA.
+* [ConditionalCompilationUtility](https://github.com/Unity-Technologies/ConditionalCompilationUtility "") - Automatically add defines upon the detection of predicate classes. ![Official](UnityResource16x16.png)
+* [FontainebleauDemo](https://github.com/Unity-Technologies/FontainebleauDemo "") - Fontainebleau demo (#PHOTOGRAMMETRY) ![Official](UnityResource16x16.png)
+* [UnityPlayground](https://github.com/Unity-Technologies/UnityPlayground "") - A collection of simple scripts to create 2D physics game, intended for giving workshops to a young audience. ![Official](UnityResource16x16.png)
+* [KenneyNL](https://www.kenney.nl/ "") - Tools, free assets and more.
+* [Fellow Oak Dicom](https://github.com/fo-dicom/fo-dicom "") - Fellow Oak DICOM for .NET, .NET Core, Universal Windows, Android, iOS, Mono and Unity.
+* [UnityWorker](https://github.com/OpenMined/UnityWorker "") - (#DEPRECATED)
+* [uDesktopDuplication](https://github.com/hecomi/uDesktopDuplication "") - Desktop Duplication API implementation for Unity (only for Windows 8/10).
+* [UnityAssets](https://github.com/BLINDED-AM-ME/UnityAssets "") - ?
+* [SuperScience](https://github.com/Unity-Technologies/SuperScience "") - Gems of Unity Labs for our user-base. ![Official](UnityResource16x16.png)
+* [Unity WaterBuoyancy](https://github.com/dbrizov/Unity-WaterBuoyancy "") - Water Buoyancy Simulation for Unity.
+* [Performance Benchmark Reporter](https://github.com/Unity-Technologies/PerformanceBenchmarkReporter "") - The Unity Performance Benchmark tool enables partners and developers to establish benchmark samples and measurements using the Performance Testing package, then use these benchmark values to compare subsequent performance test results in an html output utilizing graphical visualizations. ![Official](UnityResource16x16.png)
+* [UnEngine](https://github.com/jbruening/UnEngine "") - A clone of the UnityEngine.dll so you can write and test scripts outside of Unity.
+* [Ardity](https://github.com/dwilches/Ardity "") - Assets for integrating Arduino and Unity (or Unity and any hardware that communicates over a COM port).
+* [Wrmhl](https://github.com/relativty/wrmhl "") - Super fast communication beetwen Unity3D and Arduino. Create Interactive experiences in a minute.
+* [Unity Arduino Examples](https://github.com/tanyuan/unity-arduino-examples "") - Unity and Arduino example projects.
+* [Delft Toolkit v2](https://github.com/pvanallen/delft-toolkit-v2 "") - Tool for Designing Smart Collaborative Things.
+* [UnitySerialPort](https://github.com/prossel/UnitySerialPort "") - Script to work with serial port in Unity. Optimized to work with TSV, CSV or other character delimited values.
+* [URDF Loaders](https://github.com/gkjohnson/urdf-loaders "") - URDF Loaders for Unity and THREE.js with example ATHLETE URDF Files.
+* [3D Y86](https://github.com/chenkaiyu1997/3D-Y86 "") - A 3D Y86 simulator with tangible processors, light trails and halos, powered by Unity-3D.
+* [Braccio IK Unity](https://github.com/tanyuan/braccio-ik-unity "") - Braccio robotic arm simulator with IK (inverse kinematics) and controller via Serial in Unity.
+* [Mesh Streamer](https://github.com/glowbox/mesh-streamer "") - A general purpose system for streaming mesh data into Unity.
+* [Concordia Module](https://github.com/sblack-usu/concordia-module "")
+* [DotLiquid](https://www.nuget.org/packages/DotLiquid/1.8.0 "") - A templating system ported to the .NET framework from Ruby’s Liquid Markup.
+* [Schemy](https://github.com/Microsoft/schemy "") - A lightweight embeddable Scheme-like interpreter for configuration.
+* [Flunity](https://github.com/canab/flunity "") - Main idea is make it possible to use Adobe Flash for creating visual content for Unity games.
+* [Unity Matrix Order](https://github.com/KoltesDigital/unity-matrix-order "") - Minimal project to outline matrix application in Unity.
+* [ThreeDScans](https://github.com/keijiro/ThreeDScans) - Scanned statue models from the Three D Scans project, optimized for real-time rendering use.
+* [Environment](https://github.com/Roland09/Environment "") - Environmental Assets for Unity Prototyping.
+* [Unicorn](https://github.com/Roland09/Unicorn "") - A custom made Unicorn Horn with optional rainbow particle effects.
+* [PeppersGhostStage](https://github.com/cecarlsen/PeppersGhostStage "") - Perppers Ghost stage model.
+* [UnitySamples](https://github.com/hiryma/UnitySamples "")
+* [Hw18 Infinity ECS](https://github.com/UnityTech/hw18-infinity-ecs "") - Unity Hackweek 2018 project.
+* [AnotherThreadECS](https://github.com/Unity-Technologies/AnotherThreadECS "") - A demo made with ECS. ![Official](UnityResource16x16.png)
+* [Laser Eye Surgery](https://github.com/dixonary/laser-eye-surgery "") - A game made with Unity in 48 hours for Global Game Jam, using the Tobii EyeX Eye Tracker.
+* [Unity Visual Effects Graph Practice](https://github.com/ya7gisa0/Unity-Visual-Effects-Graph-Practice "") - Project data of my artwork "Demographics of Israel: Data Sculpture".
+* [Unity Graphics Demo](https://github.com/Heep042/Unity-Graphics-Demo "") - This is a project demonstrating the capabilities of the Unity 3D engine. Everything is taken from all over the place. Links to the original owners are provided.
+* [ChemistryEngine](https://github.com/Dalab-LabX/ChemistryEngine "") - Chemistry Engine for Unity.
+* [Eflatun.ReflectiveECS](https://github.com/starikcetin/Eflatun.ReflectiveECS "") - A proof of concept for a reflection-based ECS system for C#.
+* [Unity3D Experiments](https://github.com/papaboo/Unity3D-experiments "") - A unity project containing several subprojects with experiments. They have been stuffed into one project to easily share resources across experiments.
+* [Unity3D.CharacterCreator](https://github.com/Shogan/Unity3D.CharacterCreator "") - A character creator project utilising DynamoDB for character configuration storage.
+* [Pepper's Cone Unity](https://github.com/gucheng0712/Pepper-s-Cone-Unity "") - Pepper's Cone with Unity.
+* [Sample AfterEffectsToUnity](https://github.com/hiryma/Sample-AfterEffectsToUnity "") - Example of exporting after effects animations to Unity.
+* [Galaxia Runtime](https://github.com/simeonradivoev/Galaxia-Runtime "") - Galaxy generator for Unity 3D, with Custom Particle Distributors, DirectX 11 Particles and Highly customization, curve driven Generation.
+* [Galaxia Editor](https://github.com/simeonradivoev/Galaxia-Editor "") - The editor scripts for Galaxia.
+* [UnityHDROutputPlugin](https://github.com/aosoft/UnityHDROutputPlugin "") - Unity HDR Display Output plugin for Windows 10.
+* [GodofWar AxeThrow](https://github.com/mixandjam/GodofWar-AxeThrow "") - Recreating the Axe Throw mechanic from God of War.
+* [MiraikomachiUnity](https://github.com/Miraikomachi/MiraikomachiUnity "") - Anime character for Unity.
+* [ECS Phyllotaxis](https://github.com/jeffvella/ECS-Phyllotaxis "") - Learning ECS - 100k Cubes in Phyllotaxis pattern.
+* [CustomWorldBootstrap](https://github.com/Sibz/CustomWorldBootstrap "")
+* [UnitySamples](https://github.com/hiryma/UnitySamples "")
+* [Unity 3D Lessons](https://github.com/Winchy/Unity3d-Lessons "")
+* [SimpleIncremental](https://github.com/ErikOverflow/SimpleIncremental "") - A simple Unity project that introduces many of Unity's cooler advanced concepts.
+* [Physarum](https://github.com/DenizBicer/Physarum "") - This project implements the algorithm presented in the paper "Characteristics of Pattern Formation and Evolution in Approximations of Physarum Transport Networks" by Jeff Jones.
+* [Libmmd for Unity](https://github.com/x3bits/libmmd-for-unity "") - A library for loading mikumikudance files at runtime in Unity 3D.
diff --git a/docs/mixed-reality/mixed-reality.md b/docs/mixed-reality/mixed-reality.md
new file mode 100644
index 0000000..2eb9967
--- /dev/null
+++ b/docs/mixed-reality/mixed-reality.md
@@ -0,0 +1,19 @@
+## Mixed Reality
+
+* [Microsoft Hololens 2](https://www.microsoft.com/en-us/hololens "") - Second generation mixed reality device developed by Microsoft. See its [guides](https://azure.microsoft.com/es-es/topic/mixed-reality/).
+* [Microsoft Mixed Reality Toolkit](https://github.com/Microsoft/MixedRealityToolkit-Unity "") - Microsoft Mixed Reality Toolkit.
+* [Azure Spatial Anchors Samples](https://github.com/Azure/azure-spatial-anchors-samples "") - Azure Spatial Anchors is a managed cloud service and platform that enables multi-user, spatially aware mixed reality and augmented reality (MR/AR) apps for HoloLens, iOS devices with ARKit, and Android devices with ARCore. 
+* [Ong Sharing Drag n Drop](https://github.com/mr0ng/Ong-Sharing-Drag-n-Drop "") - Ong's Drag and Drop Sharing Solution.
+* [XRTK (Mixed Reality Toolkit)](https://github.com/XRTK/core "") - The Mixed Reality Framework's core interface contracts, services, and utilities.
+* [Visual Profiler Unity)](https://github.com/Microsoft/VisualProfiler-Unity "") - The VisualProfiler provides a drop in, single file, solution for viewing your Windows Mixed Reality Unity application's frame rate and memory usage.
+* [Unity Cognitive Services Demos](https://github.com/misslivirose/unity-cognitive-services-demos "") - Examples of using Microsoft's Cognitive Services in Unity for HoloLens.
+* [Mixed Reality Design Labs Unity](https://github.com/Microsoft/MixedRealityDesignLabs_Unity "") - Mixed Reality Design Labs share experimental samples, explorations and learning from Windows Mixed Reality Design group.
+* [Editor XR](https://github.com/Unity-Technologies/EditorXR "") - Author XR in XR. :fab fa-unity:
+* [XR Components](https://github.com/CandyCoded/XR-Components "") - Generic components for use with XR.
+* [UnityLIB XR Interaction](https://github.com/Fjordnet/UnityLIB-XRInteraction "") - A library for Unity3D which enables someone to create an XR application for any XR headset and controllers through one unified set of abstractions and one single library.
+* [Unity XR Grab And Climb](https://github.com/immemorable-moniker/UnityXRGrabAndClimb "") - This Unity project is a very simple XR interactions example that implements grabbing and climbing using Unity's multiplatform APIs.
+* [MR Lighting Tools Unity](https://github.com/Microsoft/MRLightingTools-Unity "") - A Unity library and MRTK extension for estimating and replicating the current environment's lighting on Mixed Reality devices.
+* [MRHand](https://github.com/Ayfel/MRHand "") - Script for handling Input for MR devices through native Unity code.
+* [Avatar Spec](https://github.com/VRBA/avatar-spec "") - A standardized spec for avatars for a multitude of interpreters made for different platforms (JavaScript, Unity, Unreal Engine etc.), so that avatars can be created once and work everywhere.
+* [Looking Glass](https://lookingglassfactory.com/ "") - A universal holographic display for 3D creators. (#VIRTUAL-REALITY) (#AUGMENTED-REALITY)
+* [LKGVR180Player](https://github.com/nkjzm/LKGVR180Player "") - VR180 Player by the [Looking Glass](https://lookingglassfactory.com/).
diff --git a/docs/modding/modding.md b/docs/modding/modding.md
new file mode 100644
index 0000000..0e793be
--- /dev/null
+++ b/docs/modding/modding.md
@@ -0,0 +1,6 @@
+## Modding
+
+* [Harmony](https://github.com/pardeike/Harmony "") - A library for patching, replacing and decorating .NET and Mono methods during runtime
+* [dnSpy](https://github.com/0xd4d/dnSpy "") - A library for patching, replacing and decorating .NET and Mono methods during runtime.
+* [MonoMod](https://github.com/0x0ade/MonoMod "") - A general purpose .NET assembly modding "basework", powered by cecil.
+* [PartialityLauncher](https://github.com/PartialityModding/PartialityLauncher "") - The launcher for Partiality.
diff --git a/docs/monetization/monetization.md b/docs/monetization/monetization.md
new file mode 100644
index 0000000..96e99ce
--- /dev/null
+++ b/docs/monetization/monetization.md
@@ -0,0 +1,10 @@
+## Monetization
+
+* [Unity Ads](https://www.assetstore.unity3d.com/en/#!/content/21027) - Unity Ads is a video ad network with quick and seamless integration using regular and opt-in ads.
+* [Unity3D Store](https://github.com/soomla/unity3d-store) - Unity in-app purchase & virtual economy library. Part of The SOOMLA Framework - for game design, economy modeling and faster development.
+* [AdMob Unity Plugin](https://github.com/OrigameStudio/admob-unity-plugin) - An extension for Unity3d to place AdMob banners in your Android games. (#PLUGINS)
+* [Unity3D LevelUp](https://github.com/soomla/unity3d-levelup) - Unity3D F2P game progression library - worlds, levels, missions, scores, records and more. Part of The SOOMLA Framework - for game design, economy modeling and faster development.
+* [Google Mobile Ads Unity Plugin](https://github.com/googleads/googleads-mobile-unity) - Official Unity Plugin for the Google Mobile Ads SDK.
+* [OpenIAB](https://github.com/onepf/OpenIAB) - Open In-App Billing for Google Play, SlideMe, Amazon Store, Nokia Store, Samsung Apps, Yandex.Store, Appland, Aptoide, AppMall and Fortumo.
+* [DeltaDNA Unity SDK](https://github.com/deltaDNA/unity-sdk) - Add support for deltaDNA's platform and smartads mediation to your Unity games.
+* [Vungle Unity Plugin](https://github.com/Vungle/Unity-Plugin "") - Vungle's Unity Plugin. Monetization SDK. (#MONETIZATION)
diff --git a/docs/navigation-mesh/navigation-mesh.md b/docs/navigation-mesh/navigation-mesh.md
new file mode 100644
index 0000000..f257981
--- /dev/null
+++ b/docs/navigation-mesh/navigation-mesh.md
@@ -0,0 +1,8 @@
+## Navigation Mesh (NavMesh)
+
+* [ST2U2DNavMeshImporter](https://github.com/SharlatanY/ST2U2DNavMeshImporter "") - Provides a custom importer to automatically setting up 2D Navmeshes (Using NavMeshSurface2DBaker) when importing "Tiled" tilemaps through SuperTiled2Unity.
+* [NavMeshSurface2DBaker](https://github.com/SharlatanY/NavMeshSurface2DBaker "") - Provides functionality to bake 2D colliders into NavMeshSurface components.
+* [NavMeshPlus](https://github.com/h8man/NavMeshPlus "") - Unity NavMesh 2D Pathfinding.
+* [Unity ECS NavMesh](https://github.com/zulfajuniadi/unity-ecs-navmesh "") - A demo implementation of Unity Entity Component System with NavMesh.
+* [Navigator](https://github.com/liuhaopen/Navigator "") - This project provides unity scripts to export navmesh data into tile cache files that can be used directly by recastnavigation.
+* [NavMeshPainter](https://github.com/AsehesL/NavMeshPainter "")
diff --git a/docs/networking/networking.md b/docs/networking/networking.md
new file mode 100644
index 0000000..e0cc9aa
--- /dev/null
+++ b/docs/networking/networking.md
@@ -0,0 +1,93 @@
+## Networking
+
+### Frameworks
+
+* [SpatialOS GDK for Unity](https://github.com/spatialos/gdk-for-unity) - Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK. (Terms of Service discussion alert!)
+* [Pitaya](https://github.com/topfreegames/pitaya) - Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.
+* [MLAPI](https://github.com/MidLevel/MLAPI) - A game networking framework built for the Unity Engine to abstract game networking concepts.
+* [MLAPI.Relay Documentation](https://github.com/MidLevel/MLAPI.Relay-Documentation) - This is the repository for the MLAPI.Relay, a UNET Relay. This is where documentation and issues can be found and reported.
+* [Barebones Master Server](https://github.com/alvyxaz/barebones-masterserver) - Master Server framework for Unity.
+* [SmartFoxServer 2X](http://docs2x.smartfoxserver.com/ExamplesUnity/introduction) - A comprehensive SDK for rapidly developing multiplayer games and applications with Adobe Flash/Flex/Air, Unity, HTML5, iOS, Windows Phone 8, Android, Java, Windows 8, C++ and more.
+* [Mirror](https://github.com/vis2k/Mirror) - A community replacement for Unity's abandoned UNET Networking System.
+* [Insight](https://github.com/uweenukr/Insight) - Simple message server for Mirror.
+* [Forge Networking Remastered](https://github.com/BeardedManStudios/ForgeNetworkingRemastered) - In short, Forge Networking is a free and open source multiplayer game (multi-user) networking system that has a very good integration with the Unity game engine.
+* [Photon Bolt](https://www.assetstore.unity3d.com/en/#!/content/41330) - Build networked games without having to know the details of networking or write any complex networking code. :fas fa-coins:
+* [Photon Unity Networking](https://www.assetstore.unity3d.com/en/#!/content/1786) - Plug and play cloud networking that also works for local hosting. Free for up to 20 concurrent users.
+* [Xavier](https://github.com/adrenak/Xavier "") - A networking solution for Unity based on Telepathy.
+* [Nakama](https://www.assetstore.unity3d.com/en/#!/content/81338) - Build social and realtime games with an open-source [distributed server](https://github.com/heroiclabs/nakama).
+* [Nakama Unity](https://github.com/heroiclabs/nakama-unity) - Unity client for Nakama server.
+* [Facepunch.Steamworks](https://github.com/Facepunch/Facepunch.Steamworks) - Another fucking C# Steamworks implementation.
+* [Facepunch.Steamworks.Unity](https://github.com/Facepunch/Facepunch.Steamworks.Unity "") - Tests for Facepunch.Steamworks in Unity3D.
+* [SteamNetworking](https://github.com/momower1/SteamNetworking "") - Steamworks for Unity using the Facepunch.Steamworks API.
+* [MagicOnion](https://github.com/Cysharp/MagicOnion "") - Unified Realtime/API Engine for .NET Core and Unity.
+* [Colyseus](http://colyseus.io/) - Multiplayer Game Server for Node.js. [Demo with Unity3D](https://github.com/gamestdio/colyseus-unity3d)
+* [MateriaGame DarkRift2 Tutorial](https://github.com/TheUncas/MateriaGame-DarkRift2-tutorial) - DarkRift2 Tutorial. See [more](https://darkriftnetworking.com/DarkRift2).
+* [EmbeddedFPSExample](https://github.com/LestaAllmaron/EmbeddedFPSExample) - An example on how to create a FPS game with Darkrift 2.
+* [DarkriftSerializationExtensions](https://github.com/LestaAllmaron/DarkriftSerializationExtensions) - A small collection of useful extension methods for Darkrift2.
+* [LiteNetLibManager DarkRift2](https://github.com/insthync/LiteNetLibManager_DarkRift2) - DarkRift2 transport layer for LiteNetLibManager project.
+* [Barebones Masterserver](https://github.com/alvyxaz/barebones-masterserver) - Master Server framework for Unity.
+* [SpeedDate](https://github.com/proepkes/SpeedDate) - SpeedDate Masterserver: Connecting Players.
+* [IonNetworking](https://github.com/andrewsc2001/IonNetworking) - A dedicated server setup for Unity. 
+
+### Libraries
+
+* [Networker](https://github.com/MarkioE/Networker "") - A simple to use TCP and UDP networking library for .NET. Compatible with Unity.
+* [Hazel Networking](https://github.com/DarkRiftNetworking/Hazel-Networking) - A low level networking library for C# providing connection orientated, message based communication via TCP, UDP and RUDP.
+* [MassiveNet](https://github.com/jakevn/MassiveNet) - Unity3D UDP networking library focused on high-CCU, multi-server architecture.
+* [ENet CSharp](https://github.com/nxrighthere/ENet-CSharp) - Reliable UDP networking library extended for the .NET environment.
+* [ENetListener](https://github.com/LestaAllmaron/ENetListener) - This listener allows you to send UDP and RUDP messages thus changing the SendMode. Reliable to use RUDP instead of TCP which has many advantages over TCP.
+* [SocketIoClientDotNet](https://github.com/Quobject/SocketIoClientDotNet) - Socket.IO Client Library for .NET.
+* [UnitySocketIO](https://github.com/NetEase/UnitySocketIO) - Socket.io client for Unity.
+* [UnityHTTP](https://github.com/andyburke/UnityHTTP) - A TCP client-based HTTP library for Unity.
+* [LiteNetLib](https://github.com/RevenantX/LiteNetLib) - Lite and reliable UDP library for Mono and .NET.
+* [LiteNetLibManager](https://github.com/insthync/LiteNetLibManager) - Higher level implementation for LiteNetLib.
+* [Pomelo Unity Client](https://github.com/NetEase/pomelo-unityclient-socket) - A client for Pomelo distributed game server in Node.js.
+* [HiSocket](https://github.com/hiramtan/HiSocket) - It is a lightweight socket solution, you can used it in Unity3D or C# project.
+* [BenchmarkNet](https://github.com/nxrighthere/BenchmarkNet) - Benchmark for testing the reliable UDP networking solutions.
+* [Unet HLAPI Manager](https://github.com/insthync/unet-hlapi-manager) - The simple network manager based on Unity's NetworkManager without players, scenes stuffs focus on network messages callback handles. Intenly made for multiple server purposes.
+* [Firestorm](https://github.com/5argon/Firestorm) - Makeshift Cloud Firestore C# API that works with Unity via REST API. Contains only basic functions.
+* [Unity Timeline Sync](https://github.com/asus4/unity-timeline-sync) - Synchronize multiple Unity Timeline via UDP.
+* [Chanquo](https://github.com/sassembla/Chanquo) - Golang-channel partial implementation for Unity.
+* [Dissonance](https://github.com/Placeholder-Software/Dissonance) - Unity Voice Chat Asset.
+* [UniP2P](https://github.com/unip2p/UniP2P) - Unity P2P Network Library.
+
+### REST
+
+* [RestClient](https://github.com/proyecto26/RestClient) - Simple HTTP and REST client for Unity based on Promises, also supports Callbacks!
+* [RESTClient](https://github.com/Unity3dAzure/RESTClient) - REST Client for Unity with JSON and XML parsing. (Features JSON helper to handle nested arrays and deserializing abstract types).
+* [Restifizer Unity3D](https://github.com/vedi/restifizer-unity3d) - Restifizer SDK for Unity3d. A way to significantly simplify creation of full-functional RESTful services, using MongoDB as a database.
+* [UnityOpenApi](https://github.com/kolodi/UnityOpenApi) - Unity friendly RESTful API client generator.
+
+### Web Sockets
+
+* [UnityWebSocket](https://github.com/Unity3dAzure/UnityWebSocket) - Web Socket client for Unity.
+* [Websocket Sharp](https://github.com/sta/websocket-sharp) - A C# implementation of the WebSocket protocol client and server.
+
+### WebRTC
+
+* [AirPeer](https://github.com/adrenak/AirPeer) - A WebRTC based networking plugin for Unity.
+* [WebRTC Unity Plugin](https://github.com/bengreenier/webrtc-unity-plugin) - Cross-platform Webrtc support for Unity apps. (#PLUGINS)
+* [P2P.NET](https://github.com/Phylliida/P2P.NET) - (Formerly UnityP2P) Peer to peer networking in Unity using WebRTC and a free Heroku server for signaling.
+
+### JWT
+
+* [JWT for Unity](https://github.com/monry/JWT-for-Unity) - JWT (JSON Web Token) implementation for .NET 3.5+ (Public Domain).
+
+### VoIP
+
+* [UniVoice](https://github.com/adrenak/UniVoice) - P2P VoIP in Unity.
+* [uNetVoice](https://github.com/hecomi/uNetVoice) - Tiny voice chat implementation for Unity. 
+
+### Examples
+
+* [Unity Multiplayer Packages](https://github.com/Unity-Technologies/multiplayer) - Unity multiplayer packages and samples. ![Official](UnityResource16x16.png)
+* [Basic Multiplayer Unity](https://github.com/manlaig/basic_multiplayer_unity) - Fast-Paced UDP Client-Server implementation.
+* [Gambetta_Networked Demo](https://github.com/RamiAhmed/Gambetta_NetworkedDemo) - Fast-Paced Multiplayer: Sample Code and Live Demo - Gabriel Gambetta's Multiplayer Network Demo in Unity C# as Networked using Lidgren Network.
+* [UnityUnetMovement](https://github.com/GenaSG/UnityUnetMovement) - This repository contains Unity3D UNET based server-authoritative movement script with client-side prediction and reconciliation.
+* [Unity UNET Authoritative Networking](https://github.com/atrakeur/unity-unet-authoritative-networking) - A simple implementation of authoritative movement on top of UNET. (#DEPRECATED)
+* [NATPunchthroughClient](https://github.com/noblewhale/NATPunchthroughClient) - An example implementation of NAT Punchthrough combined with Unity's UNet HLAPI.
+* [Unity Physics CSP](https://github.com/spectre1989/unity_physics_csp) - Basic implementation of client-side prediction in Unity, so real networking happens, all network traffic is simulated in a single Unity instance.
+* [uTextureSendReceive](https://github.com/BarakChamo/uTextureSendReceive) - Unity network texture sender and receiver for video and frame streaming.
+* [UnityReplaySystem](https://github.com/IronWarrior/UnityReplaySystem) - Project demonstrating how to use input logging to create a replay system, where the replay is viewed by replaying the inputs with a deterministic fixed timestep.
+* [CppUnityTCPClientServer](https://github.com/Willtl/CppUnityTCPClientServer) - Test project Unity client, C++ (with boost) server (TCP).
+* [Local Multiplayer UI](https://github.com/lejean/Local-multiplayer-UI) - A unity project made for navigating the UI for a local multiplayer game. Contains a custom input module made for 4 controllers using X_input/direct input.
diff --git a/docs/patterns/patterns.md b/docs/patterns/patterns.md
new file mode 100644
index 0000000..9e6cbe0
--- /dev/null
+++ b/docs/patterns/patterns.md
@@ -0,0 +1,15 @@
+### Patterns
+
+* [Unity Design Patterns](https://github.com/QianMo/Unity-Design-Pattern "") - All Gang of Four Design Patterns written in Unity C# with many examples. And some Game Programming Patterns written in Unity C#.
+* [unity-design-patterns](https://github.com/Naphier/unity-design-patterns "") - Examples of programming design patterns in Unity C#.
+* [Disruptor Unity3D](https://github.com/dave-hillier/disruptor-unity3d "") - Basic implementation of Disruptor for Unity3d.
+* [Unity Singleton](https://github.com/BharathVishal/Unity-Singleton "") - A sample project explaining the usage of singleton object to hold global game state.
+* [yaSingleton](https://github.com/jedybg/yaSingleton) - A singleton pattern implementation for Unity3d. Based on ScriptableObjects instead of the conventional MonoBehaviour approach.
+* [UnitySingleton](https://github.com/UnityCommunity/UnitySingleton) - The best way to implement singleton pattern in Unity.
+* [Factory](https://github.com/Real-Serious-Games/Factory) - Factory for object creation and dependency injection. Works with normal C# apps or under Unity3D.
+* [Design Patterns in Unity Example](https://github.com/marwie/Design-Patterns-in-Unity-Example) - Most of Derek Banas Video Tutorial Series on Design Patterns to C# in Unity translated.
+* [Signals](https://github.com/UnityPatterns/Signals) - A simple, easy to implement, editor-driven signal/event system for Unity. See  author's [repositories](https://github.com/UnityPatterns).
+* [Message Bus Pattern](https://github.com/franciscotufro/message-bus-pattern) - A Unity pattern to avoid object coupling.
+* [Unity Game Programming Patterns](https://github.com/TarasOsiris/unity-game-programming-patterns) - Game Programming Pattern Examples in Unity3D.
+* [Unity Singleton MonoBehavior](https://github.com/kleber-swf/Unity-Singleton-MonoBehaviour) - An implementation of Singleton pattern for Unity MonoBehaviours.
+* [Prototype](https://github.com/inkle/prototype) - Prototype component pattern for Unity.
diff --git a/docs/physics/physics.md b/docs/physics/physics.md
new file mode 100644
index 0000000..e8c22ea
--- /dev/null
+++ b/docs/physics/physics.md
@@ -0,0 +1,39 @@
+## Physics
+
+* [BulletSharpUnity3D](https://github.com/Phong13/BulletSharpUnity3d "") - A fork of the BulletSharp project to make the Bullet Physics Engine usable from C# code in Unity3D.
+* [GPU Physics Unity](https://github.com/jknightdoeswork/gpu-physics-unity "") - Through this configuration, no per voxel data is transferred between the GPU and the CPU at runtime.
+* [Jello Physics](https://github.com/kwanchangnim/Jello-Physics "") - 2D Soft Body Physics for Unity.
+* [ECSPhysics](https://github.com/PhilSA/ECSPhysics "") - A physics engine made with Unity ECS.
+* [UnityPhysics2D](https://github.com/MelvynMay/UnityPhysics2D) - Examples of various Unity 2D Physics components and features.
+* [HedgePhysics](https://github.com/Camano/HedgePhysics "") - A open source 3D Sonic engine made in Unity.
+* [Jitter Physics for Unity](https://bitbucket.org/alexzzzz/jitter-physics-for-unity "") - An abandoned attempt to integate [Jitter Physics](https://github.com/mattleibow/jitterphysics) engine into Unity.
+* [BEPU Physics for Unity ECS](https://github.com/bellicapax/bepu-physics-for-unity-ecs "") - Translation in progress of BEPU Physics library v1 to Unity's ECS and Job System.
+* [Randomation Vehicle Physics](https://github.com/JustInvoke/Randomation-Vehicle-Physics "") - Vehicle physics system for the Unity engine.
+* [ArcadeCarPhysics](https://github.com/SergeyMakeev/ArcadeCarPhysics "") - Arcade Car Physics - Vehicle Simulation for Unity3D.
+* [Arcade Car Physics](https://github.com/Saarg/Arcade_Car_Physics "") - Unity package for cars using wheel colliders.
+* [Unity Burst_Shape Matching](https://github.com/nialltl/unity_burst_shape_matching "") - Parallelised 2D deformable bodies using the C# Job system, Unity's Burst compiler and GPU instancing.
+* [Unity3D PhysicsGun](https://github.com/Laumania/Unity3d-PhysicsGun "") - Unity3D sample implementation of a Half-life 2 / Garry's mod/ Gmod Physics Gun.
+* [2D Deformable Body in Unity](https://github.com/Scrawk/2D-Deformable-body-in-Unity "") - A 2D Deformable body simulation in Unity using FEM. (#2D)
+* [Clothing System 3D](https://github.com/keawstudio/Clothing-System-3D "") - Asset for Unity 3D to allows character customization.
+* [GPU Cloth Simulation](https://github.com/JUSTIVE/GPU-Cloth-Simulation "") - GPU Mass-Spring Simulation Cloth in Unity.
+* [OpenRelativity](https://github.com/MITGameLab/OpenRelativity "") - An open source framework to add the effects of traveling at relativistic speeds to visualizations or games.
+* [Fusion](https://github.com/Ninjajie/Fusion "") - Unity Physics on GPU.
+* [Qu3e Sharp](https://github.com/willnode/Qu3e-Sharp "") - Lightweight and Simple 3D Open Source Physics Engine ported to C#.
+* [UnityNativeCollision](https://github.com/imxzjv/UnityNativeCollision "") - SAT Collision in C# for Unity3D Burst Compiler. Another [user](https://github.com/jeffvella/UnityNativeCollision) has it too.
+* [Unity Bullet Hell](https://github.com/jongallant/Unity-Bullet-Hell "") - An extremely efficient projectile generator for unity.
+* [UnityMathReference](https://github.com/zezba9000/UnityMathReference) - Math reference for games and more. All visualized in Unity3D.
+* [Custom 2D Colliders](https://github.com/GuyQuad/Custom-2D-Colliders) - A set of custom 2D colliders for Unity. (#2D)
+* [Custom Primitive Colliders](https://github.com/WestHillApps/Custom-Primitive-Colliders "") - Custom primitive colliders for Unity.
+* [Unity3D QuadTree Collision Detection](https://github.com/Chabinka/Unity3d-QuadTree-Collision-Detection "") - QuadTree and Collision Detection Systems for Unity3D.
+* [Unity3D QuadTree Collision Detection](https://github.com/MrTrueChina/Unity-Quadtree-Collision-Detection "")
+* [DynamicRagdoll](https://github.com/tiredamage42/DynamicRagdoll "") - Runtime customizable ragdolls in Unity. With transitions to and from animated states.
+* [Quickfracture](https://github.com/OskarSigvardsson/quickfracture) - A unity destruction effect.
+* [Cable Component](https://github.com/NoxWings/Cable-Component "") - Unity cable component implementation similar to the Unreal Engine one based on verlet integration.
+* [StandardizeBows](https://github.com/ahmetahaydemir/StandardizeBows "") - Standardize Bows is a Unity ( C# ) project that is created in order to setup bow models that will simulate the physics of a bow without having any animation or animator component.
+* [Unity Fluid Simulation 2D](https://github.com/giangchau92/Unity-Fluid-Simulation-2D) - Using extended camera to render particles then metalball processing with shader.
+* [PBD Fluid in Unity](https://github.com/Scrawk/PBD-Fluid-in-Unity) - A PBD fluid in unity running on the GPU. 
+* [UnityFluidDynamics](https://github.com/IceLanguage/UnityFluidDynamics "") - This code is translated from the code provided in Jos Stam's GDC2003 paper.
+* [2DFluidSim](https://github.com/candycat1992/2DFluidSim "") - Port 2D fluid simulation to Unity. (#2D)
+* [UnityFluidExperiments](https://github.com/MaxSigma/UnityFluidExperiments "") - Collection of Fluid Simulation Experiments in Unity.
+* [Warthog](https://github.com/brihernandez/Warthog "") - WheelCollider driven fun little vehicle like Halo's Warthog.
+* [Unity Earthquake Simulation](https://github.com/ertanturan/Unity-Earthquake-Simulation "") - Earthquake simulation using real earthquake data from textassets in unity.
diff --git a/docs/plugins/plugins.md b/docs/plugins/plugins.md
new file mode 100644
index 0000000..870d91e
--- /dev/null
+++ b/docs/plugins/plugins.md
@@ -0,0 +1,136 @@
+## Plugins
+
+### Mobile
+
+* [Unity Android Notifications](https://github.com/Agasper/unity-android-notifications "") - Unity3D Plugin for Android local notifications with example project.
+* [UnityShowAndroidStatusBar](https://github.com/Over17/UnityShowAndroidStatusBar "") - Show Android status bar for applications built with Unity 5.3 and later.
+* [Permission Plugin for Unity](https://github.com/hiyorin/PermissionPlugin-for-Unity "") - A set of tools for Unity to allow handling Permission for Android and iOS.
+* [Google SignIn Plugin for Unity](https://github.com/hiyorin/GoogleSigninPlugin-for-Unity "") - A set of tools for Unity to allow handling Google Sign-in for Android and iOS.
+* [Memory Info Plugin for Unity](https://github.com/hiyorin/MemoryInfoPlugin-for-Unity "") - A set of tools for Unity to allow handling memory info for Android and iOS.
+* [System Volume Plugin for Unity](https://github.com/hiyorin/SystemVolumePlugin-for-Unity "") - A set of tools for Unity to allow handling system volume for Android and iOS.
+* [Unity JAR Resolver](https://github.com/googlesamples/unity-jar-resolver "") - Unity plugin which resolves Android & iOS dependencies and performs version management.
+* [Unity Native Sharing](https://github.com/ChrisMaire/unity-native-sharing "") - A Unity plugin to open native sharing dialogs on iOS and Android, primarily for sharing screenshots.
+* [Unity Native Toolkit](https://github.com/ryanw3bb/unity-native-toolkit "") - Native iOS & Android functionality in Unity.
+* [UniAndroidVibration](https://github.com/sanukin39/UniAndroidVibration) - Unity Android plugin JUST execute device vibration.
+* [iVidCapPro](https://github.com/ThisNetWorks/iVidCapPro "") - iVidCapPro is a plugin that enables Unity, to capture video and audio from your Unity iOS application.
+* [CO2](https://github.com/sassembla/CO2) - Android plugin generator for Unity.
+* [Unity Webview](https://github.com/gree/unity-webview) - A plugin for Unity 5 that overlays WebView components on Unity view. It works on Android, iOS, Unity Web Player, and OS X (Windows is not supported for now).
+* [iOS Unity5](https://github.com/blitzagency/ios-unity5 "") - How to integrate Unity with an Native iOS Application using Swift.
+* [iMessageStickerUnity](https://github.com/agens-no/iMessageStickerUnity "") - An iMessage Sticker plugin for Unity3d that adds a Sticker extension target to an xCode project created by Unity3D.
+* [Peuck](https://github.com/fcarucci/peuck "") - Android utilities for Unity.
+* [Unity Webview Integration](https://github.com/keijiro/unity-webview-integration "") - Plugin to use webview in your Unity application.
+* [UnityNativeShare](https://github.com/yasirkula/UnityNativeShare "") - A Unity plugin to natively share files (images, videos, documents, etc.) and/or plain text on Android & iOS.
+* [UniLocalNotification](https://github.com/sanukin39/UniLocalNotification "") - Simple Local Notification Plugins for Unity.
+
+### Services
+
+* [Google Play Games](https://github.com/playgameservices/play-games-plugin-for-unity "") - Google Play Games plugin for Unity.
+* [Facebook SDK for Unity](https://github.com/facebook/facebook-sdk-for-unity "") - The Facebook SDK for Unity.
+* [Twity](https://github.com/toofusan/Twity "") - (Previously: twitter-for-unity) Twitter API Client for Unity C#.
+* [Unity3D Profile](https://github.com/soomla/unity3d-profile "") - Unity3D plugin for Facebook, Twitter and Google Plus. The social module of SOOMLA - free2play mobile game framework for iOS and Android. 
+* [Firebase Unity](https://github.com/firebase/Firebase-Unity "") - Integration for Unity with Firebase.
+* [Steamworks-Platform](https://github.com/mPowerGames/Steamworks-Platform "") - Unity interface ISocialPlatform implementation with Steamworks.NET.
+* [Steamworks.NET](https://github.com/rlabrecque/Steamworks.NET "") - Steamworks wrapper for Unity.
+* [Mapbox Unity SDK](https://github.com/mapbox/mapbox-unity-sdk "") - Mapbox Unity SDK.
+* [IndoorAtlas Unity Plugin](https://github.com/IndoorAtlas/unity-plugin "") - [IndoorAtlas](https://www.indooratlas.com/) plugin for Unity.
+* [USD Unity SDK](https://github.com/Unity-Technologies/usd-unity-sdk "") - Integration of Pixar's Universal Scene Description into Unity. (#Augmented Reality) :fab fa-unity:
+* [Vimeo Unity SDK](https://github.com/vimeo/vimeo-unity-sdk "") - Easily stream your Vimeo videos into Unity or record and publish out to Vimeo.
+* [IBM Watson SDK for Unity](https://github.com/watson-developer-cloud/unity-sdk "") - Unity SDK to use the IBM Watson services.
+* [Unity Flurry SDK](https://github.com/flurry/unity-flurry-sdk) - Unity plugin for Flurry SDK.
+* [Flurry Unity Plugin](https://github.com/bearprada/flurry-unity-plugin) - The Flurry Library for Unity3D. support Android and iOS.
+* [Google Analytics Plugin for Unity](https://github.com/googleanalytics/google-analytics-plugin-for-unity) - Google Analytics plugin for the Unity game creation system.
+* [GetSocial Unity SDK](https://github.com/getsocial-im/getsocial-unity-sdk) - This is the demo application for GetSocial SDK.
+* [Reign Unity Plugin](https://github.com/reignstudios/Reign-Unity-Plugin5) - This Reign API is a cross-platform, unified API for the Unity game engine.
+* [Reign Unity Plugin v4](https://github.com/reignstudios/Reign-Unity-Plugin) - Unity 4.x version of the Reign plugins.
+* [Unity Wakatime](https://github.com/vladfaust/unity-wakatime "") - [WakaTime](https://wakatime.com/) plugin for Unity.
+* [Line SDK Unity](https://github.com/line/line-sdk-unity "") - Provides a modern way of implementing LINE APIs in Unity games, for iOS and Android.
+* [Mastodon Unity](https://github.com/Santarh/mastodon-unity "")
+* [PlayFab Unity SDK](https://github.com/PlayFab/UnitySDK "") - Unity C# SDKs for PlayFab. See also its [extensions](https://github.com/PlayFab/UnityEditorExtensions).
+* [UnityPlugin](https://github.com/modio/UnityPlugin "") - Unity Plugin for integrating mod.io - a modding API for game developers.
+
+### Languages
+
+* [UnityJS](https://github.com/SimHacker/UnityJS "") - Unity3D C# / JavaScript Bridge.
+* [Unity Python](https://github.com/exodrifter/unity-python "") - Python plugin for Unity3D.
+* [Unity Swift](https://github.com/miyabi/unity-swift "") - Native plugin to write native code in Swift for Unity.
+* [UnityRustPlugin](https://github.com/keijiro/UnityRustPlugin) - An example showing how to write a Unity native plugin in Rust.
+* [NLua](https://github.com/NLua/NLua "") - NLua is the bind between Lua world and the .NET world.
+* [Moonsharp](https://github.com/xanathar/moonsharp/ "") - An interpreter for the Lua language, written entirely in C# for the .NET, Mono, Xamarin and Unity3D platforms, including handy remote debugger facilities.
+* [slua](https://github.com/pangweiwei/slua "") - Fastest lua binding via static code generating for Unity3D and mono.
+* [uLua](https://github.com/jarjin/uLua "")
+* [xLua](https://github.com/Tencent/xLua) - xLua is a hot-fix solution plugin for Unity3D, it supports android, ios, windows, osx, etc. (Recommended)
+* [UniLua](https://github.com/xebecnan/UniLua) - A pure C# implementation of Lua 5.2 focus on compatibility with Unity3D.
+* [KopiLuaInterface](https://github.com/gfoot/kopiluainterface) - LuaInterface adapted to work with KopiLua.
+* [ExportLuaUI](https://github.com/glegoo/ExportLuaUI)
+* [LuaProfiler For Unity](https://github.com/ElPsyCongree/LuaProfiler-For-Unity) - Profiler for Lua inside of Unity.
+* [Entitas Lua](https://github.com/sniper00/entitas-lua) - Entitas ECS implementation in Lua.
+* [MobileLegend](https://github.com/Preston-Chen/MobileLegend) - Use toLua Framework to create client on Unity.
+
+### Others
+
+* [ShaderLabVS](https://github.com/wudixiaop/ShaderlabVS "") - ShaderlabVS is a Visual Studio plugin for Unity Shaderlab programming.
+* [NewtonUnityPlugin](https://github.com/svenberra/NewtonUnityPlugin "") - A managed plugin for Unity 3D that allows you to use the Newton Dynamics physics engine.
+* [Openpose Unity_Plugin](https://github.com/CMU-Perceptual-Computing-Lab/openpose_unity_plugin "") - OpenPose's Unity Plugin for Unity users.
+* [MeshSync](https://github.com/unity3d-jp/MeshSync "") - Live link plugin for Unity. supported tools: Maya, Maya LT, 3ds Max, Motion Builder, Blender, Metasequoia.
+* [VoxHands](https://github.com/hiroki-o/VoxHands "") - Humanoid Finger Controller Plugin for Unity.
+* [Atlas Unity](https://github.com/wooga/atlas-unity) - This plugin provides tasks to run unity batchmode commands in gradle. It runs and reports unity unit-tests and is able to export .unitypackage files.
+* [Unity Shell](https://github.com/marijnz/unity-shell "") - Write and execute code in an intuitive "shell" with autocompletion, for the Unity Editor.
+* [Unity3D Jenkins Plugin](https://github.com/jenkinsci/unity3d-plugin "") - Jenkins Unity3d plugin. (#CONTINUOUS-INTEGRATION)
+* [Unity3D_MQTT](https://github.com/vovacooper/Unity3d_MQTT "") - MQTT protocol running on Unity3D.
+* [2D Light of Sight Unity](https://github.com/f15gdsy/2D-Light-of-Sight-Unity "") - A plugin for creating 2D lighting & shadows, and line of sight effects in Unity3D.
+* [GPU Noise For Unity](https://github.com/heyx3/GPUNoiseForUnity "") - A Unity plugin for generating noise on the GPU for use in the editor.
+* [UnityCam](https://github.com/mrayy/UnityCam "") - Unity3D Virtual webcam plugin, streams unity viewport contents to other applications as virtual camera.
+* [mrayGStreamerUnity](https://github.com/mrayy/mrayGStreamerUnity "") - GStreamer Integration with Unity using a Native plugin.
+* [KlakSpout](https://github.com/keijiro/KlakSpout "") - Spout plugin for Unity.
+* [KlakNDI](https://github.com/keijiro/KlakNDI "") - NewTek NDI™ plugin for Unity.
+* [Klinker](https://github.com/keijiro/Klinker "") - An experimental implementation of Blackmagic DeckLink plugin for Unity.
+* [KlakHap](https://github.com/keijiro/KlakHap) - HAP video player plugin for Unity.
+* [KlakSyphon](https://github.com/keijiro/KlakSyphon) - Syphon plugin for Unity.
+* [ChromaPack](https://github.com/keijiro/ChromaPack "") - A lossy texture compression plugin for Unity.
+* [VoxBlend](https://github.com/hiroki-o/VoxBlend) - BlendShape Controller Plugin for Unity.
+* [BepInEx](https://github.com/BepInEx/BepInEx) - Unity game patcher and plugin framework.
+* [UnityElevatorCompiler](https://github.com/m3rt32/UnityElevatorCompiler) - A plugin that plays elevator music while Unity compiles your code. :fas fa-burn:
+* [myS7ProSimLib](https://github.com/kodaman2/myS7ProSimLib) - Imported S7PROSimLib type library. To connect unity3D with Siemens PLCSim using COM Interop.
+* [UnityOptixPlugin](https://github.com/Alexander-Scott/UnityOptixPlugin) - An example of a Unity plugin that allows you to leverage the power of NVIDIA Optix.
+* [RegionCapture](https://github.com/maximrouf/RegionCapture) - Plugin for Unity 2017 (for mobile and desktop app's).
+* [EffekseerForUnity](https://github.com/effekseer/EffekseerForUnity) - This is the [Effekseer's](https://github.com/effekseer/Effekseer) runtime plugin for Unity.
+
+### :eyes: Visual Scripting
+
+* [AssetGraph](https://github.com/unity3d-jp/AssetGraph) - Visual Workflow Automation Tool for Unity.  :fab fa-unity:
+* [Playmaker](https://www.assetstore.unity3d.com/en/#!/content/368) - Quickly make gameplay prototypes, A.I. behaviors, animation graphs, interactive objects, and more using finite state machines. :fas fa-coins:
+* [Bolt](https://ludiq.io/bolt) - Brings complete visual scripting to Unity, empowering artists, designers and programmers to create gameplay mechanics and interactive systems without writing a single line of code. (:fas fa-coins: with Free edition)
+* [Constellation](https://github.com/ConstellationLanguage/Constellation) - Constellation is a visual scripting language for unity that gives you the tools of a programmer without having to write a single line of code. 
+* [Artimech](https://github.com/Scramasax/Artimech) - Open source visual scripting system for Unity.
+
+### Snippets & Gists
+
+* [Naphier Gists](https://gist.github.com/Naphier) - Useful gists for Unity3D.
+* [BetterDefines.cs](https://gist.github.com/TarasOsiris/343df8337fa2a7f80f59) - Better Defines for Unity3D.
+* [DownloadManager.cs](https://gist.github.com/asus4/2490117) - Download manager for Unity.
+* [CameraExtensions.cs](https://gist.github.com/TarasOsiris/a8904989c18424bcdf73) - A better way of manipulating the culling mask.
+* [ShowToastUnityAndroid.cs](https://gist.github.com/TarasOsiris/dec42cf3ecca6c854182f385e38dbf57) - Shows toast on Android.
+* [FBSucks.cs](https://gist.github.com/TarasOsiris/dec42cf3ecca6c854182f385e38dbf57) - Share image with text on android (works with FB).
+* [GetSocialDeepLinkingActivity.java](https://gist.github.com/TarasOsiris/1ab79165909ea01575a0) - This activity is created because we cannot get Activity.onNewIntent callback in Unity when the app is running in background.
+* [VSCode Unity Code Snippets](https://github.com/kleber-swf/vscode-unity-code-snippets) - All snippets for Unity3D development.
+* [Unity Snippets](https://github.com/anchan828/unity-snippets) - Unity3D snippets for differents IDEs.
+
+### Integrated Development Environment (IDE)
+
+* [Visual Studio (Windows)](https://visualstudio.microsoft.com/es/) - Official supported IDE for Unity in Windows platform. Mac version [here](https://visualstudio.microsoft.com/es/vs/mac/).
+* [Jetbrains' Rider](https://www.jetbrains.com/dotnet/promo/unity/) - Jetbrains alternative to Visual Studio.
+* [Visual Studio Code](https://code.visualstudio.com/) - Cross platform IDE built with web technologies.
+* [MonoDevelop](https://www.monodevelop.com/) - MonoDevelop editor. Initially the default editor for Unity. Now is deprecated.
+* [Consulo](http://consulo.site/) - Consulo editor.
+
+#### IDE Integrations
+
+* [Unity VS Toolbox](https://github.com/Naphier/Unity-VS-Toolbox) - Included in this project is a VS toolbox for most of the Monobehaviour events listed in order of execution. You'll also find a bunch of templates that can be installed so they will show up in the Add Item context menu.
+* [Unity C# 5.0 and 6.0 Integration](https://github.com/Naphier/Unity-VS-Toolbox) - This is a hack that replaces Unity's C# compiler with the latest Roslyn, which lets you write scripts in Unity using C# 7.3.
+* [VSCode Unity Debug Support](https://github.com/Unity-Technologies/vscode-unity-debug) - Unity debugging support for VS Code. :fab fa-unity:
+* [VSCode Unity Integration](https://github.com/dotBunny/VSCode) - Unity Visual Studio Code Integration.
+* [Unity Tools](https://github.com/TobiahZ/unity-tools) - A Visual Studio Code Extension to provide some tools for Unity development.
+* [Resharper Unity](https://github.com/JetBrains/resharper-unity) - A proxy App to be able to open Unity 5 C# classes using the new Project Rider from Jetbrains, in Mac OS X.
+* [ProjectRider Unity](https://github.com/yonstorm/ProjectRider-Unity) - IntelliJ Project Rider integration for Unity.
+* [RiderProxy](https://github.com/siliconcat/RiderProxy) - Unity support for both ReSharper and Rider.
+* [Unity3DVim](https://github.com/NOSDuco/Unity3dVim) - Unity Vim Editor Integration for Linux.
diff --git a/docs/pooling/pooling-systems.md b/docs/pooling/pooling-systems.md
new file mode 100644
index 0000000..2e60215
--- /dev/null
+++ b/docs/pooling/pooling-systems.md
@@ -0,0 +1,13 @@
+### Pooling Systems
+
+* [Unity QuickPool](https://github.com/densylkin/QuickPool) - Simple pooling toolkit for Unity game engine.
+* [RecyclerKit](https://github.com/prime31/RecyclerKit) - Object pool manager for Unity.
+* [ObjectPool](https://github.com/UnityPatterns/ObjectPool) - Instead of creating and destroying new objects all the time, this script reduces garbage by pooling instances, allowing you to seemingly create hundreds of new objects while only actually using a recycled few.
+* [Unity Object Pool](https://github.com/thefuntastic/unity-object-pool) - An elegant object pool and manager implementation for Unity.
+* [UnityPooling](https://github.com/Mukarillo/UnityPooling) - An optimized approach object pooling.
+* [Unity3D Prefab Pool](https://github.com/TarasOsiris/unity3d-prefab-pool) - Simple Prefab Pool for Unity3D.
+* [Starfall Pool Manager](https://github.com/starfallproduction/starfall-pool-manager) - Gameobject pool manager that Starfall Production use while making game.
+* [UnityObjectPooler](https://github.com/imxzjv/UnityObjectPooler) - Simple object pool for Unity.
+* [QuickPool](https://github.com/densylkin/QuickPool) - Simple pooling toolkit for Unity game engine.
+* [Unity Pooler](https://github.com/GalvanicGames/unity-pooler) - Object pooler for GameObjects and regular C# classes.
+* [Runtime-Extendible Object Pooler Unity](https://github.com/ertanturan/Unity-Object-Pooling) - Runtime-Extendible object pooler for gameobjects .
diff --git a/docs/procedural-generation/procedural-generation.md b/docs/procedural-generation/procedural-generation.md
new file mode 100644
index 0000000..b5d836e
--- /dev/null
+++ b/docs/procedural-generation/procedural-generation.md
@@ -0,0 +1,36 @@
+## Procedural Generation
+
+* [Procedural Toolkit](https://github.com/Syomus/ProceduralToolkit "") - Procedural generation library for Unity.
+* [Houdini Engine For Unity](https://github.com/sideeffects/HoudiniEngineForUnity "") - Houdini Engine for Unity.
+* [Wavefunctioncollapse](https://github.com/marian42/wavefunctioncollapse "") - Walk through an infinite, procedurally generated city
+* [InfiniteIslandsGenerator Unity](https://github.com/TPiotr/InfiniteIslandsGenerator-Unity "") - Infinite islands generation.
+* [Tangram Unity](https://github.com/tangrams/tangram-unity "") - A library of tools for using OpenStreetMap data in the Unity3D game engine.
+* [PVTUT (Procedural Virtual Texture with Unity Terrain)](https://github.com/ACskyline/PVTUT "Procedural Virtual Texture with Unity Terrain")
+* [RoadArchitect](https://github.com/MicroGSD/RoadArchitect "") - Road Architect for Unity.
+* [RoadBuilder](https://github.com/guotata1996/roadbuilder "") - Easy-to-build realistic roads in Unity. Foundation of any simcity game.
+* [DungeonGenerator](https://github.com/jongallant/DungeonGenerator "") - A dungeon generator for Unity.
+* [Procedural Cave Generator](https://github.com/AK-Saigyouji/Procedural-Cave-Generator "") - Unity scripts that procedurally generate ready-to-use cave meshes.
+* [Procedural Cave Generator](https://github.com/SebLague/Procedural-Cave-Generation "") - Source code for Sebastian Lague's Procedural Cavern Generation tutorial series.
+* [Unity3D Dungeon Generator](https://github.com/DMeville/Unity3d-Dungeon-Generator "") - A procedural dungeon generator for Unity3d.
+* [ProceduralTerrain](https://github.com/theSoenke/ProceduralTerrain "") - Procedural voxel terrain generation in Unity.
+* [Unity Procedural Tree](https://github.com/mattatz/unity-procedural-tree "") - Procedural tree builder for Unity.
+* [ProceduralMotionTrack](https://github.com/keijiro/ProceduralMotionTrack "") - Simple procedural motion with Unity Timeline.
+* [Procedural Landmass Generation](https://github.com/SebLague/Procedural-Landmass-Generation "") - Procedural Landmass Generation in Unity.
+* [VoronoiMapGen](https://github.com/SteveJohnstone/VoronoiMapGen "") - A Voronoi Based Map Generator for Unity.
+* [Unity Procedural](https://github.com/nickhall/Unity-Procedural "") - Spline based mesh generation.
+* [QuadSphere](https://github.com/bicarbon8/QuadSphere "") - Unity QuadSphere with Level of Detail subdivision.
+* [UnityCurvedMeshGenerator](https://github.com/nrj/UnityCurvedMeshGenerator "") - Procedural mesh generation tutorial with cubic Bezier curves.
+* [PixelArtGen](https://github.com/abagames/PixelArtGen "") - A pixel art generator on a Unity custom inspector.
+* [Procedural Terrain Generator](https://github.com/CyanCode/ "") - Procedural terrain generator for the Unity 3D engine. (#Terrain)
+* [TownGenerator](https://github.com/zulfajuniadi/TownGenerator "") - Medieval Town Generator for Unity.
+* [Alchemy Circles Generator](https://github.com/CiaccoDavide/Alchemy-Circles-Generator) - A simple procedural generator of alchemy circles.
+* [Unity Procedural Flower](https://github.com/mattatz/unity-procedural-flower) - Procedural flower generator for Unity.
+* [Graphmesh](https://github.com/Siccity/Graphmesh) - A graph-based solution for procedural mesh inside the Unity editor.
+* [Rant](https://github.com/TheBerkin/rant) - Robust text engine for procedural generation and postprocessing. (#POST-PROCESSING)
+* [ProceduralMesh](https://github.com/mortennobel/ProceduralMesh) - Simple procedural mesh generation for the Unity game engine.
+* [Procedural Shapes for Unity](https://bitbucket.org/alexzzzz/procedural-shapes-for-unity) - A set of procedural shapes for Unity.
+* [IcoSphereCreator](https://github.com/kaiware007/IcoSphereCreator) - Create Ico Sphere Mesh Tool for Unity.
+* [Shapes](https://github.com/olange/shapes) - Hand-drawn meshes and vector shapes for Processing and Unity, and a few handpicked colors.
+* [Unity.ProceduralContentGeneration Terrain](https://github.com/ErikMoczi/Unity.ProceduralContentGeneration-Terrain) - (#TERRAIN)
+* [Procedural Level Generator Unity](https://github.com/OndrejNepozitek/ProceduralLevelGenerator-Unity) - Unity plugin from procedural dungeon generation.
+* [LSystemsInUnity](https://github.com/pboechat/LSystemsInUnity) - L-System is a rewriting system used mainly to model the development of plants. L-Systems in Unity enables you to rapidly create plants in your Unity games.
diff --git a/docs/projects/projects.md b/docs/projects/projects.md
new file mode 100644
index 0000000..cda5f04
--- /dev/null
+++ b/docs/projects/projects.md
@@ -0,0 +1,56 @@
+# Projects
+
+## Games
+
+* [AngryBots2](https://github.com/UnityTechnologies/AngryBots2) - An example Unity Project, developed by Unity Technologies, used to demonstrate several features.
+* [BoatAttack](https://github.com/Verasl/BoatAttack) - Demo Project using the Lightweight Render Pipeline from Unity3D.
+* [Hogwarts](https://github.com/OpenHogwarts/hogwarts) - Hogwarts (Harry Potter) open sandbox game made in Unity.
+* [Unitystation](https://github.com/unitystation/unitystation) - Remake of the simulator Space Station 13.
+* [SanAndreasUnity](https://github.com/GTA-ASM/SanAndreasUnity) - We're porting GTA: San Andreas to Unity!
+* [MafiaUnity](https://github.com/OpenMafia/MafiaUnity) - Open-source Mafia game framework.
+* [GuitarHeroUnity](https://github.com/caffeine239/GuitarHeroUnity) -  Guitar Hero fan game made in Unity.
+* [UnityTetris](https://github.com/Mukarillo/UnityTetris) - Tetris clone written in C# and using Unity engine to render.
+* [Nodulus](https://github.com/Hyperparticle/nodulus) - A complete puzzle game with a clever twist. Play it online.
+* [Phaserbeak](https://github.com/DarrenTsung/laserbeak) - Fasecst-paced, local-multiplayer party game. Controls are simple to pick-up, but hard to master and every round features a different mechanic.
+* [Pacman](https://github.com/vilbeyli/Pacman) - A Pacman clone with original AI made using Unity.
+* [Minesweeper](https://github.com/vilbeyli/Minesweeper) - Tile based Minesweeper game with highschores made in Unity.
+* [Colorus](https://github.com/nicloay/colorus) - Coloring book game for Web/iOS made with Unity.
+* [FPS Sample Project](https://github.com/Unity-Technologies/FPSSample "A first person multiplayer shooter example project in Unity") - A first person multiplayer shooter example project in Unity. :fab fa-unity:
+* [PokemonUnity](https://github.com/PokemonUnity/PokemonUnity "") - A framework to build Pokémon RPG games. Uses Unity 2017.41f1.
+* [TheItch](https://github.com/Dayn9/TheItch "") - The Itch is a 2D platformer developed with Unity C# about using your heartrate to overcome obstacles.
+* [RedRunner](https://github.com/BayatGames/RedRunner "") - Awesome Platformer Game.
+* [SpaceShooterECS](https://github.com/UnityTechnologies/SpaceShooterECS "") - The ECS project originally developed with Intel for GDC 2018.
+* [Fighting-Survival](https://github.com/OmarAlesharie/Fighting-Survival "") - The ECS project originally developed with Intel for GDC 2018.
+* [MachineLearningRoguelike](https://github.com/UnityTechnologies/MachineLearningRoguelike "") - A small Roguelike game that uses Machine Learning to power its entities. (#MACHINE LEARNING)
+* [SLGanim](https://github.com/Phynic/SLGanim "")
+* [FinalAudition](https://github.com/bonzajplc/FinalAudition "") - A complete remake of 2005 demo "Final Audition" by Plastic. After 12 years remade in Unity and now available in VR.
+* [EntitasGard](https://github.com/BahuMan/EntitasGard "") - ECS driven implementation of an RTS.
+* [ProjectRPG](https://github.com/WouterHeslinga/ProjectRPG "") - RPG made in Unity.
+* [Ganga RTS](https://github.com/gangashman/Ganga-RTS "") - Ganga RTS is an open-source multiplayer-player medieval-fantasy 3D RTS (obviously) based on an Unity engine and inspired by classic RTS.
+* [RTS Project](https://github.com/Altadsa/RTS-Project "") - Real Time Strategy Game made in Unity.
+* [UnityBust-a-Move](https://github.com/Mukarillo/UnityBust-a-Move "") - Bust-a-Move clone written in C# and using Unity engine to render.
+* [Dungeon Escape](https://github.com/alekseyzakharo/Dungeon-Escape "")
+* [Survival Shooter Multiplayer Unity3D Files](https://github.com/madvas/survival-shooter-multiplayer-unity3d-files "") - Cute web based multiplayer shooter game made with Unity3D.
+* [Project Skylines](https://github.com/Zaphyk/project-skylines "") - Procedural retro 3d game for the GitHub Gameoff 2017 .
+* [Deer](https://github.com/zrdumped/Deer "") - A low-poly digital game about family and finding himself.
+* [Virus Alpha](https://github.com/dave95b/Virus-Alpha "") - Game made in Unity for the needs of university classes in the group of four.
+* [Fruit Ninja Replica](https://github.com/Brackeys/Fruit-Ninja-Replica "") - Source code for a Fruit Ninja replica created during a Twitch Livestream.
+* [Cut the Rope Replica](https://github.com/Brackeys/Cut-the-Rope-Replica "") - Source code for a Cut the Rope replica created during a Twitch Livestream.
+* [CatBox MultiPlayerAR](https://github.com/gucheng0712/CatBox-MultiPlayerAR "") - A Multiplayer AR Game Based on the Unity, Vuforia and Node.js -- Marker Based Pokemon Go Style Game. (#AUGMENTED-REALITY)
+* [AR BasketballMachine](https://github.com/gucheng0712/AR-BasketballMachine "") - An AR- Vuforia Project about the basketball machine. Shoot method include swap screen, Voice Command. (#AUGMENTED-REALITY)
+* [Sudoku Unity](https://github.com/Umar-Eh/Sudoku-Unity "") - A sudoku game built using the Unity framework and written in C#.
+* [ECS2048](https://github.com/Prastiwar/ECS2048 "") - 2048 like game using Unity's ECS.
+* [2048](https://github.com/dgkanatsios/2048 "") - Building the 2048 game in Unity in C# and Visual Studio.
+* [Sugar Warrior](https://github.com/Brackeys/Sugar-Warrior "") - A game created for the first Brackeys Game Jam!
+* [UnityTD](https://github.com/wildex999/unitytd "") - Tower Defense Game with online Multiplayer.
+* [BrightSouls](https://github.com/leotgo/BrightSouls "") - An indie "Dark Souls" clone in Unity with Adaptive Game Technology.
+* [Combat Cars](https://github.com/keatonmay/Combat_cars "") - A multiplayer racing game made in Unity.
+* [Bright Souls](https://github.com/leotgo/BrightSouls "") - An indie "Dark Souls" clone in Unity with Adaptive Game Technology. 
+* [I Just Want to Play Minigolf](https://github.com/alexismorin/I-Just-Want-to-Play-Minigolf "") - Open Source Procedural VR Minigolf.
+* [Hydrogen Bomb Test Dummy](https://github.com/alexismorin/Hydrogen-Bomb-Test-Dummy "") - Lighthearted Physics-Based Survival.
+* [Morgan Travels Through Time](https://github.com/AArtlone/Morgan-Travels-Through-Time "") - A game series about a child from 2019 who accidentally ends up in 1672 as they followed the neighbor's kid. Morgan needs to find their way back to their own time.
+* [Race Game](https://github.com/BenjaminViranin/Race-Game "") - 3D Race Game on Unity.
+* [FantasyTrip](https://github.com/Guznat/FantasyTrip "") - Mobile 2D platform game created with Unity and C#.
+* [Voice Controlled Unity Game](https://github.com/gesture-based-ui-development/voice-controlled-unity-game "") - Repository containing the source code and development of a gesture based unity game using speech recognition.
+* [HoloMagnet3](https://github.com/feel-physics/HoloMagnet3) - Science (Physics) education app for HoloLens.
+* [RPG](https://github.com/UnityProjectProgramming/RPG) - RPG Game, Developed in Unity3D.
diff --git a/docs/recommended/assets.md b/docs/recommended/assets.md
new file mode 100644
index 0000000..5e2acba
--- /dev/null
+++ b/docs/recommended/assets.md
@@ -0,0 +1,8 @@
+# Recommended Asset Store Packages
+
+* [Text Mesh Pro](https://assetstore.unity.com/packages/essentials/beta-projects/textmesh-pro-84126 "") - Text rendering with Signed distance fields. Better than default text component. (FREE)
+* [Odin Inspector & Serializer](https://assetstore.unity.com/packages/tools/utilities/odin-inspector-and-serializer-89041 "") - Serializes your data so you can see it how you want in your editor window. :fas fa-coins:
+* [Gaia](https://assetstore.unity.com/packages/tools/terrain/gaia-42618 "") - Procedural terrain generator. :fas fa-coins:
+* [Amplify Shader Editor](https://assetstore.unity.com/packages/tools/visual-scripting/amplify-shader-editor-68570 "") - Shader Graph Editor. Competes against Unity Official Shadergraph. :fas fa-coins:
+
+:construction:
diff --git a/docs/rendering-post-processing/rendering-post-processing.md b/docs/rendering-post-processing/rendering-post-processing.md
new file mode 100644
index 0000000..732d0f6
--- /dev/null
+++ b/docs/rendering-post-processing/rendering-post-processing.md
@@ -0,0 +1,403 @@
+## Rendering & Post-Processing
+
+### Shaders
+
+* [ShaderGraph](https://github.com/Unity-Technologies/ShaderGraph "") - Unity ShaderGraph project. :fab fa-unity:
+* [ShaderGraph Example Library](https://github.com/UnityTechnologies/ShaderGraph_ExampleLibrary "") - A library of Shaders created using Unity's Shader Graph. :fab fa-unity:
+* [ShaderGraph Examples (Keijiro)](https://github.com/keijiro/ShaderGraphExamples "") - Simple examples of Unity shader graphs. 
+* [ShaderGraph Examples](https://github.com/RubenCUR/ShaderGraph-Examples "") - ShaderGraph Examples for Unity 2018.1.
+* [Shader Graph Nodes](https://github.com/gilescoope/shader-graph-nodes "") - Custom Nodes for Unity Shader Graph.
+* [SG HDRP Lit](https://github.com/RemyUnity/SG-HDRP-Lit "") - Shadergraph version of the HDRP/Lit shader.
+* [SRPBatcherBenchmark](https://github.com/Unity-Technologies/SRPBatcherBenchmark "") - Various benchmark scenes for SRP batcher (both LWRP & HDRP). :fab fa-unity:
+* [UnityLWRPEssentials](https://github.com/dilmerv/UnityLWRPEssentials "") - Unity Lightweight Render Pipeline with a variety of shader examples built in Shader Graph.
+* [ShaderForge](https://github.com/FreyaHolmer/ShaderForge) - A node-based shader editor giving you the artistic freedom of shader creation, with no need to code. (Was :fas fa-coins: but now is open source and not maintained). [Asset Store Link](https://www.assetstore.unity3d.com/en/#!/content/14147)
+* [ShaderLabLab](https://github.com/rambutan2000/ShaderLabLab) - A system using T4 Templates to generate Unity ShaderLab code in the Editor.
+* [Graphics Test Framework](https://github.com/Unity-Technologies/Graphics-Test-Framework) - The UTR based Graphics Test Framework. :fab fa-unity:
+
+#### Ocean
+
+* [Ocean_Community_Next_Gen](https://github.com/eliasts/Ocean_Community_Next_Gen "") - Next gen iteration of the unity community ocean shader.
+* [Ceto](https://github.com/Scrawk/Ceto "") -  Ocean system for Unity.
+* [Ocean_Mobile with Boat Physics](https://github.com/laurentClave/Ocean_mobile_with_boat_physic "")
+* [Crest Ocean Render](https://github.com/huwb/crest-oceanrender "") - An advanced ocean system implemented in Unity3D.
+* [Phillips Ocean](https://github.com/Scrawk/Phillips-Ocean "") - A ocean using Phillips spectrum in Unity.
+* [WaveShaderDemo](https://github.com/EsProgram/WaveShaderDemo "")
+
+#### Water
+
+* [Unity 2D Water](https://github.com/Brajanowski/unity-2d-water "") - Simple water in Unity for 2D platform games.
+* [Water2D Unity](https://github.com/valryon/water2d-unity "") - A simple shader + example of a water surface with reflection in 2D.
+* [Unity Water Shader2D](https://github.com/real-marco-b/unity-water-shader2d "") - A 2D water shader for Unity.
+* [Water Shader](https://github.com/tuxalin/water-shader "") - Procedural water shader for general use. (#PROCEDURAL-GENERATION)
+* [waterShaderUnity](https://github.com/MattCairns/waterShaderUnity "") - Playing with creating a water shader using Gerstner waves.
+* [Unity Surface Water Shader](https://github.com/jakubshark/Unity-Surface-Water-Shader "") - A water surface shader for Unity.
+* [Lowpoly Water Shader](https://github.com/danielzeller/Lowpoly-Water-Unity "") - Low poly water with edge/shore blend. Similar to the awesome water in Monument Valley.
+* [Unity Wave Propagation Water Ripple](https://github.com/ya7gisa0/Unity-Wave-Propagation-Water-Ripple "") - Water ripple shader for Unity.
+* [UnityHDRPSimpleWater](https://github.com/flamacore/UnityHDRPSimpleWater "") - Simple water shader prepared with ShaderGraph in Unity 2018.3.6.
+* [DynamicRipples](https://github.com/SquirrelyJones/DynamicRipples "") - Dynamic ripple rendering and water surface compositing for Unity 3D.
+* [ToonWaterShader](https://github.com/IronWarrior/ToonWaterShader "") - Renders and animates toon-style waves from a noise texture and generates shoreline foam based off the depth buffer.
+
+#### Grass
+
+* [SurrealGrassShader](https://github.com/tchpowdog/SurrealGrassShader "") - PBR Grass Geometry shader for Unity.
+* [KvantGrass](https://github.com/keijiro/KvantGrass "") - Animating grass shader for Unity.
+* [UnityTerrainGrass](https://github.com/Nition/UnityTerrainGrass "") - Drop-in replacement terrain grass shaders for Unity.
+* [GrassBending](https://github.com/Elringus/GrassBending) - A replacement for Unity's terrain grass shader with alpha blended rendering and touch bending effect. (#TERRAIN)
+* [UnityHDRPTerrainDetailGrass](https://github.com/flamacore/UnityHDRPTerrainDetailGrass "") - A very simple detail shader for the new Terrain engine 2018.3+.
+
+#### Snow / Ice
+
+* [DeepSnowFootprint](https://github.com/ZGeng/DeepSnowFootprint "") - A unity shader solution to generate footprint on thick snow surfaces.
+* [Unity Frosted Glass](https://github.com/andydbc/unity-frosted-glass) - Frosted glass material made in Unity.
+* [Cracked Ice Shader](https://80.lv/articles/how-to-build-cracked-ice-in-material-editor/) - Cracked Ice material tutorial. (#TUTORIALS)
+
+#### Sand
+
+* [JourneySand](https://github.com/AtwoodDeng/JourneySand) - An Unity project to reproduce the sand rendering in Journey's style.
+
+#### Toon
+
+* [UnityToonShader](https://github.com/IronWarrior/UnityToonShader "") - Source code for Toon Shader tutorial for Unity. Has specular, rim lighting, and can cast and receive shadows.
+* [ToonShading](https://github.com/Kink3d/ToonShading "") - A collection of "Toon" shaders for Unity based on a stepped PBR approximation.
+* [LiliumToonGraph](https://github.com/you-ri/LiliumToonGraph "") - LWRP ShaderGraph Toon Shader.
+* [UnityChanToonShaderVer2 Project](https://github.com/ACIIL/UnityChanToonShaderVer2_Project "") - UTS2-AC - UnityChanToonShaderVer2 Project / v.2.0.4+ - different vrchat support and lighting manipulation and style.
+* [UnityChanToonShaderVer2_EmissiveScroll](https://github.com/tomori-hikage/UnityChanToonShaderVer2_EmissiveScroll "") - UnityChanToonShaderVer2 with EmissiveScroll.
+* [Xiexes Unity Shaders](https://github.com/Xiexe/Xiexes-Unity-Shaders "") - A re-write and restructure of XSToon.
+* [MToon](https://github.com/Santarh/MToon "") - Toon Shader with Unity Global Illumination.
+
+#### Cel Shading
+
+* [Wind Waker Shader](https://github.com/albertomelladoc/Wind-Waker-Shader) - Cel Shading of two thresholds with a blur/gradient between them for Unity.
+
+#### Retro
+
+* [PSX Retroshader](https://github.com/dsoft20/psx_retroshader "") - Shader that "emulates" the rendering style of PS1.
+* [RetroTVFX](https://github.com/KillaMaaki/RetroTVFX "") - A small collection of shaders for a range of authentic old TV effects (Composite, S-Video, RF, etc).
+* [Unity VHS Glitch](https://github.com/staffantan/unity-vhsglitch "") - Glitched VHS post-processing shader for Unity3D.
+* [RetroSuite3D](https://github.com/oxysoft/RetroSuite3D "") - Some image effects and shaders to achieve a retro look in Unity.
+* [Unity Glitch](https://github.com/staffantan/unityglitch "") - Glitch post-processing shader for Unity3D.
+
+#### Mirror
+
+* [Unity Realtime Planar Mirror](https://github.com/MaxwellGengYF/Unity-Realtime-Planar-Mirror "") - Powerful, deeply optimized real-time planar mirror in Unity.
+* [Projection Examples Using Mirrors](https://github.com/joansolroo/ProjectionExamples-UsingMirrors "") - This is a simple example of how projectors interact with mirrors.
+* [Mirror](https://github.com/nkjzm/Mirror) - A mirror script.
+
+#### Hologram
+
+* [HologramShader](https://github.com/andydbc/HologramShader "") - Test of an hologram material made in Unity.
+* [Unity HologramShield](https://github.com/paulgswanson/Unity-HologramShield "") - An hologram shield shader for Unity.
+* [ReinhardtLike Shield ShaderForge](https://github.com/vaxkun/ReinhardtLike-Shield-ShaderForge "") - A shader made to emulate Reinhardt shield effect using ShaderForge on Unity3D.
+* [HoloShield](https://github.com/AdultLink/HoloShield "") - Highly customizable sci-fi shield / force field shader for Unity3D.
+
+#### Wireframe
+
+* [Unity Wireframe](https://github.com/Chaser324/unity-wireframe "") - General purpose wireframe shaders for use in Unity.
+* [The Amazing Wireframe Shader](https://assetstore.unity.com/packages/vfx/shaders/wireframe-shader-the-amazing-wireframe-shader-18794?aid=1100l35sb&utm_source=aff "") :fas fa-coins:
+* [BarabaraShader](https://github.com/sugi-cho/BarabaraShader "") - Global Outline - Unity (3D/UI/Sprites) full-screen masked outline shader.
+
+#### Outline
+
+* [UltimateOutline](https://github.com/Shrimpey/UltimateOutline "") - The easiest way to achieve outlines in Unity.
+* [UnityOutlineShader](https://github.com/IronWarrior/UnityOutlineShader) - Source code for Outline Shader tutorial for Unity. Detects edges in a scene using the depth and normals buffers.
+* [Globaloutline](https://github.com/rickomax/globaloutline) - Source code for Outline Shader tutorial for Unity. Detects edges in a scene using the depth and normals buffers.
+
+#### Dissolve
+
+* [SphereDissolve](https://github.com/AdultLink/SphereDissolve "") - Customizable procedural spherical dissolve shader for Unity3D, for all your customizable procedural spherical dissolve needs!
+* [Unity3D Dissolve Shader](https://github.com/kwnetzwelt/unity3d-dissolve-shader "") - A shader and example scene for a shader which is able to create objects starting from a world position outwards.
+* [VerticalDissolve](https://github.com/AdultLink/VerticalDissolve) - Procedural vertical dissolve shader. Highly customizable. Tweak edge color, noisiness & waviness, rim light, emission scrolling and more.
+
+#### NPR (Non Photorealistic Rendering)
+
+* [Kamakura Shaders](https://github.com/kayac/kamakura-shaders) - Kamakura Shaders is a collection of shaders and components focusing on Non-Photorealistic Rendering for Unity with a bunch of features and adjustable parameters in a user-friendly interface.
+
+#### Audio
+
+* [Unity Sound Shader Test](https://github.com/rngtm/Unity-SoundShaderTest "") - Audio synthesis test using shader on Unity. (#Audio)
+* [Unity3D Liquidy Surface Shader](https://github.com/avseoul/Unity3D_LiquidySurfaceShader "") - An audio reactive shader in Unity3D (#Audio)
+
+#### Hair / Fur
+
+* [Unity Hair Shader](https://github.com/AdamFrisby/UnityHairShader "") - A hair shader for Unity 5 originally built for the sine.space virtual world.
+* [NVIDIAHairWorksIntegration](https://github.com/unity3d-jp/NVIDIAHairWorksIntegration) - NVIDIA Hair Works Integration for Unity.
+* [Stanford Bunny Fur With Unity](https://github.com/chenjd/Stanford-Bunny-Fur-With-Unity) - Using the Geometry Shader to generate fur on GPU.
+* [Marschner Hair Unity](https://github.com/maajor/Marschner-Hair-Unity) - Implement Marschner Shading Model In Unity.
+
+#### Triplanar Mapping
+
+* [StandardTriplanar](https://github.com/keijiro/StandardTriplanar "") - Unity's standard shader with triplanar mapping.
+
+#### Interior Mapping
+
+* [Unity InteriorMapping](https://github.com/Gaxil/Unity-InteriorMapping "") - Interior mapping shader for Unity with a sample scene.
+
+#### Car Painting
+
+* [CarPaint](https://github.com/Roland09/CarPaint) - Material for the Unity Standard Assets Car.
+
+#### Mobile
+
+* [Unity Standard Shader Mobile](https://github.com/nylonee/unity-standard-shader-mobile "") - Mobile optimised shader for Unity 3D.
+
+#### Others
+
+* [Dota2 Shader for Unity](https://github.com/JamesDante/Dota2-Shader-For-Unity "") - Dota2 Shader for Unity Engine.
+* [StandardGeometryShader](https://github.com/keijiro/StandardGeometryShader "") - An example of a geometry shader with Unity's standard lighting model support.
+* [Procedural Stochastic Texturing](https://github.com/UnityLabs/procedural-stochastic-texturing) - Modified Unity Standard shader implementing Procedural Stochastic Texturing.
+* [NoiseBall](https://github.com/keijiro/NoiseBall "") - Mesh deforming shader example (Unity).
+* [NoiseBall2](https://github.com/keijiro/NoiseBall2 "") - A small example of procedural modeling with compute shaders.
+* [NoiseBall3](https://github.com/keijiro/NoiseBall3 "") - A Unity example that shows how to use the new implementation of DrawProcedural.
+* [Unity Compute Shader Test](https://github.com/Arlorean/UnityComputeShaderTest "") - Unity Compute Shader Realtime Ray Tracing.
+* [Unity Metaballs](https://github.com/ya7gisa0/Unity Metaballs "") - Metaball shader example.
+* [AnisotropicStandardShader](https://github.com/Kink3d/AnisotropicStandardShader "") - A modified version of Unity's Standard Shader using an Anisotropic GGX BRDF.
+* [Unity Dithered Transparency Shader](https://github.com/gkjohnson/unity-dithered-transparency-shader "") - Unity material and shader for applying clipped, dithered transparency.
+* [Rimlight](https://github.com/AdultLink/Rimlight "") - Customizable rimlight shader for Unity that includes pulsation and noise scrolling.
+* [BloodFx](https://github.com/keijiro/BloodFx "") - Procedural blood stain shader.
+* [SquashAndStretch](https://github.com/PandaArcade/SquashAndStretch "") - A Unity 2018.10b12 project where I am experimenting with a squash and stretch shader.
+* [Hatching Shader](https://github.com/nkihrk/HatchingShader "")
+* [UnitySpriteShaders](https://github.com/traggett/UnitySpriteShaders "") - An Uber Shader for rendering Sprites in Unity.
+* [Splatoonity](https://github.com/SquirrelyJones/Splatoonity "") - Splatoon like painting in Unity3D.
+* [uCurvedScreen](https://github.com/hecomi/uCurvedScreen "") - Curved-screen shader aseet for Unity.
+* [Unity CommandBuffer Refraction](https://github.com/Doppelkeks/Unity-CommandBufferRefraction "") - Blurred Refraction shaders created with Amplify Shader Editor using Command Buffers. Cool for glass looking materials, works without Amplify Shader Editor too.
+* [uRaymarching](https://github.com/hecomi/uRaymarching "") - Raymarching Shader Generator in Unity.
+* [Unity Marching Cubes GPU](https://github.com/pavelkouril/unity-marching-cubes-gpu "") - GPU ComputeShader implementation of Marching Cubes algorithm.
+* [Unity3DCrossSectionShader](https://github.com/Dandarawy/Unity3DCrossSectionShader "") - CG shader for unity3D to create a cross section through meshes.
+* [CrossFadingLod](https://github.com/keijiro/CrossFadingLod "") - Cross-fading LOD shader example.
+* [Unity NextGenSprites](https://github.com/paulgswanson/UNity-NextGenSprites "")
+* [Unity Texture Curve](https://github.com/andydbc/unity-texture-curve "") - Example showing how to bake an AnimatedCurve into a Texture and use it in a shader.
+* [VR Time Shaders](https://github.com/y23586/vrchat-time-shaders "") - Utility shaders to implement time-related stuffs in VRChat.
+* [TexturePanner](https://github.com/AdultLink/TexturePanner) - This repository hosts a shader for Unity3D whose main goal is to facilitate the creation of neon-like signs, conveyor belts and basically whatever based on scrolling textures.
+* [VilarVRC](https://github.com/Vilar24/VilarVRC) - Vilar's Shaders for VRChat.
+* [Dual Quaternion Skinning for Unity](https://github.com/ConstantineRudenko/DQ-skinning-for-Unity)
+* [UnityGPUNoise](https://github.com/GlitchEnzo/UnityGPUNoise) - A set of shaders to help perform various Noise functions on the GPU.
+* [Pixel Render Unity3D](https://github.com/kode80/pixelrenderunity3d) -  PixelRender is a complete system for realtime rendering of 3D scenes as 2D pixel art in Unity3D. (#2D) (#EFFECTS) (#UTILITIES)
+* [ShadowDrawer](https://github.com/keijiro/ShadowDrawer) - Shadow matte shader for Unity.
+* [Flow Map Shader](https://gist.github.com/TarasOsiris/e0e6e6c3b8fdb0d8074b) - Flow Map Shader for Unity3D. Used with Sprites.
+* [CurveTexture](https://github.com/slipster216/CurveTexture) - Easily encode arbitrary curves into textures and apply them to materials or global shader properties.
+* [QuadWarp](https://github.com/fuqunaga/QuadWarp) - QuadWarp sample code for Unity.
+* [Unity3D Lightning Shader](https://github.com/ya7gisa0/Unity3D-Lightning-Shader "") - Procedural Lightning Shader for Unity3D.
+* [Unity HDRP SpeedTree Materials](https://github.com/flamacore/UnityHDRPSpeedTreeMaterials "") - Material replacements for getting SpeedTree models to work on HDRP Terrain. Highly experimental.
+* [Noise Texture Particles](https://github.com/Dafirex/Noise-Texture-Particles "") - Shader for Unity particles that use noise textures as inputs to create different patterns.
+* [Analytical Normals 3D](https://github.com/ya7gisa0/Analytical-Normals-3D "")
+* [UnityComputeShaderTest](https://github.com/kitasenjudesign/UnityComputeShaderTest "") - Compute shader example.
+* [OpaqueActiveCamo](https://github.com/SquirrelyJones/OpaqueActiveCamo "") - Unity 3D project showing opaque active camouflage rendering technique.
+* [Zagara](https://github.com/justalittlefat/Zagara "") - A tiny softrendering engine based on Unity3D. See [more](https://github.com/yqlizeao/UnitySoftRender).
+* [HSVA Unity](https://github.com/greggman/hsva-unity "") - A Hue Saturation Value adjustment shader for Unity. Useful for making lots of character colors.
+* [Unity3D Plane Clipping](https://github.com/toxicFork/Unity3D-Plane-Clipping "") - Plane clipping shaders for Unity3D 5. Extends the Standard shader.
+* [ExtendStandard](https://github.com/chenyong2github/ExtendStandard "") - Extended Unity's Standard PBR shader.
+* [UIRays](https://github.com/PandaArcade/UIRays "") - An example of a simple UI rays shader.
+* [SSS Unity](https://github.com/sebastianhein/sss-unity "") - Sub Surface Scattering Approximation Shader for Unity 3D.
+
+#### Collections
+
+* [Lux](https://github.com/larsbertram69/Lux "") - Open source physically based shader framework for Unity.
+* [Awesome Unity Shader](https://github.com/QianMo/Awesome-Unity-Shader "") - About cool Unity3D Shaders.
+* [ShurikenPlus](https://github.com/keijiro/ShurikenPlus "") - A collection of custom shaders for Unity particle system (Shuriken).
+* [Fun Frag Shaders](https://github.com/makitsune/fun-frag-shaders "") - Fun fragment shaders you can use in Unity.
+* [Cubeds Unity Shaders](https://github.com/cubedparadox/Cubeds-Unity-Shaders "") - A compilation of custom shaders for Unity3D.
+* [Arktoon Shaders](https://github.com/synqark/Arktoon-Shaders "") - Alternative Unity shaders made by synqark.
+* [Neitri Unity Shaders](https://github.com/netri/Neitri-Unity-Shaders "") - A compilation of shaders for Unity3D and VRChat.
+* [Syns Unity Shaders](https://github.com/synlogic/Syns-Unity-Shaders "") - A set of fun/useful shaders for use in VRChat and Unity itself.
+* [Okano's Unity Shaders](https://github.com/kayteh/shaders "") - Big mishmash of reworked, original, and mixed shaders.
+* [Unity Shaders](https://github.com/knapeczadam/Unity-Shaders "") - Shader demo - More than 300 examples.
+* [Unity Shaders](https://github.com/igradeca/Unity-Shaders) - Unity project about reseach on shaders and particle system.
+* [Unity Visualizations](https://github.com/WorldOfZero/UnityVisualizations "") - Collection of shaders and visual effects created for Unity 3D.
+* [Unity Shader Sketches](https://github.com/setchi/Unity-ShaderSketches) - Sketches made with ShaderLab in Unity.
+* [ShaderProject](https://github.com/ellioman/ShaderProject) - A container for all sorts of handy shaders.
+* [Unity3D CG Programming](https://github.com/przemyslawzaworski/Unity3D-CG-programming "") - Various shaders.
+* [Shaders](https://github.com/ewersp/Shaders "") - A collection of shaders written in CG/ShaderLab for Unity.
+* [Shaders for Unity](https://github.com/wolf96/shader_for_unity "") - Some shaders for unity,such as Post processing, brdf, rendering and so on.
+
+#### Utilities
+
+* [ConfigurableShaders](https://github.com/supyrb/ConfigurableShaders "") - Unity Shader enum references.
+* [foo.md](https://gist.github.com/aras-p/b2a0952161cb0c2b2cc0) - Controlling fixed function states from materials/scripts in Unity. By aras-p.
+* [hlsl2glslfork](https://github.com/aras-p/hlsl2glslfork "") - HLSL to GLSL language translator based on ATI's HLSL2GLSL. Used in Unity.
+* [Voxel Performance](https://github.com/charlesgriffiths/VoxelPerformance "") - High performance voxel landscape functions for Unity 5.3+ using compute and geometry shaders.
+
+### Skyboxes
+
+* [UnitySkyboxShaders](https://github.com/keijiro/UnitySkyboxShaders "") - Custom skybox shaders.
+* [CloudSkybox](https://github.com/keijiro/CloudSkybox "") - Skybox shader with volumetric clouds.
+* [UnitySkyboxShaders](https://github.com/keijiro/UnitySkyboxShaders "") - Custom skybox shaders.
+* [Swarm](https://github.com/keijiro/Swarm "") - An example of use of compute shaders and procedural instancing.
+* [Skybox](https://assetstore.unity.com/packages/2d/textures-materials/sky/skybox-4183?aid=1100l35sb&utm_source=aff "") - Free skybox from the Asset Store.
+* [LSky Dynamic Skydome Unity](https://github.com/Rallec/LSky-Dynamic-Skydome-Unity "") - Dynamic skydome for Unity3D.
+* [LSky Dynamic Skydome Unity (Another)](https://github.com/Vytek/LSky-Dynamic-Skydome-Unity "") - Dynamic skydome for Unity3D.
+* [Celeste Sky Core Unity](https://github.com/Rallec/Celeste-Sky-Core-Unity "") - Dynamic Sky for Unity.
+* [CloudSkybox](https://github.com/AsehesL/CloudSkybox "") - Skybox shader with volumetric clouds.
+* [DarkAndStormy](https://github.com/SquirrelyJones/DarkAndStormy "") - Overcast clouds with crazy colors skybox shader for Unity3D.
+* [LSky Unity](https://github.com/Rallec/LSky-Unity "") - Dynamic Skydome for unity (built in render).
+
+### Effects
+
+* [Scriptable Render Pipeline](https://github.com/Unity-Technologies/ScriptableRenderPipeline "") - Designed to give artists and developers the tools they need to create modern, high-fidelity graphics in Unity. :fab fa-unity:
+* [Unity MPipeline Framework](https://github.com/MaxwellGengYF/Unity-MPipeline-Framework "") - A convenient programming framework for Scriptable Rendering Pipeline.
+* [Testbed HDRP](https://github.com/keijiro/TestbedHDRP "") - Testbed project for Unity HDRP (High Definition Render Pipeline).
+* [LookingGlassRenderPipeline](https://github.com/wotakuro/LookingGlassRenderPipeline "") - Sample of LookingGlassRenderPipeline.
+* [Post-Processing Stack](https://github.com/Unity-Technologies/PostProcessing "") - Components for camera and other effects. :fab fa-unity:
+* [Skinner](https://github.com/keijiro/Skinner "") - Special Effects with Skinned Mesh in Unity.
+* [SkinnedMeshCombiner](https://github.com/joshcamas/skinnedmeshcombiner "") - A Skinned Mesh Combiner that doesn't require actual skinned meshes as inputs.
+* [KinoBokeh](https://github.com/keijiro/KinoBokeh "") - Depth of field effect for Unity
+* [Kinoglitch](https://github.com/keijiro/KinoGlitch "") - Video glitch effects for Unity.
+* [KinoContour](https://github.com/keijiro/KinoContour "") - Contour line filter for Unity.
+* [Page curl effect for Unity3D](https://github.com/Dandarawy/Unity3DBookPageCurl "") - Page curl effect for Unity3D Github Page
+* [Outline Effect](https://github.com/cakeslice/Outline-Effect "") - Outline Image Effect for Unity.
+* [Outline Effect (fork)](https://github.com/lordofduct/Outline-Effect "") - Outline Image Effect for Unity.
+* [Outline Effect but its faster](https://github.com/JimmyCushnie/Outline-Effect-but-its-faster "") - A fork of Outline Effect with improved performance.
+* [Unity 5 Effects](https://github.com/i-saint/Unity5Effects) - Effect storage space for Unity 5.
+* [KinoFringe](https://github.com/keijiro/KinoFringe "") - Chromatic aberration image effect for Unity.
+* [OIT_Lab](https://github.com/candycat1992/OIT_Lab "") - Order-independent Transparent in Unity.
+* [Unity Dither4444](https://github.com/keijiro/unity-dither4444 "") - AssetPostProcessor for making high-quality 16-bit color textures in Unity.
+* [Super Blur](https://github.com/PavelDoGreat/Super-Blur "") - Screen and UI gaussian blur for Unity.
+* [RainDropEffect](https://github.com/EdoFrank/RainDropEffect "") - RainDropEffect for the Unity Asset Store.
+* [LensRain](https://github.com/Kink3d/LensRain "") - A screen-space lens rain effect using Unity's V2 Post-processing framework.
+* [SSMS](https://github.com/OCASM/SSMS "") - Screen space multiple scattering for Unity. 
+* [KinoFog](https://github.com/keijiro/KinoFog "") - Global fog effect for Unity.
+* [KinoMotion](https://github.com/keijiro/KinoMotion "") - Motion blur post-processing effect for Unity.
+* [Sprite Glow](https://github.com/Elringus/SpriteGlow "") - A sprite glow effect for Unity game engine.
+* [Temporal](https://github.com/playdeadgames/temporal "") - Temporal Reprojection Anti-Aliasing for Unity 5.0+.
+* [Firefly](https://github.com/keijiro/Firefly "") - Unity ECS example for special effects.
+* [DepthInverseProjection](https://github.com/keijiro/DepthInverseProjection "") - An example showing how to inverse-project depth samples into the view/world space in Unity.
+* [Fragments](https://github.com/keijiro/Fragments "") - Fragment mesh objects for particle effects in Unity.
+* [UnityPCSS](https://github.com/TheMasonX/UnityPCSS "") - Nvidia's PCSS soft shadow algorithm implemented in Unity.
+* [SMAA](https://github.com/Chman/SMAA "") - A highly customizable implementation of Subpixel Morphological Antialiasing for Unity.
+* [uSMAA](https://github.com/ArieLeo/uSMAA "") - SMAA implementation for Unity.
+* [IMP](https://github.com/xraxra/IMP "") - Billboard imposter baking for Unity.
+* [PotentiallyVisibleSetPlugin](https://github.com/nashnie/PotentiallyVisibleSetPlugin "")
+* [CP_SSSSS](https://github.com/CustomPhase/CP_SSSSS "") - Naive screen-space subsurface scattering solution for Unity 5.
+* [Unity Signed Distance Field Shadow](https://github.com/chenjd/Unity-Signed-Distance-Field-Shadow "") - Signed Distance Field Shadow in Unity.
+* [Bloom Effect Unity](https://github.com/hdmmY/Bloom-Effect-Unity "") - Bloom Effect Implementation.
+* [Unity ProjectionSpray v2](https://github.com/sugi-cho/Unity-ProjectionSpray-v2 "")
+* [Unity Screen Space Reflection](https://github.com/MaxwellGengYF/Unity-Screen-Space-Reflection "") - Clearly Screen Space Reflection!
+* [kDecals](https://github.com/Kink3d/kDecals "") - A forward projector Decal system for Unity.
+* [SkinnedDecals](https://github.com/lhlvieira/SkinnedDecals "") - A simple un-optimized skinned decal system for Unity.
+* [ComputeStochasticReflections](https://github.com/simeonradivoev/ComputeStochasticReflections "") - Compute Stochastic Screen Space Reflections for unity post processing.
+* [NoiseRings](https://github.com/kaelb/NoiseRings "") - NoiseRings is a noisy emanating ring effect for Unity adapted with permission from the VR music video experience Chorus.
+* [UnityEffects](https://github.com/vivekhnz/UnityEffects "") - A collection of video game effects recreated in Unity.
+* [Unity BOTW Screenspace Rain](https://github.com/thnewlands/unity-botw-screenspace-rain "") - A study of screenspace rain impacts in Breath of the Wild.
+* [Helicopter Effect](https://twitter.com/unity3dexpert/status/1050240849085431808)
+* [Facepunch.Highlight](https://github.com/Facepunch/Facepunch.Highlight) - Mesh outline effect.
+* [FoW_Shadow_Map](https://github.com/krazzei/FoW_shadow_map "") - An example project of how to do fog of war in Unity 3D.
+* [MeshEffectForTextMeshPro](https://github.com/mob-sakai/MeshEffectForTextMeshPro "") - Mesh effect components for TextMeshPro in Unity.
+* [uHomography](https://github.com/hecomi/uHomography "") - Homography Transformation Image Effect for Unity.
+* [FastPostProcessing](https://github.com/demonixis/FastPostProcessing "") - A small and fast post processing stack (only one pass) targeting mobile and mobile VR for Unity. (#VIRTUAL REALITY)
+* [Heatwave](https://github.com/andrewgotow/Heatwave "") - A simple post-processing effect for the Unity game engine which renders small-scale distortions.
+* [CameraProjector](https://github.com/fuqunaga/CameraProjector "") - Project the image captured by the camera onto the object. (#CAMERA)
+* [ProjectionMapping Unity](https://github.com/sugi-cho/ProjectionMapping-unity "") - Simple Projection-Mapping tool for Unity (WIP).
+* [RDSystem](https://github.com/keijiro/RDSystem "") - Reaction-diffusion system with CustomRenderTexture.
+* [HDRP ReactionDiffusionSystem](https://github.com/alelievr/HDRP_ReactionDiffusionSystem "") - Reaction diffusion system using HDRP and custom render textures.
+* [Unity Voxel](https://github.com/mattatz/unity-voxel "") - Mesh voxelization for Unity.
+* [UnityWaveEquation](https://github.com/AsehesL/UnityWaveEquation "")
+* [Deform Prototype](https://github.com/keenanwoodall/Deform-Prototype "") - My second attempt at a framework for deforming meshes in the editor and at runtime in Unity. (Not in development)
+* [Static Blured Screen](https://github.com/mob-sakai/StaticBluredScreen) - Non-realtime (=static) screen blur for Unity. Easy to use background for dialogs. (#CAMERA)
+* [KinoObscurance](https://github.com/keijiro/KinoObscurance) - Screen Space Ambient Obscurance image effect for Unity.
+* [UnityEffects](https://github.com/kode80/UnityEffects) - A collection of free to use effects for Unity3D.
+* [OneStepEffects](https://github.com/makoto-unity/OneStepEffects) - You can add beautiful image effects by one step.
+* [KinoBloom](https://github.com/keijiro/KinoBloom) - Bloom effect for Unity.
+* [Perfect Spheres](https://github.com/gilescoope/perfect-spheres) - A system for rendering spheres cheaply and accurately.
+* [A Crack In The Slab](https://github.com/Broxxar/ACrackInTheSlab) - An exploration to recreate an effect from Dishonored 2 in Unity.
+* [SonarFx](https://github.com/keijiro/SonarFx) - Sonar effect for Unity.
+* [DistortionImageEffect](https://github.com/slipster216/DistortionImageEffect) - An image effect based distortion/heat effect that doesn't use grab pass.
+* [kode80SSR](https://github.com/kode80/kode80SSR) - An open source screen space reflections implementation for Unity3D 5.
+* [Cinematic Image Effects](https://bitbucket.org/Unity-Technologies/cinematic-image-effects) - Unity official cinematic image effects for your camera. :fab fa-unity:
+* [PcxEffects](https://github.com/keijiro/PcxEffects)
+* [ViewportPerspective](https://github.com/cecarlsen/ViewportPerspective) - Camera image effect for adjusting the viewport perspective using four corner handles. (#CAMERA)
+* [Unity Ground Truth Ambient Occlusison](https://github.com/haolange/Unity-Ground-Truth-Ambient-Occlusion) - A physically based screen space ambient occulsion post processing effect.
+* [Volumetric Clouds](https://github.com/jaagupku/volumetric-clouds) - Volumetric clouds in Unity.
+* [Shader Effects](https://github.com/NoxWings/Shader-Effects) - Unity shader effects.
+* [Glow](https://github.com/rakkarage/Glow) - Unity ShaderGraph effect test.
+* [EdgeDetect-PostProcessingUnity](https://github.com/jean-moreno/EdgeDetect-PostProcessingUnity) - Unity legacy Edge Detect image effect ported to Post Processing Stack v2.
+* [StaticBluredScreen](https://github.com/mob-sakai/StaticBluredScreen) - Non-realtime (=static) screen blur for Unity. Easy to use background for dialogs.
+* [Koch's Fractals](https://github.com/hww/koch_fractals) - Koch Fractals Demo for Unity.
+* [SDF Gen Unity](https://github.com/mmerchante/sdf-gen-unity) - A signed distance function generator running inside Unity.
+* [SDFr](https://github.com/xraxra/SDFr) - A signed distance field baker for Unity 
+* [MeshToSDF](https://github.com/aman-tiwari/MeshToSDF) - Convert a mesh to an SDF for the Visual Effect Graph in realtime.
+* [UnitySlitScan](https://github.com/kitasenjudesign/UnitySlitScan) - Simple time-displacement filter (slit-scan) on Unity.
+* [Crystal Caustics](https://github.com/CJT-Jackton/Crystal-Caustics) - Approximated crystal caustics effect in real-time.
+* [Smrvfx](https://github.com/keijiro/Smrvfx) - An example that shows how to pass data from a skinned mesh renderer to a visual effect graph.
+* [SE Natural Bloom Dirty Lens](https://github.com/sonicether/SE-Natural-Bloom-Dirty-Lens) - (Legacy) post-processing effect for Unity.
+* [Colorgrade](https://github.com/jarnik/colorgrade) - Color Grading for Unity.
+* [Unity PostProV2 User LUT And Z Grading](https://github.com/Philipp-Seifried/Unity-PostProV2-User-LUT-And-Z-Grading) - Z-Based Color Grading and Separate User LUT for Unity's "Post-Processing Stack V2".
+* [PixelVision](https://github.com/n1ckfg/PixelVision) - Pixel effect + LUT for Unity 2017.
+
+
+### Particle Systems (VFX)
+
+* [KvantSpray](https://github.com/keijiro/KvantSpray "") - Object instancing/particle animation system for Unity.
+* [KvantWall](https://github.com/keijiro/KvantWall "") - GPU accelerated object array animator for Unity. (#ANIMATION)
+* [Voxelman](https://github.com/keijiro/Voxelman "") - Unity ECS + C# Job System example.
+* [GPU Particles](https://github.com/Robert-K/gpu-particles "") - A GPU Particle System for Unity.
+* [KvantWig](https://github.com/keijiro/KvantWig "") - Non-realistic hair simulation in Unity.
+* [ParticleEffectForUGUI](https://github.com/mob-sakai/ParticleEffectForUGUI "") - This plugin provide a component to render particle effect for uGUI in Unity 2018.2+. The particle rendering is maskable and sortable, without Camera, RenderTexture or Canvas.
+* [ShinyEffectForUGUI](https://github.com/mob-sakai/ShinyEffectForUGUI) - Shiny effect of uGUI, which does not need mask or normal map.
+* [KvantStream](https://github.com/keijiro/KvantStream "") - A simple GPU particle system for Unity.
+* [GPU Particles](https://github.com/Robert-K/gpu-particles "") - A GPU Particle System for Unity.
+* [CurlNoiseParticleSystem](https://github.com/edom18/CurlNoiseParticleSystem "") - Particle system using Curl Noise for Unity.
+* [HoudiniEngineForUnity_deprecated](https://github.com/sideeffects/HoudiniEngineForUnity_deprecated "") - Houdini Engine for Unity (Deprecated).
+* [FluvioFX](https://github.com/thinksquirrel/fluviofx "") - Fluid dynamics for Unity's VFX graph.
+* [Effekseer](https://github.com/effekseer/Effekseer "") - A tool editing particle effects.
+* [Unity Mesh Triangulator](https://github.com/alexmuab/unity-mesh-triangulator "") - Explode into triangles any mesh you want!
+* [OffScreenParticleRendering](https://github.com/slipster216/OffScreenParticleRendering "") - Off Screen Particle Rendering system for Unity.
+* [UnityParticleGalaxyGPGPU](https://github.com/etienne-p/UnityParticleGalaxyGPGPU "") - A galaxy particle system running on the GPU, made with Unity.
+* [AnimationParticleSystem Unity](https://github.com/sugi-cho/AnimationParticleSystem-Unity "") - A simple example of usage of Animated-Mesh-Surface-Position-Texture-Generator, SurfaceSamplerUnity, ParticleSystem VertexStreams and CustomData.
+* [UnityParticleSystemPreview](https://github.com/akof1314/UnityParticleSystemPreview "") - Unity ParticleSystem Preview.
+* [Unity Particle Scaler](https://github.com/minhhh/unity-particle-scaler "") - Convenient Editor Window to scale Unity's Shuriken Particle System. (#EXTENSIBILITY)
+* [ParticleCloudVRC](https://github.com/lukis101/ParticleCloudVRC "") - Interactable shader-based particle system for VRChat/Unity. (#SHADERS) (#VIRTUAL-REALITY)
+* [GPUTrail](https://github.com/fuqunaga/GPUTrail "") - Trails with ComputeShader implementtaion for Unity.
+* [GPUPTrail](https://github.com/Butadiene/GPUPTrail "")
+* [TrailBoids](https://github.com/keijiro/TrailBoids "") - Just tried making boids with particle trails.
+* [KvantSwarm](https://github.com/keijiro/KvantSwarm "") - Flowing line renderer for Unity.
+* [OutLine Geometry](https://github.com/yuyujunjun/OutLine_Geometry "") - VFX using Outline And Geometry.
+* [LaspVfx](https://github.com/keijiro/LaspVfx "") - Audio reactive Unity VFX with LASP.
+* [ParticleFeatures_2018.3](https://github.com/UnityTechnologies/ParticleFeatures_2018.3 "") - A project of examples of new Particle Features in Unity 2018.3. :fab fa-unity:
+* [VoxToVFX](https://github.com/Zarbuz/VoxToVFX "") - Import a MagicaVoxel project to Unity using the new VFX Graph.
+
+### Lightning / Points of Clouds
+
+* [Aura](https://github.com/raphael-ernaelsten/Aura "") - Volumetric Lighting for Unity.
+* [SEGI](https://github.com/sonicether/SEGI "") - A fully-dynamic voxel-based global illumination system for Unity with Single Pass, Instanced & Forward/Deferred Rendering.
+* [Lightmap Switching Tool](https://github.com/laurenth-unity/lightmap-switching-tool "") - Tool that allows switching different baked lightmap sets on a unity scene at runtime.
+* [Light Probe Populator](https://github.com/alexismorin/Light-Probe-Populator "") - Automatic Unity Light Probe Generation.
+* [Volumetric Lights](https://github.com/SlightlyMad/VolumetricLights "") - Volumetric Lights for Unity.
+* [LightShafts](https://github.com/robertcupisz/LightShafts "") - A light shafts (volumetric shadows) effect for Unity.
+* [Vapor](https://github.com/ArthurBrussee/Vapor "") - Volumetric Fog for Unity.
+* [AtmosphericScattering](https://github.com/SlightlyMad/AtmosphericScattering "") - Atmospheric Scattering for Unity.
+* [Unity Volumetric Fog](https://github.com/SiiMeR/unity-volumetric-fog "") - Volumetric fog implementation in Unity.
+* [Unity Volumetric Light](https://github.com/MaxwellGengYF/Unity-Volumetric-Light "") - A powerful volumetric light plugin based on post-processing in Unity3D.
+* [Unity Volume Sampler](https://github.com/mattatz/unity-volume-sampler "") - Mesh volume sampler with voxelizer & 3D poisson disk sampling for Unity.
+* [Unity Volume Rendering](https://github.com/mattatz/unity-volume-rendering "") - Volume rendering by object space raymarching for Unity.
+* [DFVolume](https://github.com/keijiro/DFVolume "") - Distance-field volume generator for Unity.
+* [Unity Volumetric Fog](https://github.com/SiiMeR/unity-volumetric-fog "") - Volumetric fog implementation in Unity.
+* [LiveScan3D-Hololens](https://github.com/MarekKowalski/LiveScan3D-Hololens "") - A Unity application for receiving and rendering point clouds on Hololens and other devices. (#MIXED REALITY)
+* [Simple Light Probe Placer](https://github.com/AlexanderVorobyov/simple-light-probe-placer) - It is simple tool for Unity3d and it help you easily place Light Probes in your scene.
+* [LightProbesPlacement](https://github.com/laurenth-unity/LightProbesPlacement) - Unity project showing how to use the custom Package LightProbesVolumes for placing lightprobes automatically.
+* [VolumetricLinesUnity](https://github.com/johannesugb/VolumetricLinesUnity) - Source of the Volumetric Lines Asset from Unity's Asset Store.
+* [ProbePolisher](https://github.com/keijiro/ProbePolisher) - Light probe editor for Unity.
+* [LightProbeUtility](https://github.com/keijiro/LightProbeUtility "") - Applying light probes to a mesh drawn with Graphics.DrawMesh.
+* [Pcx](https://github.com/keijiro/Pcx "") - Point cloud importer & renderer for Unity.
+* [PointCloudUnity](https://github.com/mirobyrtus/PointCloudUnity "") - Point cloud loader.
+* [SpriteLightKit](https://github.com/prime31/SpriteLightKit "") - Blended lighting system for Unity that works with standard Sprites. (#2D)
+* [ContactShadows](https://github.com/keijiro/ContactShadows "") - Experimental implementation of contact shadows for Unity.
+* [Shadow Volumes Toolkit](https://github.com/charblar/shadow-volumes-toolkit "") - Dynamic, pixel-perfect shadows based on the Shadow Volume algorithm. (#ARCHIVED)
+* [Unity Deferred Lighting Model](https://github.com/MaxwellGengYF/Unity-Deferred-Lighting-Model "") - Optimized lighting processing shaders for deferred rendering path.
+* [Unity Ground Truth Ambient Occlusion](https://github.com/MaxwellGengYF/Unity-Ground-Truth-Ambient-Occlusion "") - A physically based screen space ambient occulsion post processing effect.
+* [Unity SRP VXGI](https://github.com/Looooong/Unity-SRP-VXGI "") - Voxel-based Global Illumination using Unity Scriptable Render Pipeline.
+* [ShadowVolume](https://github.com/chengkehan/ShadowVolume "") - Shadow Volume for Static-Scene-Object of Unity.
+* [Brunetons Improved Atmospheric Scattering](https://github.com/greje656/Brunetons-Improved-Atmospheric-Scattering "") -  Unity port of Brunetons improved atmospheric scattering.
+* [PointCloudLoader](https://github.com/rctheriot/PointCloudLoader "") -  A Point Cloud loading utility for Unity.
+* [PlannarShadowForUnity](https://github.com/ozlael/PlannarShadowForUnity "") - Planar Shadow is very cheap and useful for mobile games.
+* [CascadedShadowMapping](https://github.com/chenyong2github/CascadedShadowMapping "")
+* [Cornell Box Photon Mapping](https://github.com/cvryn7/Cornell-Box-Photon-Mapping "") - Used photon mapping to render photo realistic cornell box.
+* [RRLS](https://github.com/deyyanl/rrls "") - Realistic real-time light simulation for Unity game engine.
+
+### Raymarching
+
+* [uRaymarching Examples](https://github.com/hecomi/uRaymarchingExamples) -  Examples using uRaymarching.
+* [Unity Raymarching Collision](https://github.com/hecomi/UnityRaymarchingCollision) -  Raymarching x Rigidbody interaction example.
+* [Unity Raytracer](https://github.com/SIZMW/unity-raytracer) -  This project demonstrates ray tracing in Unity, which is a real time rendering engine.
+* [Unity Compute Shader Ray Tracing Practice](https://github.com/ya7gisa0/Unity-Compute-Shader-Ray-Tracing-Practice) -  Raytracing shader tutorial for Unity.
+* [unity Experimental DXR](https://github.com/Unity-Technologies/Unity-Experimental-DXR) -  Experimental Direct X Raytracing in Unity. :fab fa-unity:
+* [Raymarching On Unity 5](https://github.com/i-saint/RaymarchingOnUnity5) - Raymarcher in Unity 5.
+* [Ray Marching](https://github.com/SebLague/Ray-Marching) - Experimenting with using ray marching to render signed distance functions in Unity.
diff --git a/docs/scripting/scripting.md b/docs/scripting/scripting.md
new file mode 100644
index 0000000..aa0365c
--- /dev/null
+++ b/docs/scripting/scripting.md
@@ -0,0 +1,269 @@
+## Scripting
+
+### Algorithms
+
+* [Unity Teddy](https://github.com/mattatz/unity-teddy "") - Teddy algorithm implementation in Unity.
+* [Hull Delaunay Voronoi](https://github.com/Scrawk/Hull-Delaunay-Voronoi "") - Hull, Delaunay and Voronoi algorithms in Unity.
+* [csDelaunayUnity](https://github.com/nothke/csDelaunayUnity "") - GC free (non alloc) voronoi diagram for Unity.
+* [LinHowe GameAlgorithm](https://github.com/IceLanguage/LinHowe_GameAlgorithm "") - Based on Unity to simply implement algorithms commonly used in game program development.
+* [LinHowe GameAlgorithm](https://github.com/jesta88/Unity-Voronoi "") - Port of [Javascript Voronoi](https://github.com/gorhill/Javascript-Voronoi) by Raymond Hill to Unity. Also, an attempt at dynamic mesh fractures.
+* [Unity Metaballs 2D](https://github.com/luke161/Unity-Metaballs-2D "") - Implementation of 2D Metaballs with marching squares in Unity. (#2D)
+* [Metaball Sample](https://github.com/Butadiene/Metaball-sample "") - Metaball sample.
+* [Catmull Rom Splines](https://github.com/JPBotelho/Catmull-Rom-Splines "") - Catmull-Rom spline implementation in Unity.
+* [Marching Cubes On The GPU](https://github.com/Scrawk/Marching-Cubes-On-The-GPU "") - A implementation of the marching cubes algorithm on the GPU in Unity.
+* [PathFindingStudy](https://github.com/gucheng0712/PathFindingStudy "") - A study of different Graph Search(Pathfinding) techniques in unity, includes: Breadth-First Search, Dijkstra Search, Greedy-Best-Frist Search, A*. (#AI)
+* [Advanced Algorithms](https://github.com/justcoding121/Advanced-Algorithms "") - 100+ algorithms & data structures generically implemented in C#.
+* [Unity Delaunay](https://github.com/OskarSigvardsson/unity-delaunay) - A Delaunay/Voronoi library for Unity, and a simple destruction effect. (#LIBRARIES)
+* [UnityOctree](https://github.com/Unity-Technologies/UnityOctree) - A dynamic, loose octree implementation for Unity written in C#. :fab fa-unity:
+* [UnityOctree](https://github.com/Nition/UnityOctree) - Same as the previous resource.
+* [ECS Octree](https://github.com/Antypodish/ECS-Octree "") - ECS based octree.
+* [DynamicObjectTracking](https://github.com/phatboysh/DynamicObjectTracking "") - A multithreaded implementation of Nition's Octree for Unity allowing for discriminatory object tracking with large numbers of moving objects.
+* [Ring Buffer](https://bitbucket.org/sirgru/ring_buffer) - This is a very simple implementation of a RingBuffer<T>, without any excessive API and without thread safety. It presumes usage of value-type elements.
+* [CellularGrowth](https://github.com/mattatz/CellularGrowth "") - GPU-based cellular growth simulation in Unity.
+* [Unity Line Segments Intersection](https://github.com/setchi/Unity-LineSegmentsIntersection "") - Line segments intersection for Unity.
+* [Boids](https://github.com/Chris-Kirkham/boids "") - An implementation of the Boids algorithm (Reynolds, C. W. (1987) Flocks, Herds, and Schools: A Distributed Behavioral Model) for Unity.
+* [IK Solvers](https://github.com/NoxWings/IK-Solvers "") - Basic IK Experiments.
+* [SimpleIKSolver](https://github.com/Unity-Technologies/SimpleIKSolver "") :fab fa-unity:
+* [CCD](https://github.com/akanarika/CCD "") - CCD Inverse Kinematics Implemented by Unity3D.
+* [Dithering Unity3D](https://github.com/mcraiha/Dithering-Unity3d "") - Dithering algorithms for Unity3D.
+
+### Attributes
+
+* [NaughtyAttributes](https://github.com/dbrizov/NaughtyAttributes) - Attribute Extensions for Unity.
+* [Unity3D ComponentAttribute](https://github.com/Thundernerd/Unity3D-ComponentAttribute) - An attribute that let's you auto-load components.
+* [AssetPathAttribute](https://github.com/ByronMayne/AssetPathAttribute "") - AssetPathAttribute is a Unity attribute used in Unity to allow you to have drag and drop asset references in the inspector but really use string paths for serialization.
+* [Unity3D-ExecutionOrderAttribute](https://github.com/Thundernerd/Unity3D-ExecutionOrderAttribute "") - An attribute that sets a script's execution order.
+* [Unity Built In Attributes](https://github.com/teebarjunk/Unity-Built-In-Attributes "") - A list of built in Unity Attributes.
+* [SerializedParameter_Unity](https://github.com/tsubaki/SerializedParameter_Unity) - Persist data between play mode sessions attribute.
+* [com.bovinelabs.naughtyattributes](https://github.com/tertle/com.bovinelabs.naughtyattributes) - Attribute Extensions for Unity.
+* [UnityGetComponentAutoInjector](https://github.com/jinnin0105/UnityGetComponentAutoInjector) - Unity GetComponent Auto Injector.
+* [UnityNonNull](https://github.com/ulrikdamm/UnityNonNull) - [NonNull] attribute to fields and classes in Unity.
+* [UnityCompactFieldAttribute](https://github.com/AnomalousUnderdog/UnityCompactFieldAttribute) - Lets each property label have their own width, to prevent the labels from getting cut off.
+* [SetProperty](https://github.com/gucheng0712/SetProperty) - A PropertyAttribute/PropertyDrawer combination that allows for properties in Unity.
+
+### Frameworks 
+
+#### Entity-Component System
+
+* [Entitas (Official)](https://github.com/sschmid/Entitas-CSharp "") - Entitas is a super fast Entity Component System (ECS) Framework specifically made for C# and Unity.
+* [BovineLabs Entities](https://github.com/tertle/com.bovinelabs.entities "") - A collection of extensions, systems and jobs for Unity ECS.
+* [Entitas Lite](https://github.com/rocwood/Entitas-Lite "") - Entitas-Lite is a No-CodeGenerator branch of Entitas, and also a fast & easy ECS framework for C#/Unity. 
+* [ECS Unity](https://github.com/dimmpixeye/ecs.unity "") - The Entity Component System framework for Unity. Ease the pain of decoupling data from behaviors.
+* [Entitas](https://github.com/Leopotam/ecs "") - C# Entity Component System with optional integration to Unity game engine.
+* [Svelto.ECS](https://github.com/sebas77/Svelto.ECS "") - C# Lightweight Data Oriented Entity Component System Framework. See legacy attemps [here](https://github.com/sebas77/-Obsolete-Lightweight-IoC-Container-for-Unity3D) and [here](https://github.com/sebas77/-Deprecated-Svelto.IoC). Also [Svelto.SignalChain](https://github.com/sebas77/Svelto.SignalChain). Also has a [debugger](https://github.com/YashikMoloka/Svelto.ECS.Debugger).
+* [NanoECS](https://github.com/SinyavtsevIlya/NanoECS "") - C#-Unity ECS framework.
+* [ECSTest](https://github.com/keijiro/ECSTest "") - Some small tests for Unity ECS.
+* [URSA](https://github.com/pointcache/URSA "") - Integrated ECS framework for Unity.
+* [JECSu](https://github.com/pointcache/JECSu "") - Just another ECS for unity.
+* [ECS](https://github.com/adizhavo/ECS "") - An entity component system framework that uses generics to achieve composition without having the need to write new code in the entity class.
+* [ECS and DoD In Unity](https://github.com/LifeIsGoodMI/ECS-And-DoD-In-Unity "") - Entity Component Systems & Data Oriented Design In Unity.
+* [ECS FAQ](https://github.com/SanderMertens/ecs-faq "") - Frequently asked questions about ECS.
+
+#### Inversion of Control (IOC)
+
+* [StrangeIoC](http://strangeioc.github.io/strangeioc/) - Strange is a super-lightweight and highly extensible Inversion-of-Control (IoC) framework, written specifically for C# and Unity.
+* [Zenject](https://github.com/svermeulen/Zenject "") - Dependency Injection Framework for Unity3D. Other fork can be found [here](https://github.com/modesttree/Zenject).
+* [OpenFramework](https://github.com/omid3098/OpenFramework) - A Lightweight framework for unity with dependency injection.
+* [Unity Container](https://github.com/unitycontainer/unity) - A full featured, extensible dependency injection container.
+* [Adic](https://github.com/intentor/adic) - Lightweight dependency injection container for Unity.
+
+#### Reactive
+
+* [UniRx (Reactive Extensions for Unity)](https://github.com/neuecc/UniRx "") - A reimplementation of the .NET Reactive Extensions. Rx cures the "asynchronous blues" without async/await.
+* [UniRx.Async UPM)](https://github.com/5argon/UniRx.Async-UPM "") - neuecc's UniRx.Async UPM pullable version.
+* [ECSRx](https://github.com/EcsRx/ecsrx) - A reactive take on the ECS pattern for .NET game developers.
+* [ECSRx.unity](https://github.com/EcsRx/ecsrx.unity) - A simple framework for unity using the ECS paradigm but with UniRx for fully reactive systems.
+
+#### MVVM
+
+* [uMVVM](https://github.com/MEyes/uMVVM) - A simple Unity MVVM framework.
+* [Unity3D Foundation](https://github.com/NVentimiglia/Unity3d-Foundation) - Unity3d Databinding, MVVM, Tasks, Localization. (#DEPRECATED). See Foundation Light.
+* [Foundation Light](https://github.com/NVentimiglia/Foundation-Light) - Light Weight Architecture Library.
+* [uFrame Complete](https://github.com/uFrame/uFrame.Complete) - All in one repo, includes: Kernel, Designer, Architect, MVVM, ECS. See more [here](https://github.com/uFrame).
+* [Loxodon Framework](https://github.com/cocowolf/loxodon-framework) - Unity3D MVVM Loxodon Framework Databinding Localization UGUI.
+
+#### Clean Architecture
+
+* [CAFU Core](https://github.com/umm/cafu_core) - Clean Architecture For Unity. See [sample](https://github.com/monry/cafu_sample).
+
+#### Others
+
+* [QFramework](https://github.com/liangxiegame/QFramework "") - Your first K.I.S.S Unity 3D Framework.
+* [SmartData](https://github.com/sigtrapgames/SmartData) - A designer-friendly, editor-driven Unity3D framework for connecting data and events. 
+* [Fungus](https://github.com/snozbot/fungus) - An easy to use Unity 3D library for creating illustrated Interactive Fiction games.
+* [GameFramework](https://github.com/EllanJiang/GameFramework) - This is literally a game framework, based on Unity game engine. It encapsulates commonly used game modules during development, and, to a large degree, standardises the process, enhances the development speed and ensures the product quality. 
+* [GameFramework](https://github.com/FlipWebApps/GameFramework) - A free framework for Unity that will help drastically increase the development speed and feature set of your games.
+* [UnityGameFramework Template](https://github.com/HolicXXX/UnityGameFramework-Template) - A common Unity template Project base on UnityGameFramework.
+* [Autoya](https://github.com/sassembla/Autoya) - Thin framework for Unity.
+* [Unity Framework](https://github.com/cleavetv/unity-framework) - An application framework for C# Unity3D game projects.
+* [uFrame](https://www.assetstore.unity3d.com/en/#!/content/14381) - Create maintainable games faster, better, more stable, and consistent than ever before. :fas fa-coins:
+* [CatLib](https://github.com/CatLib/Framework) - CatLib Component-Based Framework.
+* [Unidux](https://github.com/mattak/Unidux) - Redux Architecture for Unity.
+* [Imperial Studio Libraries](https://github.com/Trojaner/ImperialStudio-Libraries) - Contains a modern framework for game projects.
+* [Actors Unity3d Framework](https://github.com/dimmpixeye/Actors-Unity3d-Framework) - Ease the pain of decoupling data from behaviors in Unity.
+* [UXF](https://github.com/immersivecognition/unity-experiment-framework) - Framework for human behaviour experiments in Unity.
+* [Weaver](https://github.com/ByronMayne/Weaver) - Weaver is a code weaving framework built right into Unity Engine. Based heavily off of Fody.
+* [MOBA_CSharp_Unity](https://github.com/yasgamesdev/MOBA_CSharp_Unity) - Framework for MOBA games. The server does not depend on Unity. Run on Linux.
+* [EasyMOBA](https://github.com/nidaynere/easymoba) - MOBA game template for Unity.
+* [RPGCore](https://github.com/Fydar/RPGCore) - RPGCore is a framework for producing RPG games and mechanics in Unity.
+* [UniversalUnityHooks](https://github.com/UserR00T/UniversalUnityHooks) - A framework designed to hook into and modify methods in unity games via dlls.
+* [ScriptableObject Architecture](https://github.com/DanielEverland/ScriptableObject-Architecture) - Makes using Scriptable Objects as a fundamental part of your architecture in Unity super easy. (#PATTERNS)
+* [UDBase](https://github.com/KonH/UDBase) - Module-based game template for Unity. Modules in UDBase are called Controllers, their implementation can be replaced without changing your project source code.
+* [Voxelmetric](https://github.com/richardbiely/Voxelmetric) - An efficient voxel framework for Unity3D. Legacy code is [here](https://github.com/Voxelmetric/Voxelmetric1).
+* [ColaFrameWork](https://github.com/XINCGer/ColaFrameWork)
+* [Lockstep Framework](https://github.com/SnpM/LockstepFramework) - A framework designed for games that need lockstep simulations. It includes a deterministic 2D physics engine, pathfinding, behavior system, and more. LSF is integrated with Unity.
+* [Akka.Unity.Sample](https://github.com/Arkatufus/Akka.Unity.Sample) - Akka.Net 1.3.0 Running in Unity3D.
+* [SpacePuppy Unity Framework 3.0](https://github.com/lordofduct/spacepuppy-unity-framework-3.0) - A framework of various tools to facilitate making games in Unity 2017.
+
+### Logging
+
+* [UberLogger](https://github.com/bbbscarter/UberLogger "") - Replacement logging framework for Unity, with a new editor and in-game console.
+* [Common.Logging.Unity3D](https://github.com/SaladLab/Common.Logging.Unity3D "") - Common Logging (A portable logging abstraction for .NET) for Unity3D.
+* [NLog Unity3D](https://github.com/AqlaSolutions/NLog-Unity3D "") - Advanced .NET and Silverlight Logging.
+* [log4net.unity](https://github.com/HolyShovelSoft/log4net.unity) - Some log4net helper classes and UnityEngine.Debug appender for Unity.
+* [Consolation](https://github.com/mminer/consolation) - In-game debug console that displays output from 'Debug.Log'.
+* [Command Terminal](https://github.com/stillwwater/command_terminal) - Unity Command Terminal: In-Game Console.
+* [Lunar Unity Console](https://github.com/SpaceMadness/lunar-unity-console "") - High-performance Unity iOS/Android logger built with native platform UI.
+* [SDConsole](https://github.com/gabrielevierti/SDConsole) - An in-game developer console for Unity.
+* [UnityConsole](https://github.com/Wenzil/UnityConsole "") - Easy-to-use developer console for Unity 5.
+* [UnityIngameDebugConsole](https://github.com/yasirkula/UnityIngameDebugConsole "") - A uGUI based console to see debug messages and execute commands during gameplay in Unity.
+* [Unity3D Console](https://github.com/mikelovesrobots/unity3d-console "") - Quake-style console plugin for Unity3d.
+* [UnityREPL](https://github.com/MrJoy/UnityREPL "") - C# REPL tool for Unity3D built on Miguel's tool.
+* [Command Terminal](https://github.com/stillwwater/command_terminal) - Unity Command Terminal: In-Game Console.
+* [Net Peeweek Console](https://github.com/peeweek/net.peeweek.console) - An interactive runtime console for unity available as package.
+* [CUDLR](https://github.com/proletariatgames/CUDLR) - Console for Unity Debugging and Logging Remotely. (#DEPRECATED)
+* [TTConsole](https://github.com/chiuan/TTConsole) - The Best Debuger & Runtime Console For Unity3D.
+* [Unity File Debug](https://github.com/Sacred-Seed-Studio/Unity-File-Debug) - Enhanced debug logging for Unity, with JSON/CSV export and HTML viewer.
+* [Unity Logs Viewer](https://github.com/aliessmael/Unity-Logs-Viewer) - Using this tool you can easily check your editor console logs inside the game itself! No need to go back to the project and do any tests to track the problems!
+
+### Serialization
+
+* [JsonUtility](https://docs.unity3d.com/ScriptReference/JsonUtility.html "") - Utility functions for working with JSON data.
+* [JSON.NET for Unity3D](https://github.com/SaladLab/Json.Net.Unity3D "") - Forked Newtonsoft.Json to support Unity3D.
+* [ZeroFormatter](https://github.com/neuecc/ZeroFormatter "") - Fastest C# Serializer and Infinitely Fast Deserializer for .NET, .NET Core and Unity.
+* [UTF8Json](https://github.com/neuecc/Utf8Json "") - Definitely Fastest and Zero Allocation JSON Serializer for C#(NET, .NET Core, Unity, Xamarin)
+* [FullSerializer](https://github.com/jacobdufault/fullserializer "") - A robust JSON serialization framework that just works with support for all major Unity export platforms.
+* [Odin Serializer](https://github.com/TeamSirenix/odin-serializer "") - Fast, robust, powerful and extendible .NET serializer built for Unity.
+* [Msgpack Sharp](https://github.com/scopely/msgpack-sharp) - A lightweight, high performance MessagePack framework for the CLR that works in constrained environments like AOT under Unity and Xamarin.
+* [Msgpack Unity3D](https://github.com/deniszykov/msgpack-unity3d) - MessagePack and JSON serializer for Unity3D.
+* [Msgpack CLI](https://github.com/msgpack/msgpack-cli) - MessagePack implementation for Common Language Infrastructure.
+* [MessagePack CSharp](https://github.com/neuecc/MessagePack-CSharp) - Extremely Fast MessagePack Serializer for C#(.NET, .NET Core, Unity, Xamarin).
+* [MessagePackGridView](https://github.com/E-K/MessagePackGridView) - MessagePack Data Viewer built on MessagePack Csharp and Unity TreeView.
+* [Protobuf3 for Unity](https://github.com/bitcraftCoLtd/protobuf3-for-unity) - Google Protocol Buffers runtime library version 3 for Unity (targeting .NET 3.5).
+* [Protobuf net](https://github.com/mgravell/protobuf-net) - Protocol Buffers library for idiomatic .NET.
+* [Sproto Csharp](https://github.com/lvzixun/sproto-Csharp) - A pure C# implementation of sproto.
+* [Sproto Unity](https://github.com/m2q1n9/sproto-Unity) - A demo show how to use sproto-Csharp in Unity.
+* [Unity Serializer NG](https://github.com/TheSniperFan/unityserializer-ng) - Resurrection of the discontinued Unity Serializer by Mike Talbot from WhyDoIDoIt.com (Unity 5).
+* [OpenFile](https://github.com/mrzapp/openfile) - Open source serialization for Unity.
+* [Protobuf Unity](https://github.com/5argon/protobuf-unity "") - Automatic .proto files compilation in Unity project to C# as you edit them.
+* [JSONObject](https://github.com/mtschoen/JSONObject) - The JSONObject class/library for Unity.
+* [TinyJSON](https://github.com/pbhogan/TinyJSON) - TinyJSON is a simple JSON library for C# that strives for ease of use.
+* [JSONFX for Unity3D](https://bitbucket.org/TowerOfBricks/jsonfx-for-unity3d)
+* [BitpackingTools](https://github.com/emotitron/BitpackingTools) - Bitpacking/serialization libraries used interally for Unity Store NetworkSyncTransform and TransformCrusher Assets.
+* [Knight Windjson](https://github.com/winddyhe/knight-windjson) - A Json Parser used in Unity3D engine.
+* [Unity Interface Reference](https://github.com/Cippman/Unity-InterfaceReference) - A serializable class that holds the reference to an interface.
+
+
+### Error Reporting 
+
+* [Bugsnag Unity](https://github.com/bugsnag/bugsnag-unity "") - Automatic error reporting for Unity games.
+* [Instabug](https://instabug.com/platforms/unity "") - Bug Reporting and In-App Chat for Unity Games. See [more](https://docs.instabug.com/docs/unity-integration-android).
+
+### Debugging 
+
+* [Graphy](https://github.com/Tayx94/graphy "") - The ultimate, easy to use, feature packed FPS counter, stats monitor and debugger for your Unity project.
+* [kPortals](https://github.com/Kink3d/kPortals "") - A pre-calculated Portal visibility system for Unity.
+* [UnityHeapDump](https://github.com/Zuntatos/UnityHeapDump "") - Tool to dump memory to text files for inspection.
+* [RuntimeUnityEditor](https://github.com/ManlyMarco/RuntimeUnityEditor) - In-game inspector and debugging tools for applications made with Unity3D game engine.
+* [Unity RuntimeCodeExecuter](https://github.com/flamacore/Unity-RuntimeCodeExecuter) - A simple program that uses NET 2.0 library to execute any code in runtime. Specifically oriented for usage in Unity.
+* [HiLog Unity](https://github.com/hiramtan/HiLog_unity "") - HiDebug, the extensions of Unity's debug plugin.
+* [UnitySystemVisualizer](https://github.com/5argon/UnitySystemVisualizer "") - Unity ECS's system visualizer.
+* [Unity3D Runtime Debug Draw](https://github.com/jagt/unity3d-runtime-debug-draw "") - Single file debuging DrawLine/DrawText/etc that works in both Scene/Game view, also works in built PC/mobile builds.
+* [REX Diagnostics](https://github.com/thorgeirk11/REX-Diagnostics "") - Unity extension that enables expression evaluation at runtime to facilitate testing and debugging.
+* [upm.MemoryInfoPlugin-for-Unity](https://github.com/hiyorin/upm.MemoryInfoPlugin-for-Unity "") - A set of tools for Unity to allow handling memory info for Android and iOS.
+* [com.bovinelabs.analyzers](https://github.com/tertle/com.bovinelabs.analyzers "") - Package to add Roslyn Analyzers to Unity projects.
+* [UnityDebugDrawer](https://github.com/imxzjv/UnityDebugDrawer "") - Draw debug handles and other GUI elements in the scene view from anywhere in your code base.
+* [UnityDebugAutoRemove](https://github.com/flamacore/UnityDebugAutoRemove "") - Auto remove debug.log lines with this simple replacer unless it's a development build.
+* [CODA](https://github.com/kcers/coda "") - Burst Compiler Static Code Analysis.
+* [DebugPlus](https://github.com/benoit-dumas/DebugPlus "") - Unity asset to draw all built-in gizmos in the Unity Debug way.
+* [Apkd.UnityDemystifier](https://github.com/apkd/Apkd.UnityDemystifier "") - Improved stack trace display for Unity.
+* [UnityGendarmerie](https://github.com/maluoi/UnityGendarmerie "") - Simple hooks for using [Gendarme](https://github.com/spouliot/gendarme) from inside the Unity editor.
+* [Uni Debug Menu](https://github.com/baba-s/uni-debug-menu "") - Customizable debug menu for games.
+
+### Coroutines / Threading
+
+* [CoroutineChain](https://github.com/geniikw/CoroutineChain) - Unity3D, Coroutine, scripting.
+* [Unity Routines](https://github.com/tomblind/unity-routines) - Replacement for Unity coroutines that supports hierarchical routines and pooling.
+* [UnityAsyncRoutines](https://github.com/TorVestergaard/UnityAsyncRoutines) - An extremely lightweight Unity library for creating and managing asynchronous coroutines for easy, straight-forward multi-threading and parallellism.
+* [UnityMainThreadDispatcher](https://github.com/PimDeWitte/UnityMainThreadDispatcher) - A simple, thread-safe way of executing actions (Such as UI manipulations) on the Unity Main Thread.
+* [UnityMainThreadDispatcher](https://github.com/ashikns/UnityMainThreadDispatcher) - Fork of previous UnityMainThreadDispatcher.
+* [Asyncoroutine](https://github.com/zsaladin/Asyncoroutine "") - Asyncoroutine is a unity asset that allows you to use Coroutine and async/await together.
+* [TeaTime](https://github.com/alvivar/TeaTime "") -  A fast & simple queue for timed callbacks, focused on solving common coroutines patterns in Unity games.
+* [OneShotCoroutine](https://github.com/Cippman/Unity-OneShotCoroutine "") -  A plug 'n' play solution to run coroutines of inactive gameObjects.
+
+### Libraries
+
+* [Awesome Dotnet](https://github.com/quozd/awesome-dotnet) - Awesome list for .NET related resources. :fas fa-burn:
+* [NativeCollections](https://github.com/jacksondunstan/NativeCollections "") - Native Collection Types for Unity.
+* [Unity Native Array](https://github.com/keijiro/unity-native-array "") - Passing C# array to a native plug-in.
+* [C# Sharp Promise](https://github.com/Real-Serious-Games/C-Sharp-Promise) - Promises library for C# for management of asynchronous operations.
+* [Unity Resource Checker](https://github.com/handcircus/Unity-Resource-Checker) - Editor utility for unity to help check resources in the current scene (including active textures, their sizes, materials, meshes and which objects are using them).
+* [UnityNativeScripting](https://github.com/jacksondunstan/UnityNativeScripting) - Unity Scripting in C++.
+* [Unity Mathematics](https://github.com/Unity-Technologies/Unity.Mathematics "") - A prototype of a C# math library providing vector types and math functions with a shader like syntax. ![Official](UnityResource16x16.png)
+* [Vector3D](https://github.com/sldsmkd/vector3d "") - Double precision Vector Libraries for Unity3D.
+* [3DMath](https://github.com/GregLukosek/3DMath "") - Unity C# 3D Math methods library.
+* [LINQ to GameObject for Unity](https://github.com/neuecc/LINQ-to-GameObject-for-Unity) - Traverse GameObject Hierarchy by LINQ.
+* [Unity3D Async Await Util](https://github.com/svermeulen/Unity3dAsyncAwaitUtil) - A bunch of code to make using async-await easier in Unity3D.
+* [UnityComponent](https://github.com/GameBuildingBlocks/UnityComponent) - Unity Resource Component.
+* [Unity.Library.eppz](https://github.com/eppz/Unity.Library.eppz) - Collection of libraries for Unity.
+* [UnityBezierSolution](https://github.com/yasirkula/UnityBezierSolution) - A bezier spline solution for Unity 3D with some utility functions (like travelling the spline with constant speed/time).
+* [UnityEngineAnalyzer](https://github.com/vad710/UnityEngineAnalyzer) - Roslyn Analyzer for Unity3D.
+* [UnityTimer](https://github.com/akbiggs/UnityTimer) - Powerful and convenient library for running actions after a delay in Unity3D.
+* [UniGif](https://github.com/WestHillApps/UniGif) - GIF image decoder for Unity.
+* [UnityMeshSimplifier](https://github.com/Whinarn/UnityMeshSimplifier) - Mesh simplification for Unity.
+* [UnityMeshSimplifier](https://github.com/Unity-Technologies/UnityMeshSimplifier) - Mesh simplification for Unity. :fab fa-unity:
+* [EzySlice](https://github.com/DavidArayan/EzySlice) - An open source mesh slicer framework for Unity3D Game Engine. Written in C#.
+* [MeshDecimator](https://github.com/Whinarn/MeshDecimator) - A mesh decimation library for .NET and Unity.
+* [CosineGradient](https://github.com/keijiro/CosineGradient) - Cosine gradient generator for Unity.
+* [PerfAssist](https://github.com/GameBuildingBlocks/PerfAssist) - Various performance-related components for Unity development.
+* [A Terrible Kingdom](https://github.com/UnityTechnologies/ATerribleKingdom) - Scripting the Timeline for games in creative ways. 
+* [Wave Function Collapse](https://github.com/mxgmn/WaveFunctionCollapse) - Bitmap & tilemap generation from a single example with the help of ideas from quantum mechanics.
+* [Unity Wave Function Collapse](https://github.com/selfsame/unity-wave-function-collapse) - Fork of WaveFunctionCollapse.
+* [Fluent State Machine](https://github.com/Real-Serious-Games/Fluent-State-Machine) - Fluent API for creating state machines in C#.
+* [Easy Save 2](https://www.assetstore.unity3d.com/en/#!/content/768) - A fast and simple way to save and load data on all major platforms supported by Unity. :fas fa-coins:
+* [Mad Level Manager](https://www.assetstore.unity3d.com/en/#!/content/10070) - Provides a level manager, level selector, and progress save/load tools to make it easy to transition between levels and make level selection screens. :fas fa-coins:
+* [UniStorm](https://www.assetstore.unity3d.com/en/#!/content/2714) - A customizable dynamic day and night weather system that creates realistic storms and weather. :fas fa-coins:
+* [GreenMambaStealth](https://github.com/DameonL/GreenMambaStealth) - An advanced stealth system for Unity that detects how well-lit a character is, allowing characters to hide in dynamic shadows.
+* [Pedometer API](https://github.com/olokobayusuf/Pedometer-API) - Pedometer is a native pedometer API for Unity Engine.
+* [Signals](https://github.com/yankooliveira/signals) - A typesafe, lightweight messaging lib for Unity.
+* [Coop Design](https://github.com/simeonradivoev/Coop-Design) - A prototype for runtime cooperative level designing in Unity 3D.
+* [Hydrogen CSharp](https://github.com/nxrighthere/Hydrogen-CSharp) - A prototype for runtime cooperative level designing in Unity 3D.
+* [Skill System](https://github.com/dongweiPeng/SkillSystem)
+* [SharpZipLib](https://github.com/icsharpcode/SharpZipLib) - A Zip, GZip, Tar and BZip2 library written entirely in C# for the .NET platform. 
+* [K4os.Compression.LZ4](https://github.com/MiloszKrajewski/K4os.Compression.LZ4) - LZ4/LH4HC compression for .NET Standard 1.6/2.0 (formerly known as lz4net).
+* [SSH.NET](https://github.com/sshnet/SSH.NET) - SSH.NET is a Secure Shell (SSH) library for .NET, optimized for parallelism.
+* [SharpSSH](http://www.tamirgal.com/blog/page/SharpSSH.aspx) - SharpSSH is a pure .NET implementation of the SSH2 client protocol suite.
+* [edtFTPnet/Free](https://enterprisedt.com/products/edtftpnet/) - Free .NET FTP library.
+* [netftp](https://archive.codeplex.com/?p=netftp) - .NET FTP Client.
+* [JWT](https://github.com/jwt-dotnet/jwt) - JWT (JSON Web Token) implementation for .NET 3.5+
+* [FluentValidation.Net35](https://github.com/emersonsoares/FluentValidation.Net35) - A small validation library for .NET that uses a fluent interface and lambda expressions for building validation rules.
+* [NPOI](https://archive.codeplex.com/?p=npoi) - Library to interact with Microsoft Office.
+* [YamlDotNet](https://github.com/aaubry/YamlDotNet) - YamlDotNet is a .NET library for YAML.
+* [Unity3D Script Library](https://github.com/QianMo/Unity3D-Script-Library) - A Script Library of Unity3D.
+* [OpenStash](https://github.com/mrzapp/openstash) - Open source inventory framework for Unity.
+* [OpenConvo](https://github.com/mrzapp/openconvo) - Open source conversation framework for Unity.
+* [UnityBarcodeScanner](https://github.com/kefniark/UnityBarcodeScanner "") - Simple Unity Barcode Scanner.
+* [PerlinNoise](https://github.com/keijiro/PerlinNoise "") - 1D/2D/3D Perlin noise function for Unity.
+* [LibNoise.Unity](https://github.com/ricardojmendez/LibNoise.Unity "") - Coherent noise library for Unity, a port of LibNoise.
+* [UnityRandom](https://github.com/tucano/UnityRandom) - Random library in C# for Unity3D.
+* [BulletMLLib](https://github.com/pixelnest/BulletMLLib "") - A Unity version of the open source C# library used to read BulletML XML files. See [BulletMLLib](https://github.com/dmanning23/BulletMLLib).
+* [Unity Voxelizer](https://github.com/brianasu/unity-voxelizer "") - Utility library to voxelize meshes in Unity.
+* [Klak](https://github.com/keijiro/Klak "") - Creative coding library for Unity.
+* [Archiver Unity](https://github.com/LightBuzz/Archiver-Unity "") - Compress and decompress files and folders in Unity3D.
+* [Excel4Unity](https://github.com/joexi/Excel4Unity "") - Excel for Unity. Provides both read and write with .xls and .xlsx.
+* [LiteCSV](https://github.com/terrynoya/LiteCSV "") - A lightweight csv table parser in C# mainly for unity but also use in .NET.
+* [BurstImageProcessing](https://github.com/stella3d/BurstImageProcessing "") - Fast parallel image processing on the CPU, using Unity C# jobs and Burst compilation (Experimental). 
+* [Curl Unity](https://github.com/91Act/curl-unity "") - This is a C# wrapper for Unity to use libcurl with http2/openssl enabled.
+* [WolfboyDispatcher](https://github.com/sassembla/WolfboyDispatcher "") - Small messaging system for Unity.
+* [Glader.Essentials](https://github.com/HelloKitty/Glader.Essentials "") - Essential development libraries for C#/.NET and Unity3D.
+* [Unity CoC](https://github.com/jeffcampbellmakesgames/unity-coc "") - CoC is a convention over configuration library for Unity that helps to set a common folder convention in a Unity project.
diff --git a/docs/services/services.md b/docs/services/services.md
new file mode 100644
index 0000000..e3a91d1
--- /dev/null
+++ b/docs/services/services.md
@@ -0,0 +1,9 @@
+## Services
+
+* [Unity Analytics](https://www.assetstore.unity3d.com/en/#!/content/28120) - Provides a dashboard with metrics to help track active players, sessions, retention, and revenue.
+* [Flurry Unity3D](https://github.com/Majchrzak/Flurry-Unity-3D "") - Flurry iOS and Android plugin for Unity 3D. (#ANALYTICS)
+* [Simple Firebase Unity](https://github.com/dkrprasetya/simple-firebase-unity "") - Firebase Realtime-Database's REST API Wrapper for Unity in C#.
+* [Azure Services For Unity](https://github.com/dgkanatsios/AzureServicesForUnity "") - Accessing Azure services (App Service, Table Storage, CosmosDB with Table API, Event Hubs) from a Unity game.
+* [Build & Release Unity Games with Azure DevOps](https://alexknowles.info/unity/build-release-unity-games-with-azure-devops/ "") - Tutorial on how to build Unity games with Azure DevOps.
+* [MapsSDK Unity](https://github.com/Microsoft/MapsSDK-Unity "") - This repository contains samples, documentation, and supporting scripts for Maps SDK, a Microsoft Garage project.
+* [Devtodev](https://github.com/devtodev-analytics/unity-sdk) - A full-cycle analytics solution for game developers.
diff --git a/docs/speech-recognition/speech-recognition.md b/docs/speech-recognition/speech-recognition.md
new file mode 100644
index 0000000..95fbb5c
--- /dev/null
+++ b/docs/speech-recognition/speech-recognition.md
@@ -0,0 +1,4 @@
+## Speech Recognition
+
+* [Unity SpeechWithLUIS](https://github.com/ActiveNick/Unity-SpeechWithLUIS "") - Sample Unity project used to demonstrate the integration of Speech Recognition and Language Understanding using the new Microsoft Speech Service (Preview) and LUIS from Microsoft Cognitive Services.
+* [Unity MS SpeechSDK](https://github.com/ActiveNick/Unity-MS-SpeechSDK "") - Sample Unity project used to demonstrate Speech Recognition using the new Microsoft Speech Service (Preview) via WebSockets.
diff --git a/docs/terrain/terrain.md b/docs/terrain/terrain.md
new file mode 100644
index 0000000..4ea305d
--- /dev/null
+++ b/docs/terrain/terrain.md
@@ -0,0 +1,19 @@
+## Terrain
+
+* [TerrainToolSamples](https://github.com/Unity-Technologies/TerrainToolSamples) - New Terrain Tools and Brush Assets for the Unity Terrain system. :fab fa-unity:
+* [Microsplat](https://assetstore.unity.com/packages/tools/terrain/microsplat-96478) - A modular free terrain shading system focused on performance and ease of use. MicroSplat is described as a replacement shader system for Unity Terrains.
+* [Terrain Topology Algorithms](https://github.com/Scrawk/Terrain-Topology-Algorithms "") - Terrain topology algorithms in Unity.
+* [Unity DryadeErosion](https://github.com/paulgswanson/Unity_DryadeErosion "") - A toolbox for procedural generation, dedicated to Unity. (#PROCEDURAL)
+* [Interactive Erosion](https://github.com/Scrawk/Interactive-Erosion "") - A toolbox for procedural generation, dedicated to Unity. (#PROCEDURAL)
+* [Unity Interactive Erosion](https://github.com/paulgswanson/Unity_InteractiveErosion "") - Interactive erosion in Unity.
+* [Terrain Tool Customized](https://github.com/AncientMagikaTechnologies/TerrainToolCustomized "") - This is our own custom Version of Unity Technologies "Terrain Tool Samples".
+* [PathPaintTool](https://github.com/Roland09/PathPaintTool "") - A free and open source path painter tool for painting paths on terrain in Unity.
+* [Thalatta](https://github.com/JustGamingLTD/Thalatta "") - An open source terrain generation suite.
+* [TerrainGeneration](https://github.com/guotata1996/TerrainGeneration "") - Terrain generation based on nature of river flow.
+* [Lowpoly Terrain Editor](https://github.com/MCrafterzz/lowpolyterraineditor "") - Free Low Poly terrain editor for Unity.
+* [VegetationStudioProExtensions](https://github.com/Roland09/VegetationStudioProExtensions "") -  Custom tools for use with [Vegetation Studio Pro](https://assetstore.unity.com/packages/tools/terrain/vegetation-studio-pro-131835). 
+* [Hydraulic Erosion](https://github.com/SebLague/Hydraulic-Erosion "") - Simulating erosion to try make procedural terrains look a little more natural.
+* [Worldsmith](https://github.com/worldsmithdev/Worldsmith "") - Worldsmith Community Build.
+* [Terrain Stamps](https://github.com/Roland09/Terrain-Stamps "") - Stamps for the Unity Terrain Stamp Tool.
+* [StampToolExtended](https://github.com/Roland09/StampToolExtended "") - Extended version of the Unity Terrain Stamp Tool.
+* [KvantLattice](https://github.com/keijiro/KvantLattice "") - A GPU accelerated fractal terrain renderer for Unity.
diff --git a/docs/testing/testing.md b/docs/testing/testing.md
new file mode 100644
index 0000000..d471370
--- /dev/null
+++ b/docs/testing/testing.md
@@ -0,0 +1,8 @@
+## Testing
+
+* Unity Remote [Android](https://play.google.com/store/apps/details?id=com.unity3d.genericremote "") [iOS and tvOS](https://itunes.apple.com/us/app/unity-remote-4/id871767552) - View playmode on final devices. See [more](https://docs.unity3d.com/Manual/UnityRemote5.html).
+* [Unity Test Tools](https://unity3d.com/es/unity/qa/test-tools "") - Unity Editor Test Tools. See legacy [here](https://bitbucket.org/Unity-Technologies/unitytesttools). ![Official](UnityResource16x16.png)
+* [Test Framework Training](https://github.com/Unity-Technologies/test-framework-training "") - Training project for Unity testing. ![Official](UnityResource16x16.png)
+* [Airtest](https://github.com/AirtestProject/Airtest "") - UI Test Automation Framework for Games and Apps. Uses computer vision.
+* [Lunar Unity Assert](https://github.com/SpaceMadness/lunar-unity-assert "") - An improved wrapper over UnityEngine.Assertions.
+* [GamesTestAutomationExample](https://github.com/UnityTech/GamesTestAutomationExample "") - The collecting ideas on how to do Test Automation in Games.
diff --git a/docs/textures/textures.md b/docs/textures/textures.md
new file mode 100644
index 0000000..1155ece
--- /dev/null
+++ b/docs/textures/textures.md
@@ -0,0 +1,16 @@
+## Textures
+
+* [VertexPaint](https://github.com/slipster216/VertexPaint "") - Unity 5.3 Vertex Painter.
+* [NormalPainter](https://github.com/gucheng0712/NormalPainter "") - Vertex normal editor for Unity.
+* [InkPainter](https://github.com/EsProgram/InkPainter "") - Texture-Paint on Unity. 
+* [Texture Array Unity](https://github.com/DmtDenisov/Texture-Array-Unity "") - A small tool for creating texture arrays in Unity. (#UTILITIES)
+* [Unity Texture Packer](https://github.com/andydbc/unity-texture-packer) - Utility to combine color channels from different textures into a single output.
+* [WaveformProvider](https://github.com/EsProgram/WaveformProvider) - Provide a texture to simulate waves with Unity.
+* [PVRTexTool Wrapper](https://github.com/fxgames/pvrtextool_wrapper) - PVRTexTool wrapper for Unity3D.
+* [Animation Texture Baker](https://github.com/zulfajuniadi/Animation-Texture-Baker) - Bake Legacy Animations into Textures. Targeting ECS. (#ANIMATION)
+* [AudioTexture](https://github.com/TyounanMOTI/AudioTexture) - Generate Unity Texture2D from AudioClip. (#AUDIO)
+* [CurveTexture](https://github.com/slipster216/CurveTexture) - Easily encode arbitrary curves into textures and apply them to materials or global shader properties.
+* [UVPreview](https://github.com/AsehesL/UVPreview) - Preview your UV islands in inspector window for your textures.
+* [VertexAnimator](https://github.com/nobnak/VertexAnimator)
+* [8 Free Substances (Free)](https://www.assetstore.unity3d.com/en/#!/content/7940) - 8 configurable procedural textures.
+* [CC0 Textures](https://cc0textures.com/) - Free PBR textures.
diff --git a/docs/tools/tools.md b/docs/tools/tools.md
new file mode 100644
index 0000000..5fc2f82
--- /dev/null
+++ b/docs/tools/tools.md
@@ -0,0 +1,49 @@
+### Tools
+
+* [Unity Tools](https://github.com/NoxHarmonium/unity-tools "") - Scripting Toolkit Github's Page.
+* [Unity Tools](https://github.com/kode80/UnityTools "") - Unity Tools Github's Page.
+* [Unity Toolbag](https://github.com/nickgravelyn/UnityToolbag "") - Collection of miscellaneous open source scripts and helpers for Unity 5.0.
+* [Leopotam Group Library Unity](https://github.com/Leopotam/LeopotamGroupLibraryUnity "") - Tools library for unity 3d game engine: animator graph helpers, serialization (json), localization, event routing (eventbus, ui actions), embedded scripting, uGui xml markup, threading, tweening, in-memory protection and other helpers.
+* [U3D](https://github.com/DragonBox/u3d "") - Cross-platform Unity3D tools.
+* [UnitySimplePatchTool](https://github.com/yasirkula/UnitySimplePatchTool "") - Unity port of SimplePatchTool library to add patching support to standalone Unity applications.
+* [TextMeshProReplacer](https://github.com/jackisgames/TextMeshProReplacer "") - Unity port of SimplePatchTool library to add patching support to standalone Unity applications.
+* [CantysToolbox](https://github.com/CantyCanadian/CantysToolbox "") - Set of tools for any Unity projects.
+* [Unity Development Tools](https://github.com/heisarzola/Unity-Development-Tools "") - A collection of several tools and code snippets to improve development speed and best practices in the "Unity" game engine.
+* [ToolsCollection](https://github.com/Unity-Technologies/ToolsCollection "") - Official Unity Tools shared by its developers. :fab fa-unity:
+* [ModTool](https://github.com/Hello-Meow/ModTool "") - Mod support for Unity.
+* [UnityStudio](https://github.com/RaduMC/UnityStudio) - Unity Studio is a tool for exploring, extracting and exporting assets from Unity games and apps. (#ASSET-STORE)
+* [Bitstrap](https://github.com/bitcake/bitstrap) - BitStrap is BitCake's collection of Unity tools that improve our workflow.
+* [uDllExporter](https://github.com/hecomi/uDllExporter "") - Tool to build DLLs in Unity.
+* [UPAToolkit](https://github.com/Brackeys/UPAToolkit "") - A free Pixel Art Toolkit for the Unity Engine.
+* [IL Repack](https://github.com/gluck/il-repack "") - Open-source alternative to ILMerge.
+* [Xcodeapi](https://bitbucket.org/Unity-Technologies/xcodeapi "") - This is an Xcode Manipulation module maintained by the Unity mobile team. :fab fa-unity:
+* [iOS Native Code Samples](https://bitbucket.org/Unity-Technologies/iosnativecodesamples "") - These are native code samples for iOS maintained by the Unity iOS team. :fab fa-unity:
+* [XUPorter](https://github.com/onevcat/XUPorter "") - Add files and frameworks to your Xcode project after it is generated by Unity 3D.
+* [Xcodeproj](https://github.com/CocoaPods/Xcodeproj "") - Create and modify Xcode projects from Ruby.
+* [Mod-pbxproj](https://github.com/kronenthaler/mod-pbxproj "") - A python module to manipulate XCode projects.
+* [AssetForge](https://kenney.itch.io/assetforge) - Easily create simple assets in seconds. :fas fa-coins:
+* [UnityPSDLayoutTool](https://github.com/GlitchEnzo/UnityPSDLayoutTool) - A tool used to import a Photoshop Documents (.psd files) into the Unity Game Engine.
+* [Psd2UnityImporter](https://github.com/SubjectNerd-Unity/Psd2UnityImporter) - An advanced PSD importer tool for Unity.
+* [GSLS Optimizer](https://github.com/aras-p/glsl-optimizer) - GLSL optimizer based on Mesa's GLSL compiler. Used in Unity for mobile shader optimization. (#SHADERS)
+* [Memory Profiler](https://bitbucket.org/Unity-Technologies/memoryprofiler) - Unity 5.3a4 has a new very lowlevel memory profiler API.  It can tell you which objects got blamed for how much C++ memory allocations. :fab fa-unity:
+* [Uni Simple Profiler](https://github.com/baba-s/uni-simple-profiler)
+* [Support for Unity Memory Profiler](https://github.com/robertoardila/support-unity-memoryprofiler "") - Extension for the existing Unity memory profiler project.
+* [DekosTools](https://github.com/rafaelhipercg/DekosTools "") - Tools to make work easier on Unity3D.
+* [PPTech Build Tools](https://github.com/quatmo/pptech-build-tools "") - Build Tools for Unity 3D that we use for Braveland game.
+* [Prime31 Unity AddOns](https://github.com/prime31/P31UnityAddOns "") - Mostly defunct. Features were added and components broken out in the 'Kit' repositories.
+* [PrefabPainter](https://github.com/Roland09/PrefabPainter "") - Tool for conveniently adding huge amounts of prefabs.
+* [Unity Finder](https://github.com/UnityTech/unity_finder "") - Node.js module for finding all Unity installations on Windows and Mac computers.
+* [Unity3D Tools](https://github.com/TheUncas/unity3D-tools "") - Unity3D common useful tools.
+* [Quick Play Tool](https://github.com/atrblizzard/Quick-Play-Tool "") - Unity3D editor tool to speed up scene switching and playtesting when you are working with multiple scenes.
+* [Cyber Dogs Toolbox](https://github.com/Harley-Torrisi/Cyber-Dogs-Toolbox "") - A default asset used to help in the development of games using C# in Unity.
+* [UnityCommon](https://github.com/brihernandez/UnityCommon "") - Assortment of commonly re-used tools and code for my Unity projects.
+* [BlendShapeBuilder](https://github.com/unity3d-jp/BlendShapeBuilder "") - Tweak vertices and generate blend shapes in Unity.
+* [Ferr Tools](https://ferrlib.com/ "") - Different tools for common tasks in Unity (Terrain, Vertex painter, Level Design...)
+* [FerrCommon](https://github.com/maluoi/FerrCommon "") - Common code for the Ferr tools.
+* [LayerManager](https://github.com/YondernautsGames/LayerManager "") - A simple tool for reordering, merging and modifying unity layers. Updates game objects, components and assets to match.
+* [RectTransformEditor](https://github.com/Syy9/RectTransformEditor "") - Custom RectTransform Editor.
+* [BGC Tools](https://github.com/UCRBrainGameCenter/BGC_Tools "") - A collection of useful Unity Tools and scripts developed at the UC Riverside Brain Game Center.
+* [Unity3DTiles](https://github.com/NASA-AMMOS/Unity3DTiles "") - A 3D Tiles implementation in Unity.
+* [BlendShapeBuilder](https://github.com/flammpfeil/BlendShapeBuilder "") - Tweak vertices and generate blend shapes in Unity.
+* [AbilityDesigner](https://github.com/NoxNorthwind/AbilityDesigner "") - A plugin which gives you a dynamic, extendable and user friendly tool for the creation of abilities in games. 
+
diff --git a/docs/tweening/tweening.md b/docs/tweening/tweening.md
new file mode 100644
index 0000000..7ebec6a
--- /dev/null
+++ b/docs/tweening/tweening.md
@@ -0,0 +1,15 @@
+## Tweening
+
+* [DOTween](https://www.assetstore.unity3d.com/en/#!/content/27676) - Tween any numeric property or field (including Vectors, Rectangles, etc.), plus some non-numeric ones (like strings). This is the follow-up to HOTween. [:fab fa-github:](https://github.com/Demigiant/dotween)
+* [GoKit](https://github.com/prime31/GoKit) - An open source, lightweight tween library aimed at making tweening objects dead simple.
+* [iTween](https://www.assetstore.unity3d.com/en/#!/content/84) - A simple, and easy to use animation system.
+* [iTween Expansion](https://github.com/jtothebell/iTween) - An expansion of Bob Berkebile's Unity 3D tweening plugin.
+* [XTween](https://github.com/Toki-Labs/XTween "") - Tweener for Unity.
+* [PlasticTween](https://github.com/PlasticApps/PlasticTween "") - Tween Library for Unity3D (ECS+JOBS).
+* [ReMotion](https://github.com/neuecc/ReMotion "Hyper Fast Reactive Tween Engine for Unity") - Hyper Fast Reactive Tween Engine for Unity.
+* [ECS-Tween](https://github.com/Xerios/ECS-Tween) - Simple Unity tweening system using ECS that works with GameObjects!
+* [AutoMotion](https://github.com/UnityPatterns/AutoMotion "") - A simple yet powerful set of functions for creating smooth motion, tweens, and bouncy effects.
+* [ZestKit](https://github.com/prime31/ZestKit "") - Tween library for Unity. The best of GoKit and GoKitLite combined in an easy to use API.
+* [GoKit](https://github.com/prime31/GoKit "") - Lightweight tween library for Unity.
+* [Coroutween](https://github.com/keenanwoodall/Coroutween "") - A shitty tweening library for Unity. Only made for the pun, don't actually use it.
+* [Uween](https://github.com/beinteractive/Uween "") - Lightweight tween library for Unity.
diff --git a/docs/ui/ui.md b/docs/ui/ui.md
new file mode 100644
index 0000000..2583f2f
--- /dev/null
+++ b/docs/ui/ui.md
@@ -0,0 +1,171 @@
+## UI
+
+### Control Components
+
+* [Unity UI Extensions](https://bitbucket.org/UnityUIExtensions/unity-ui-extensions) - An extension project for the new Unity UI system (uGUI).
+* [CandyCoded](https://github.com/CandyCoded/CandyCoded "") - Custom Unity Components that are delightful.
+* [UnityCodes](https://github.com/springd5211/UnityCodes "") - Unity UI controls.
+* [UIElementsExamples](https://github.com/Unity-Technologies/UIElementsExamples "") - Unity project containing examples to use UIElements in the Editor. :fab fa-unity:
+* [Unity_UI_Samples](https://github.com/tsubaki/Unity_UI_Samples "")
+* [Rec-Ex](https://github.com/slavniyteo/rect-ex "") - Unity3D Rect Extensions.
+* [UnityUI StarMap](https://github.com/SimonDarksideJ/UnityUI-StarMap "") - Elite Dangerous star viewer using the Unity UI System.
+
+#### Minimap
+
+* [MiniMap](https://github.com/Area730/MiniMap) - Unity3D minimap (radar) system. [Asset Store](https://www.assetstore.unity3d.com/en/#!/content/33729)
+
+#### Text
+
+* [uGUI Hypertext](https://github.com/setchi/uGUI-Hypertext "") - Hypertext for uGUI.
+* [uGUI LinkImageText](https://github.com/akof1314/uGUI_LinkImageText) - Unity uGUI Text support insert link and image.
+* [UnityTMProFontCustomizedCreater](https://github.com/akof1314/UnityTMProFontCustomizedCreater) - Custom TextMeshPro Font creator.
+
+##### Font Rendering
+
+* [Text Mesh Pro](https://www.assetstore.unity3d.com/en/#!/content/84126) - An alternative to render text in uGUI by using the distance field technique, which allows crisp fonts at any scale. This was recently purchased by Unity and will be integrated into the engine in the future. (FREE)
+* [Typogenic](https://github.com/Chman/Typogenic) - Signed-distance field text rendering for Unity.
+* [UnityStbEasyFont](https://github.com/aras-p/UnityStbEasyFont) - A port of stb_easy_font.h to Unity/C#.
+
+#### Shapes
+
+* [UI Shapes Kit](https://github.com/thisotherthing/ui-shapes-kit "") - Procedural shapes for Unity UI.
+* [Shapes2D](https://github.com/all-iver/shapes2d "") - Make simple art assets quickly in Unity.
+* [ShapeRenderer](https://github.com/epezent/ShapeRenderer "")
+* [Unity UI Polygon](https://github.com/CiaccoDavide/Unity-UI-Polygon) - Polygon renderer for the new Unity UI.
+
+#### Sprite Atlas
+
+* [AtlasImage](https://github.com/mob-sakai/AtlasImage) - AtlasImage is a graphic component use SpriteAtlas for uGUI. In addition, add useful sprite selector and border editor to the inspector.
+* [Unity2017AutoCreateSpriteAtlas](https://github.com/hanbim520/Unity2017AutoCreateSpriteAtlas)
+
+#### Scroll View
+
+* [LoopScrollRect](https://github.com/qiankanglai/LoopScrollRect) - UGUI ScrollRect reusing cells, to improve performance, loading time and draw calls.
+* [EnhancedScrollView](https://github.com/tinyantstudio/EnhancedScrollView) - Cool 3d scoll view for Unity (NGUI 3D UGUI support).
+* [List View Framework](https://bitbucket.org/Unity-Technologies/list-view-framework) - The List View Framework is a set of core classes which can be used as-is or extended to create dynamic, scrollable lists in Unity applications. :fab fa-unity:
+* [InfinityScroll](https://github.com/ivomarel/InfinityScroll) - These scripts will make your UnityGUI ScrollRects scroll infinitely.
+* [uGUI Super Scrollview Example](https://github.com/baba-s/ugui-super-scrollview-example "") - Sample project that summarizes usage examples of "UGUI Super ScrollView".
+* [FancyScrollView](https://github.com/setchi/FancyScrollView "") - A scrollview component that can implement highly flexible animation.
+* [UnityDynamicScrollRect](https://github.com/Mukarillo/UnityDynamicScrollRect "") - An optimized approach to lists with dozens of elements and a Pooling system.
+* [UnityDynamicScrollView](https://github.com/aillieo/UnityDynamicScrollView) - Dynamic scrollView based on UGUI.
+* [Unity Scrolly](https://github.com/alhaddado/unity-scrolly) - A Touch/Drag scroll list implementation using Unity GUI (4.6+).
+* [ReuseScroller](https://github.com/midnightSuyama/ReuseScroller) - Reuse cell for uGUI ScrollView.
+* [Variable Infinite Scroll](https://github.com/ToshikiImagawa/Variable-infinite-scroll) - Variable infinite scroll in Unity UI.
+
+#### Page View
+
+* [Unity PagingView](https://github.com/kiepng/Unity-PagingView "") - PagingView for Unity.
+
+#### Search
+
+* [Unity Autocomplete Search Field](https://github.com/marijnz/unity-autocomplete-search-field "") - Search field with Autocomplete, a simple Unity Editor UI component.
+
+#### Chart
+
+* [UChart](https://github.com/springd5211/UChart "") - Data chart/data graph for Unity.
+* [Scatterplot_Standalone](https://github.com/PrinzEugn/Scatterplot_Standalone "") - 3D scatterplot in Unity.
+
+#### Progress Bar
+
+* [RadialProgressBar](https://github.com/AdultLink/RadialProgressBar "") - Customizable radial progress bar shader for Unity3D. Allows you to set arc range, minimum and maximum colors, textures, radius, and a few more things. Create HP Bars, Speedometers, rank progress, etc!
+* [uGUI Animated Progressbar](https://github.com/baba-s/ugui-animated-progressbar "") - A progress bar with animation of uGUI.
+
+#### Color Picker
+
+* [Simple Color Picker](https://assetstore.unity.com/packages/tools/gui/simple-color-picker-7353?aid=1100l35sb&utm_source=aff "") - Free color picker from the Asset Store.
+
+#### File Browser
+
+* [UnityStandaloneFileBrowser](https://github.com/gkngkc/UnityStandaloneFileBrowser "") - A native file browser for Unity standalone platforms.
+* [UnitySimpleFileBrowser](https://github.com/yasirkula/UnitySimpleFileBrowser) - A uGUI based runtime file browser for Unity3D (draggable and resizable).
+* [UnityAndroidVRARBrowser](https://github.com/IanPhilips/UnityAndroidVRARBrowser "") - In-Game browser for Unity projects built on Android (Oculus, maybe GearVR). (#VIRTUAL-REALITY)
+
+#### Mask
+
+* [SoftMaskForUGUI](https://github.com/mob-sakai/SoftMaskForUGUI "") - Soft masking for uGUI elements in Unity.
+* [UnmaskForUGUI](https://github.com/mob-sakai/UnmaskForUGUI "") - Reverse mask for uGUI element in Unity.
+* [UISoftMask](https://github.com/aillieo/UISoftMask) - Soft mask based on UGUI.
+* [GuideMask](https://github.com/asyncrun/GuideMask)
+
+#### Mobile Area Mask
+
+* [NotchSolution](https://github.com/5argon/NotchSolution "") - A set of tools to fight with notched/cutout phones for Unity uGUI.
+* [iPhoneX Overlay](https://github.com/ianwaldrop/iPhoneX-overlay "Unity Editor utility which masks the game view with the shape of an iPhone X.") - Unity Editor utility which masks the game view with the shape of an iPhone X.
+* [UnityIPhoneXSupport](https://github.com/tkyaji/UnityIPhoneXSupport "") - Support iPhoneX by changing the drawing area of Unity.
+* [iPhoneXSafeAreaDrawer](https://github.com/baba-s/iPhoneXSafeAreaDrawer "")
+* [UnityAndroidNotchSupport](https://github.com/Over17/UnityAndroidNotchSupport "") - Support for Android Notch (Cutout) in Unity 2017.4 and earlier.
+
+#### Gizmo
+
+* [UnityRuntimeSceneGizmo](https://github.com/yasirkula/UnityRuntimeSceneGizmo "") - Interactable runtime scene gizmo for uGUI.
+
+#### Layout
+
+* [Slayout](https://github.com/inkle/slayout "") - UI layout and animation component for Unity.
+* [Unity Card UI](https://github.com/ryanslikesocool/Unity-Card-UI "") - Card style UI elements for Unity.
+* [Unity VariableTileLayout](https://github.com/kiepng/Unity-VariableTileLayout) - UI Extensions for tile layout like Pinterest.
+
+#### Drag & Drop
+
+* [DragDropComponents](https://github.com/aillieo/DragDropComponents) - DragDrop components based on UGUI.
+
+### Screen / Menu Management
+
+* [Looader](https://github.com/Michsky/looader) - Loading screen solution for Unity engine.
+* [ScreenManager](https://github.com/Xerios/ScreenManager "") - Flexible way to manage screens with transitions for Unity.
+* [Unity Pause Menu](https://github.com/GreatArcStudios/unitypausemenu) - This is an open source Unity pause menu created for the game New Horizons, and it's completely free because of how a pause menu is a core component of a game, while the unity asset store was lacking in such an asset (until this was released on the asset store).
+* [UnityMenuSystem](https://github.com/YousicianGit/UnityMenuSystem "") - Menu System for Unity.
+* [uGUI Window Menu](https://github.com/JINZO631/uGUI-window-menu "") - Simple uGUI menu.
+* [Unity Template](https://github.com/Shogan/Unity-Template "") - A simple unity UI/Menu template.
+
+### Effects
+
+* [UIEffect](https://github.com/mob-sakai/UIEffect "") - An effect component for uGUI element in Unity. Let's decorate your UI with effects.
+* [Beautiful Text Outline for Unity UI](https://github.com/n-yoda/unity-vertex-effects) - Beautiful text outline for Unity UI.
+* [Unity3DBookPageCurl](https://github.com/Dandarawy/Unity3DBookPageCurl "") - Page curl effect for Unity3D using native UI tools.
+* [uGUI Effect Tool](https://github.com/WestHillApps/uGUI-Effect-Tool "") - Vertex color UI Effect for Unity UI (uGUI).
+* [MirrorReflectionEffectForUGUI](https://github.com/mob-sakai/MirrorReflectionEffectForUGUI "") - A simple mirror reflection effect for a uGUI without reflection probes or shaders.
+* [BluredUGUI](https://github.com/edom18/BluredUGUI "") - Blured uGUI background sample.
+
+### Frameworks
+
+* [Unity UI](https://bitbucket.org/Unity-Technologies/ui "") - Official repository for UI system used in Unity. :fab fa-unity:
+* [NGUI](https://www.assetstore.unity3d.com/en/#!/content/2413) - A powerful UI system and event notification framework. :fas fa-coins:
+* [FairyGUI Unity](https://github.com/fairygui/FairyGUI-unity "") - A flexible UI framework for Unity.
+* [OpenUi](https://github.com/omid3098/OpenUi "") - Make your game UI in minutes!
+* [OpenGUI](https://github.com/mrzapp/opengui) - Open source GUI framework for Unity.
+* [UIElementsX](https://github.com/rocktavious/UIEX) - UIElementsX (UIEX) is the missing high level API for unity's new UI system.
+* [Xamarin.Forms.Unity](https://github.com/aosoft/Xamarin.Forms.Unity) - Xamarin.Forms for Unity (Platform implementation for Unity Game Engine).
+* [FlexibleUI Unity](https://github.com/rameshporeddy/FlexibleUI-Unity) - A Unity System to Implement Multiple GUI Themes.
+
+### Tools
+
+* [Automatic UI Anchoring For Unity3D](https://github.com/Risenberg304/Automatic-UI-Anchoring-For-Unity-3D "")
+* [Unity3d.UI.Windows](https://github.com/chromealex/Unity3d.UI.Windows "") - Unity 3D UI (uGUI) Windows Extensions.
+* [UGUI Editor](https://github.com/liuhaopen/UGUI-Editor "") - Unity UGUI editor tools to improve the efficiency of UI development.
+* [Unity AlignTools](https://github.com/litefeel/Unity-AlignTools "") - Align Tools is just perfect Unity asset plugin to align gui object.
+* [uGUI Tween Tool](https://github.com/tomtc123/ugui-Tween-Tool "") - Unity 4.6.x and Unity5.x uGUI Tween tools.
+* [Baum2](https://github.com/kyubuns/Baum2 "") - Psd to Unity UI (uGUI).
+* [TMP RectVisualizer](https://github.com/baba-s/TMP_RectVisualizer "") - The size of Text and TextMesh Pro can be visualized on game 
+screen.
+* [Unity Sprite Cutter](https://github.com/sabikku/unity-sprite-cutter "") - Simple solution for cutting sprites in runtime.
+* [Pixel Sprite Generator Unity](https://github.com/Shogan/PixelSpriteGenerator-Unity "") - A port of the PixelSpriteGenerator to C# for use with the Unity3D game engine.
+* [uGUI Script Creator](https://github.com/tomori-hikage/ugui-script-creator "") - Create GUIs by scripting.
+* [uGUI Guidelines](https://github.com/Syy9/uGUI-Guidelines "") -uGUI guidelines.
+
+### Themes / Skins
+
+* [MaterialUI](https://github.com/InvexGames/MaterialUI "") - A UI kit for Unity that follows Google's official material design guidelines.
+* [Unity Themes](https://github.com/zios/unity-themes "") - Provides the Unity Editor with adjustable, hot-swappable GUI themes across all elements.
+* [Ultimate HUD Skins](https://github.com/Michsky/ultimatehudskins) - Stylish HUD layouts for Unity engine.
+* [Modern UI Pack](https://github.com/Michsky/muip "") - Modern UI Pack for Unity engine.
+* [Lomenui](https://github.com/Michsky/lomenui "") - Stylish UI package for Unity engine.
+* [Unity LoMenu](https://github.com/paulgswanson/Unity_LoMenu) - Stylish UI package for Unity engine.
+* [Imgui Unity](https://github.com/ProgC/imgui_unity) - Integration dear imgui to Unity.
+
+### Testing
+
+* [Unity UITest](https://github.com/taphos/unity-uitest "") - Unity UI Test Automation Framework.
+* [RuntimeUnitTestToolkit](https://github.com/Cysharp/RuntimeUnitTestToolkit "") - CLI/GUI Frontend of Unity Test Runner to test on any platform.
+* [RandomFixtureKit](https://github.com/Cysharp/RandomFixtureKit "") - CLI/GUI Frontend of Unity Test Runner to test on any platform.
+* [Moq Unitypackage](https://github.com/tenpn/moq-unitypackage "") - A unitypackaged mirror of Moq, for use in Unity3D.
diff --git a/docs/utilities/utilities.md b/docs/utilities/utilities.md
new file mode 100644
index 0000000..0592fc8
--- /dev/null
+++ b/docs/utilities/utilities.md
@@ -0,0 +1,183 @@
+### Utilities
+
+#### Common
+
+* [Unity Atoms](https://github.com/AdamRamberg/unity-atoms) - Tiny modular pieces utilizing the power of Scriptable Objects.
+* [ScriptFinder](https://github.com/JoebRogers/ScriptFinder) - A Unity editor extension to find script references within your project in seconds.
+* [SwissArmyLib](https://github.com/ArchonInteractive/SwissArmyLib) - Collection of helpful utilities we use in our Unity projects.
+* [UniVersionManager](https://github.com/sanukin39/UniVersionManager) - Simple Version Getter for Unity, it can be used for iOS, Android and unity editor platform. It can also get build version.
+* [UniClipboard](https://github.com/sanukin39/UniClipboard) - Simple clipboard plugin for Unity.
+* [SceneHistory Unity](https://github.com/takupisu/SceneHistory-Unity) - Open scenes quickly from a custom history of scenes. Supports scene addition.
+* [Scene View Bookmarks](https://github.com/mminer/scene-view-bookmarks) - Editor extension to bookmark and later recall scene views.
+* [Unity Mulligan Renamer](https://github.com/redbluegames/unity-mulligan-renamer "") - Mulligan Renamer tool for the Unity Editor allows for quick and safe renaming of many assets and gameobjects at once.
+* [UnitySizeExplorer](https://github.com/aschearer/unitysizeexplorer "") - Visualize how much space each asset in your Unity game takes and quickly optimize your game's file size.
+* [SnazzyGrid](https://www.assetstore.unity3d.com/en/#!/content/19245) - Makes it easy to manage positions of assets in the scene with easy to use snapping tools and many more features to improve the scene creation workflow. :fas fa-coins:
+* [UniMerge](https://www.assetstore.unity3d.com/en/#!/content/9733) - Editor extension for merging scenes and prefabs, also integrates with VCS. :fas fa-coins:
+* [UnityIconCustomizer](https://github.com/makoto-unity/UnityIconCustomizer "You can customize your app icon with this. Like adding version number, 'BETA' and so on.")
+* [UnityMemoryMappedFile](https://github.com/sh-akira/UnityMemoryMappedFile "")
+* [AutoIconBuilder](https://github.com/negipoyoc/UnityAutoIconBuilder "")
+* [uShaderTemplate](https://github.com/hecomi/uShaderTemplate "Unity editor extension to generate shaders from template files.") - Unity editor extension to generate shaders from template files. (#SHADERS)
+* [Projeny](https://github.com/svermeulen/Projeny "") - A project and package manager for Unity.
+* [Presentation](https://github.com/UnityTechnologies/Presentation "") - No need to switch to Power Point anymore.
+* [EdNotes](https://github.com/plyoung/EdNotes "") - Attach notes to objects in Unity.
+* [NDocumentation](https://github.com/vertxxyz/NDocumentation) - A documentation window for Unity Editor that displays rich text pages.
+* [SaveGameFree](https://github.com/BayatGames/SaveGameFree "") - A free and simple but powerful solution for saving and loading game data in Unity.
+* [ColorBands](https://github.com/rstecca/ColorBands "") - Unity 3D's Gradient is a handy data type but comes with some limitations.
+* [Swatchr](https://github.com/jknightdoeswork/swatchr) - A color palette management system for Unity.
+* [ColorPalette](https://github.com/DomDomHaas/ColorPalette) - Light version of the ColorPalettes Asset for Unity.
+* [CropTexture](https://github.com/natsupy/CropTexture) - Crop and resize texture in Unity editor!
+* [AssetAuditor](https://github.com/MarkUnity/AssetAuditor "") - Tools to control the asset import settings in a Unity project.
+* [ScriptFinder](https://github.com/JoebRogers/ScriptFinder) - A Unity editor extension to find script references within your project in seconds.
+* [UnityPreviewGenerator](https://github.com/klhurley/UnityPreviewGenerator) - Generates preview textures for sprites, icons of Unity models.
+* [ClassTypeReference for Unity](https://bitbucket.org/rotorz/classtypereference-for-unity) - A class which provides serializable references to System.Type of classes with an accompanying custom property drawer which allows class selection from drop-down.
+* [Settings Unity](https://github.com/LightBuzz/Settings-Unity) - Settings utility for Unity3D.
+* [PNGCS](https://github.com/andrew-raphael-lukasik/pngcs) - Complete PNG encoding and decoding for Unity.
+* [Clock](https://github.com/LestaAllmaron/Clock) - A completly accurate timer with performance tracking for multiplayer game servers.
+* [UnityIO](https://github.com/ByronMayne/UnityIO) - An easy to use API that allows you to manipulate files inside of Unity without the headache of using AssetDatabase.
+* [VariableAssets](https://github.com/ZeroSleepGames/VariableAssets) - Variable assets for Unity3D.
+* [AutoSaveScene](https://github.com/liortal53/AutoSaveScene) - Unity editor helper for auto saving scene & minimizing lost work.
+* [EnumDispatcher](https://github.com/5argon/EnumDispatcher) - ECS backed C# enums as Flux/Redumox action in Unity.
+* [UnityHelpers](https://github.com/jeffvella/UnityHelpers) - A collection of random scripts related to Unity.
+* [UndoPro](https://github.com/Seneral/UndoPro) - UndoPro is a command-based undo system integrated into Unity's default system. This allows devs to use actions for their undo/redo operations without forcing the user into a new undo-workflow!
+* [Ink Unity Integration](https://github.com/inkle/ink-unity-integration) - Unity integration for the open source [ink](https://github.com/inkle/ink) narrative scripting language.
+* [Unity Auth Manager](https://github.com/zklinger2000/unity-auth-manager) - An example of using a Javascript Web Token (JWT) based authentication system for an app built with Unity.
+* [Deform](https://github.com/keenanwoodall/Deform) - A fully-featured deformer system for Unity.
+* [Gamekit3D](https://github.com/Unity-Technologies/Gamekit3D) :fab fa-unity:
+* [EasingCore](https://github.com/setchi/EasingCore) - Simple easing implementation for Unity.
+* [Unity SemVer](https://github.com/jeffcampbellmakesgames/unity-semver) - A SemVer 2.0.0 implementation for Unity.
+* [MasterUnityHandles](https://github.com/alelievr/MasterUnityHandles) - Unity custom handles examples.
+* [Unity Mesh Triangulator](https://github.com/joshcamas/unity-mesh-triangulator) - A modified version of alexmuab's unity-mesh-triangulator.
+* [Unity Rulers](https://github.com/geekrelief/unityrulers) - A ruler editor to measure distances between game objects in the Scene view.
+* [Unity Game Loader](https://github.com/GalvanicGames/unity-game-loader) - A loading system to load in assets across frames.
+* [SaveManager](https://github.com/ewersp/SaveManager) - A simple, yet powerful binary serializer for persisting game data in Unity. 
+* [NativeSDF](https://github.com/Amarcolina/NativeSDF) - A simple, yet powerful binary serializer for persisting game data in Unity.
+* [UnityResourceMgr](https://github.com/billwillman/UnityResourceMgr)
+* [UnityHexGrid](https://github.com/Amaranthos/UnityHexGrid) - A hex grid generation tool, for use in Unity.
+
+#### Gizmos
+
+* [Unity3DRuntimeTransformGizmo](https://github.com/HiddenMonk/Unity3DRuntimeTransformGizmo "") - A runtime transform gizmo similar to unitys editor so you can translate (move, rotate, scale) objects at runtime.
+* [FastGizmosUnity](https://github.com/sverdegd/FastGizmosUnity "") - Set of gizmos utilities for Unity.
+* [Gizmos](https://github.com/popcron/gizmos) - Used for drawing runtime gizmos in builds and editor (Unity3D).
+* [Unity SimpleUsefulGizmos](https://github.com/flamacore/Unity-SimpleUsefulGizmos) - Additional Gizmos showing information on your scene view like colored colliders, rotation indicator lines.
+
+#### Splines
+
+* [Bezier3D](https://github.com/Siccity/Bezier3D "") - Unity3D: Simple core bezier functionality featuring interpolation and orientation.
+* [UniSpline](https://github.com/adrenak/UniSpline "") - A Unity tool for creating curves.
+* [RageSpline](https://github.com/Freakow/RageSpline "") - Scalable Vector Graphics creation and drawing component for Unity.
+* [Bezier Curves In Unity](https://github.com/Scrawk/Bezier-Curves-In-Unity "") - Bezier curve code.
+
+#### Strings
+
+* [String_format](https://github.com/little-sharps/string_format) - An enhancement to the String.Format library that allows for named place holders.
+* [FastString](https://github.com/snozbot/FastString "") - Alternative to StringBuilder class for Unity games, with minimal memory allocation and faster performance.
+
+#### Preprocessor Directives
+
+* [Better Defines](https://github.com/TarasOsiris/Better-Defines) - An easy and elegant way to manage your preprocessor directives in Unity3D.
+* [UnityDefineManager](https://github.com/karl-/UnityDefineManager "") - Easily manage global defines in Unity.
+
+#### INI Files
+
+* [INI Parser](https://github.com/rickyah/ini-parser) - Read/Write an INI file the easy way!
+* [UnityIniFiles](https://github.com/iBicha/UnityIniFiles "") - A very naive implementation to import .ini configuration files into Unity.
+
+#### Command Palette
+
+* [DTCommandPalette](https://github.com/DarrenTsung/DTCommandPalette) - Command palette for Unity - run methods, open scenes, and more!
+* [Unity3D Quick Search](https://github.com/appetizermonster/Unity3D-QuickSearch) - A Command Palette for Unity.
+
+#### Dialogues
+
+* [Merino](https://github.com/radiatoryang/merino "") - A narrative design tool that lets you write Yarn scripts inside the Unity Editor.
+* [Dialogue](https://github.com/Siccity/Dialogue "") - Node based dialogue system.
+* [Cradle](https://github.com/daterre/Cradle "") - Formerly UnityTwine, is a plugin for Unity that powers the storytelling side of a game.
+
+#### Screen Recorders
+
+* [Moments](https://github.com/Chman/Moments "") - A quick GIF replay recorder for Unity.
+* [FFmpegOut](https://github.com/keijiro/FFmpegOut "") - Video capture plugin for Unity with FFmpeg.
+* [FrameCapture](https://github.com/Chman/FrameCapture "") - A simple frame-by-frame capture tool for Unity to record perfectly smooth, supersampled replays or cinematics.
+* [FrameCapturer](https://github.com/unity3d-jp/FrameCapturer "") - Export framebuffer, GBuffer or any RenderTextures from Unity to file. supported format: png, exr, gif, webm, mp4.
+* [GenericFrameRecorder](https://github.com/Unity-Technologies/GenericFrameRecorder "") :fab fa-unity:
+* [UnityEveryplaySaveToLocal](https://github.com/yasirkula/UnityEveryplaySaveToLocal) - A helper script to save captured Everyplay videos to local file system on Android & iOS.
+* [FrameDump](https://github.com/keijiro/FrameDump) - A small utility for exporting image sequence from Unity.
+* [Select GUI Capture Sample](https://github.com/edom18/SelectGUICaptureSample) - This is sample for capturing that can ignore specific GUI elements. (#UI)
+* [Unity VR Video Recording Test](https://github.com/aosoft/UnityVRVideoRecordingTest) - Test project to record VR sessions. (#VIRTUAL-REALITY)
+* [AsyncCaptureTest](https://github.com/keijiro/AsyncCaptureTest "") - Non-blocking screen capture example with asynchronous GPU readback.
+* [UnityCapture](https://github.com/schellingb/UnityCapture "") - Streams Unity rendered output to other Windows applications as virtual capture device.
+
+#### Color Pickers
+
+* [Unity Inmediate Color Picker](https://github.com/mattatz/unity-immediate-color-picker) - Color picker for Unity in immediate GUI mode.
+* [HSV Color Picker Unity](https://github.com/judah4/HSV-Color-Picker-Unity "") - HSV color picker using Unity UI.
+* [UnityColorPicker](https://github.com/jongallant/UnityColorPicker) - A standalone color picker asset for Unity.
+* [CUI Color_Picker](https://github.com/SnapshotGames/cui_color_picker "") - Color Picker for Unity UI in a single script/prefab.
+* [CircularColorPickerUnity](https://github.com/mathiassiig/CircularColorPickerUnity) - Just a shader and a script for a circular color picker.
+* [Unity Color Wheel](https://github.com/fkate/Unity_ColorWheel) - Color Picker Element for the newer Unity GUI System.
+* [VR Color Picker](https://github.com/shinn716/VRColorPicker) - Raycast to Color Pick. (#VIRTUAL-REALITY)
+
+#### Collections
+
+* [MyBox](https://github.com/Deadcows/MyBox "") - MyBox is a set of attributes, tools and extensions for Unity.
+* [Unity Utilities](https://github.com/TobiasWehrum/unity-utilities "") - A collection of Unity3D scripts I've been sharing between projects.
+* [unity-cj-lib](https://github.com/TheAllenChou/unity-cj-lib "") - Utility library for Unity.
+* [Unity Utils](https://github.com/nubick/unity-utils "") - Different help scripts for Unity engine.
+* [Demilib](https://github.com/Demigiant/demilib "") - A library of various utilities and tools for Unity (alpha).
+* [Unityassets](https://github.com/fholm/unityassets "") - Assorted unity assets and utilities.
+* [UnityLibrary](https://github.com/UnityCommunity/UnityLibrary "") - Library of all kind of scripts, snippets & shaders for Unity.
+* [E7Unity](https://github.com/5argon/E7Unity "") - Common Unity resources Exceed7 Experiments uses in projects.
+* [HelpfulScripts](https://github.com/cjacobwade/HelpfulScripts "") - A collection of random, useful scripts.
+* [Unity Utils](https://github.com/ObelardO/Unity-Utils "") - Small usefull scripts, tips.
+
+#### Others
+
+* [Graph Visualizer](https://github.com/Unity-Technologies/graph-visualizer "") - Visualizer for your Playable graphs. :fab fa-unity:
+* [Doors Plus Lite](https://github.com/AlexanderAmeye/doors-plus-lite "") - A basic door script for the Unity3D game engine.
+* [AutoLOD](https://github.com/Unity-Technologies/AutoLOD "") - Automatic LOD generation + scene optimization. :fab fa-unity:
+* [MathUtilities](https://github.com/zalo/MathUtilities "") - A collection of some of the neat math and physics tricks that I've collected over the last few years.
+* [Wooga Lambda CSharp](https://github.com/wooga/Wooga.Lambda-CSharp "") -  Functional primitives for Unity3D.
+* [UnityDeeplinks](https://github.com/TROPHiT/UnityDeeplinks "") - A set of tools for Unity to allow handling deeplink activation from within Unity scripts.
+* [DTValidator](https://github.com/DarrenTsung/DTValidator "") - Tool for validating objects (eg. GameObjects, ScriptableObjects, etc) in the Unity Editor.
+* [Unity.Library.eppz.Lines](https://github.com/eppz/Unity.Library.eppz.Lines "") - Lightweight OpenGL line rendering for Unity. Like Debug.DrawLine in Game view.
+* [KDTree](https://github.com/viliwonka/KDTree "") - Fast KDTree for Unity, with thread-safe querying.
+* [GameViewSizeChanger](https://github.com/Syy9/GameViewSizeChanger "") - Unity GameView Changer.
+* [Unity Safe Area Canvas](https://github.com/nkjzm/Unity-SafeAreaCanvas "") - An asset for adjusting the size automatically and preview in Editor.
+* [EncodeToTGA](https://github.com/phwitti/EncodeToTGA "") - Texture2D.EncodeToTGA (Unity)
+* [PickleBuilder](https://github.com/PicklesIIDX/PickleBuilder "") - A Steam enabled multi-platform build tool for Unity.
+* [Unity ScriptableObjects Game Events](https://github.com/NeoDragonCP/Unity-ScriptableObjects-Game-Events- "") - Receive Update callback(s) from anywhere and in any order in Unity!
+* [UnityOrderedUpdate](https://github.com/yasirkula/UnityOrderedUpdate "") - Based on a great talk by Ryan Hipple, here is my improved version of his Game Event system for Unity.
+* [UnityWireframeRenderer](https://github.com/miguel12345/UnityWireframeRenderer "") - Get a beautiful cross-platform wireframe renderer for your meshes with one click.
+* [NatShare API](https://github.com/olokobayusuf/NatShare-API "") - NatShare is a native sharing API for Unity Engine.
+* [Unity GoogleData](https://github.com/kimsama/Unity-GoogleData "") - See [Unity-QuickSheet](https://github.com/kimsama/Unity-QuickSheet "").
+* [GoogleSheetsUnity](https://github.com/5argon/GoogleSheetsUnity) - Get data from your private Google Sheets to Unity! (Read-only).
+* [Unity Free Flight](https://github.com/NickolausDS/Unity-Free-Flight "") - A Unity Package to provide bird-like flight to Unity Game Objects.
+* [Unity EventBinder](https://github.com/GeorgeDascalu/Unity-EventBinder) - User Interface Event decoupler.
+* [Unity BitmapFontImporter](https://github.com/litefeel/Unity-BitmapFontImporter) - An Unity editor extension for bitmap font.
+* [xNode BehaviourTree](https://github.com/jnhtt/xNode-BehaviourTree) - Some log4net helper classes and UnityEngine.Debug appender for Unity.
+* [MVPScriptGenerator4Unity](https://github.com/MasaKoha/MVPScriptGenerator4Unity) - MVP Script Generator for Unity Editor.
+* [CAD in Unity](https://github.com/i2e-haw-hamburg/cad-in-unity "") - Loading CAD into Unity 3D applications.
+* [Spine Runtimes](https://github.com/EsotericSoftware/spine-runtimes) - Collection of Spine runtimes including with Unity3d version.
+* [InGameReplay](https://github.com/FeNo/InGameReplay) - Allow you to record the transform of any objects to replay it.
+* [MMD for Unity](https://github.com/mmd-for-unity-proj/mmd-for-unity) - MikuMikuDance for Unity.
+* [SerializableCallback](https://github.com/Siccity/SerializableCallback) - UnityEvent and System.Func had a child.
+* [Unity3D Extensions](https://github.com/jbruening/unity3d-extensions) - Extension and utility methods for the Unity game engine.
+* [EZ Item Editor](https://github.com/anasiqbal/ez-item-editor) - A game data editor for unity that provides a simple solution to entering, maintaining, and consuming game data.
+* [CSharpatron](https://www.assetstore.unity3d.com/en/#!/content/20232) - Automatically convert scripts from UnityScript to C# without breaking existing game objects. :fas fa-coins:
+* [Unity Plane Mesh Splitter](https://github.com/artnas/Unity-Plane-Mesh-Splitter) - A simple script which let's you split any mesh into smaller chunks.
+* [Mesh Voxelization](https://github.com/Scrawk/Mesh-Voxelization "") - Mesh voxelization in Unity.
+* [GPUMatrixMultiplicationTest](https://github.com/mattatz/GPUMatrixMultiplicationTest "") - GPU matrix multiplication in Unity.
+* [Unity Simple SRT](https://github.com/roguecode/ "") - A super simple SRT subtitle parser.
+* [Mesh Combine Wizard](https://bitbucket.org/sirgru/meshcombinewizard "") - Running the wizard will combine all the meshes on the chosen gameObject and its children that share the same material.
+* [CubemapToEquirectangular](https://github.com/Mapiarz/CubemapToEquirectangular "") - Cubemap to equirectangular format converters for Unity3D.
+* [CloudNoiseGen](https://github.com/Fewes/CloudNoiseGen "") - A static utility class for Unity which handles generating and loading periodic, cloud-like (perlin-worley) 3D noise textures on the GPU.
+* [AceArcadeMissiles](https://github.com/brihernandez/AceArcadeMissiles "") - Arcade style missile code, effect, and sound pack.
+* [GunTurrets](https://github.com/brihernandez/GunTurrets "") - Starting point for turrets that can be mounted on arbitrarily rotating things.
+* [UnityInstancedHealthBars](https://github.com/sinbad/UnityInstancedHealthBars "") - Example projects using instancing in Unity to render enemy health bars in 1 draw call.
+* [UnityBurstFunctions](https://github.com/imxzjv/UnityBurstFunctions "") - Pattern and helpers for writing Unity Burst jobs as generic Functions/Actions.
+* [Inventory](https://github.com/FarrokhGames/Inventory "") - A Diablo 2-style inventory system for Unity3D.
+* [Piranha](https://github.com/keenanwoodall/Piranha "") - A simple tool to make rigidbodies swarm a mesh in Unity.
+* [SmoothingTest](https://github.com/keijiro/SmoothingTest "") - Critically damped spring smoothing.
+* [Grapple Effect](https://github.com/keenanwoodall/Grapple-Effect "") - An example of a simple grapple effect in Unity.
+* [LinkedListUpdateManager](https://github.com/Xerios/LinkedListUpdateManager "") - A simple script to manage updates for Unity.
diff --git a/docs/vector-graphics/vector-graphics.md b/docs/vector-graphics/vector-graphics.md
new file mode 100644
index 0000000..5c92d36
--- /dev/null
+++ b/docs/vector-graphics/vector-graphics.md
@@ -0,0 +1,5 @@
+## Vector Graphics
+
+* [Vector Graphics Samples](https://github.com/Unity-Technologies/vector-graphics-samples) - SVG and Vector Graphics Sample Project. :fab fa-unity:
+* [NanoSVG CSharp](https://github.com/thinksquirrel/nanosvg-csharp) - NanoSVG for C#.
+* [UnitySVG](https://github.com/MrJoy/UnitySVG) - SVG renderer for Unity3D.
diff --git a/docs/version-control/vcs.md b/docs/version-control/vcs.md
new file mode 100644
index 0000000..abef19d
--- /dev/null
+++ b/docs/version-control/vcs.md
@@ -0,0 +1,9 @@
+## VCS (Version Control Systems)
+
+* [GitHub for Unity](https://unity.github.com/) - The new GitHub for Unity extension brings the GitHub workflow and more to Unity, providing support for large files with Git LFS and file locking. (#VCS) (#PLUGIN)
+* [Gitgud](https://github.com/joshcamas/gitgud "") - A simple unity-based git client with a focus on extendability.
+* [UpmGitExtension](https://github.com/mob-sakai/UpmGitExtension "") - Git extension for Unity Package Manager (UPM).
+* [NuGetForUnity](https://github.com/GlitchEnzo/NuGetForUnity "") - A NuGet Package Manager for Unity.
+* [GitLab](https://about.gitlab.com/ "") - GitLab
+* [VersionControlPlugins](https://github.com/Unity-Technologies/VersionControlPlugins "") - Perforce plugin for Unity. (Moved to Bitbucket). :fab fa-unity:
+* [Unity SVN Checker](https://github.com/kalimaul/unity_svn_checker "") - Server-side svn hooks to help version control with Unity3D.
diff --git a/docs/virtual-reality/common.md b/docs/virtual-reality/common.md
new file mode 100644
index 0000000..826f3c1
--- /dev/null
+++ b/docs/virtual-reality/common.md
@@ -0,0 +1,37 @@
+## Virtual Reality <a name="virtual-reality"></a>
+
+### Common <a name="virtual-reality-common"></a>
+
+* [VRTK (Virtual Reality Toolkit)](https://github.com/thestonefox/VRTK "") - A productive VR Toolkit for rapidly building VR solutions in Unity3d. :fas fa-burn:
+* [VRTK Unity Core](https://github.com/ExtendRealityLtd/VRTK.Unity.Core "") - A set of design patterns for rapidly building VR solutions in Unity3D.
+* [VRTK_MouseGrab](https://github.com/ousttrue/VRTK_MouseGrab "") - VRTK SDK sample.
+* [VRTK_MyCongif](https://github.com/Vortick/VRTK_MyCongif "") - A perosonal configuration for VRTK plugin to work on unity 2018.
+* [NewtonVR](https://github.com/TomorrowTodayLabs/NewtonVR "") - A virtual reality interaction system for unity based on physics.
+* [OVRLay](https://github.com/benotter/OVRLay "") - An easy-to-use toolkit for developing OpenVR Overlays with Unity Engine.
+* [MoonMotion](https://github.com/MoonMotionProject/MoonMotion "") - Free and open source toolkit for VR locomotion.
+* [The Lab Renderer](https://assetstore.unity.com/packages/tools/the-lab-renderer-63141?aid=1100l35sb&utm_source=aff "") - The Lab Renderer (VR Essentials).
+* [WorldShare](https://github.com/ritchielozada/WorldShare "") - Virtual World Sharing Across Platforms.
+* [VRTeleportationTourTemplate](https://github.com/wotakuro/VRTeleportationTourTemplate "") - Template project for VR tour applications.
+* [VR Template](https://github.com/epitech-toulouse/Vr_Template "") - Unity project template for VR project, will be using for XR Workshop.
+* [VR Spectator Sample](https://github.com/Unity-Technologies/VR-Spectator-Sample "") - Sample project for understanding how to VR Spectate in Unity. :fab fa-unity:
+* [Mesh Maker VR](https://github.com/createthis/mesh_maker_vr "") - Mesh Maker VR.
+* [CreateThis VR UI](https://github.com/createthis/createthis_vr_ui "") - User Interface system for Mesh Maker VR.
+* [YVTuber](https://github.com/youten/YVTuber "") - YVTuber(Yume VTuber System) is Unity project for VTuber(Virtual YouTuber).
+* [XLand](https://github.com/huisedenanhai/XLand "") - Live2D VTuber(Virtual YouTuber) App with extensible node graph editor.
+* [TBUTT-VR](https://github.com/turbobutton/tbutt-vr "") - A lightweight multiplatform interface for making VR games in Unity.
+* [VketBoothValidator](https://github.com/Kozu-vr/VketBoothValidator "")
+* [NoloUnity](https://github.com/n1ckfg/NoloUnity "") - Motion tracking system for virtual/augmented reality. See [NOLO driver for Windows](https://github.com/NOLOVR/NOLO-Driver-For-Windows). More [info](https://www.nolovr.com/index).
+* [VRBow](https://github.com/aleclouck/VRBow "") - Virtual Reality Bow and arrow demo made in unity.
+* [Unity VR IK Mecanim](https://github.com/createthis/unity_vr_ik_mecanim "") - VR IK using native Unity Mecanim IK.
+* [VR180MeshProjection](https://github.com/aosoft/VR180MeshProjection "") - VR180 Mesh Projection Box Parser.
+* [VRMSpringBone-Optimize](https://github.com/mao-test-h/VRMSpringBone-Optimize "") - (#ANIMATION)
+* [UniVRM](https://github.com/dwango/UniVRM "") - Unity package that can import and export VRM format. See also [LoadVRM](https://github.com/MrSlip777/LoadVRM)
+* [DesktopMascot4VRM](https://github.com/keel-210/DesktopMascot4VRM "")
+* [User Reporting VR](https://github.com/UnityTech/user-reporting-vr "") - A VR Unity project that uses the User Reporting feature of Unity Cloud Diagnostics.
+* [Unity Chemical Engine](https://github.com/zrdumped/Unity-Chemical-Engine "") - A VR Chemical Reaction & Experiments Simulation Application Developed by Unity3D.
+* [LilyRender360](https://github.com/eliemichel/LilyRender360 "") - Lily Render 360 is a tool for rendering a Unity scene into stitch-free equirectangular images.
+* [UnityVR Interaction](https://github.com/RandolphM/UnityVR-Interaction "") - Any VR (Virtual Reality) headset can work.
+* [CWVRGUI](https://github.com/chilton/CWVRGUI "") - Simple toolkit for interacting with the Unity GUI system via a hand controller in VR. (#UI)
+* [360 Video Heatmaps](https://github.com/Unity-Technologies/360-Video-Heatmaps "") - Heatmaps for 360 Video. :fab fa-unity:
+* [Useful Scripts for VR Development](https://github.com/yutokun/Useful-Scripts-for-VR-Development "") - Collection of scripts to help virtual reality application development.
+* [VMagicMirror](https://github.com/malaybaku/VMagicMirror "") - VRM based avatar software for Windows with minimal devices. See also [VMagicMirrorConfig](https://github.com/malaybaku/VMagicMirrorConfig).
\ No newline at end of file
diff --git a/docs/virtual-reality/google-vr.md b/docs/virtual-reality/google-vr.md
new file mode 100644
index 0000000..5128e8d
--- /dev/null
+++ b/docs/virtual-reality/google-vr.md
@@ -0,0 +1,6 @@
+### Google VR <a name="virtual-reality-googlevr"></a>
+
+* [Google VR SDK](https://developers.google.com/vr/unity "") - Scripts and prefabs to help with the development of Google Daydream and Cardboard apps for Android and iOS. [:fab fa-github:](https://github.com/googlevr/gvr-unity-sdk)
+* [Daydream Renderer for Unity](https://github.com/googlevr/daydream-renderer-for-unity "") - A set of scripts and shaders designed to allow for high quality real-time rendering on the Daydream platform targeting 60fps.
+* [NatCam VR Cardboard](https://github.com/olokobayusuf/NatCam-VR-Cardboard "") - A Google Cardboard VR project using the rear camera preview. Powered by NatCam 1.2.
+* [VR Speech Sandbox Carboard](https://github.com/IBM/vr-speech-sandbox-cardboard "") - Google Carboard's version of VR Speech Sandbox Vive.
diff --git a/docs/virtual-reality/htc-vive.md b/docs/virtual-reality/htc-vive.md
new file mode 100644
index 0000000..8b9f900
--- /dev/null
+++ b/docs/virtual-reality/htc-vive.md
@@ -0,0 +1,8 @@
+### HTC Vive <a name="virtual-reality-htcvive"></a>
+
+* [Vive Input Utility for Unity](https://github.com/ViveSoftware/ViveInputUtility-Unity "") - A toolkit that helps developing/prototyping VR apps.
+* [uViveTrackerWithoutHMD](https://github.com/shop-0761/uViveTrackerWithoutHMD "")
+* [UnityViveTrackerExample](https://github.com/WhiteNoise/UnityViveTrackerExample "") - Example of using the Vive trackers to control a character and record it to a generic animation. (#ANIMATION)
+* [Portals VR](https://github.com/nrebei2/Portals-VR "") - Using HTC's Unity Plugin on Sterio Rendering to create a "bigger on the inside" effect in VR. Using Doctor Who's Tardis as an example.
+* [ViveTrackedDevice](https://github.com/fughilli/ViveTrackedDevice "") - Completely open-source, reverse-engineered implementation of a tracked device for the SteamVR virtual reality system.
+* [VR Speech Sandbox Vive](https://github.com/IBM/vr-speech-sandbox-vive "") - A sample application that demonstrates how to integrate voice commands and speech recognition into a virtual reality experience. 
diff --git a/docs/virtual-reality/intro.md b/docs/virtual-reality/intro.md
new file mode 100644
index 0000000..ac048b8
--- /dev/null
+++ b/docs/virtual-reality/intro.md
@@ -0,0 +1 @@
+# Virtual Reality
diff --git a/docs/virtual-reality/oculus.md b/docs/virtual-reality/oculus.md
new file mode 100644
index 0000000..2294b8e
--- /dev/null
+++ b/docs/virtual-reality/oculus.md
@@ -0,0 +1,6 @@
+### Oculus <a name="virtual-reality-oculus"></a>
+
+* [Oculus Rift DK2 Extend Preview](https://github.com/hammmm/OculusRiftDK2ExtendPreview "") - OculusRift DK2 Unity Editor PreviewScript.
+* [RiftGesture](https://github.com/natbro/RiftGesture "") - Oculus Rift gesture detection.
+* [DH OculusVR Models](https://github.com/BritishMuseum/DH-OculusVR-models "") - 3D models decimated for use in VR experience by Oculus.
+* [VR Speech Sandbox Rift](https://github.com/IBM/vr-speech-sandbox-rift "") - Oculus Rift's version of VR Speech Sandbox Vive.
diff --git a/docs/virtual-reality/samsung-gear.md b/docs/virtual-reality/samsung-gear.md
new file mode 100644
index 0000000..fbcca0a
--- /dev/null
+++ b/docs/virtual-reality/samsung-gear.md
@@ -0,0 +1,4 @@
+
+### Samsung Gear VR <a name="virtual-reality-samsung-gear-vr"></a>
+
+* [GearVR Leap Unity](https://github.com/levrn/gear-vr-leap-unity "") - Workaround in Unity to use Leap Motion Controller with Gear VR (or any other headset that doesn't support it).
\ No newline at end of file
diff --git a/docs/virtual-reality/steam-vr.md b/docs/virtual-reality/steam-vr.md
new file mode 100644
index 0000000..00c98fe
--- /dev/null
+++ b/docs/virtual-reality/steam-vr.md
@@ -0,0 +1,7 @@
+### SteamVR <a name="virtual-reality-steamvr"></a>
+
+* [SteamVR Unity Toolkit](https://github.com/WildStyle69/SteamVR_Unity_Toolkit "") - A collection of useful scripts and prefabs for building SteamVR titles in Unity 5. See it on the [Asset Store](https://www.assetstore.unity3d.com/en/#!/content/64131).
+* [SteamVR Unity Toolkit](https://github.com/n1ckfg/SteamVR_Unity_Toolkit "") - Predecessor of @thestonefox's VRTK, organized as submodule.
+* [SteamVR Unity Plugin](https://github.com/ValveSoftware/steamvr_unity_plugin "") - Steam VR plugin for Unity.
+* [SteamVR Enabler](https://github.com/demonixis/SteamVREnabler "") - A tool to enable or disable the SteamVR runtime.
+* [PictureWindow](https://github.com/deprecatedcoder/PictureWindow "") - Allows the user (outside of HMD) to view into the virtual world by turning the display into a window.
diff --git a/docs/virtual-reality/vr-chat.md b/docs/virtual-reality/vr-chat.md
new file mode 100644
index 0000000..65eaf4b
--- /dev/null
+++ b/docs/virtual-reality/vr-chat.md
@@ -0,0 +1,7 @@
+### VRChat <a name="virtual-reality-vrchat"></a>
+
+* [VR Chat](https://www.vrchat.net/ "") - Lets you create, publish, and explore virtual worlds with other people from around the world.
+* [Pumkins Avatar Tools](https://github.com/rurre/PumkinsAvatarTools "") - A tool to speed up setting up VRChat avatars in Unity.
+* [VRChat Counter](https://github.com/aytimothy/VRChat_Counter "") - A simple counter in VRChat that is network-friendly.
+* [VRCUnityStuffs](https://github.com/lukis101/VRCUnityStuffs "") - Collection of Unity shaders, scripts and prefabs oriented for usage in VRChat.
+* [VRMConverterForVRChat](https://github.com/esperecyan/VRMConverterForVRChat "")
\ No newline at end of file
diff --git a/docs/voxel/voxel.md b/docs/voxel/voxel.md
new file mode 100644
index 0000000..9e08c14
--- /dev/null
+++ b/docs/voxel/voxel.md
@@ -0,0 +1,5 @@
+## Voxel
+
+* [VoxelWorld](https://github.com/SidiaDevelopment/VoxelWorld) - Training Unity on a Voxel World.
+* [VoxelMeshGenerator](https://github.com/chulini/VoxelMeshGenerator) - Unity3D C# project that generates a voxel 3D mesh using the greedy mesh technique.
+* [Warfest Voxel Unity](https://github.com/ArnaudValensi/warfest-voxel-unity) - A voxel game prototype made with Unity.
