[FLINK-21422][docs] Migrate docs to Hugo
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..6cb7e5c
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "docs/themes/book"]
+	path = docs/themes/book
+	url = https://github.com/alex-shpak/hugo-book
diff --git a/docs/.gitignore b/docs/.gitignore
index 3d6212d..270dd7f 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -2,7 +2,7 @@
 .jekyll-metadata
 .jekyll-cache/
 .rubydeps/
-content/
-content_*/
 ruby2/.bundle/
 ruby2/.rubydeps/
+public/
+resources/
diff --git a/docs/Gemfile b/docs/Gemfile
deleted file mode 100644
index 3edc85d..0000000
--- a/docs/Gemfile
+++ /dev/null
@@ -1,35 +0,0 @@
-################################################################################
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-# limitations under the License.
-################################################################################
-
-source 'https://rubygems.org'
-
-ruby '>= 2.4.0'
-
-gem 'jekyll', '4.0.0'
-gem 'addressable', '2.7.0'
-gem 'octokit', '4.14.0'
-gem 'therubyracer', '0.12.3'
-gem 'json', '2.2.0'
-gem 'jekyll-multiple-languages', '2.0.3'
-gem 'jekyll-paginate', '1.1.0'
-gem 'liquid-c', '4.0.0' # speed-up site generation
-gem 'sassc', '2.2.1' # speed-up site generation
-
-# group :jekyll_plugins do
-#   gem 'hawkins'
-# end
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
deleted file mode 100644
index 9af2cbf..0000000
--- a/docs/Gemfile.lock
+++ /dev/null
@@ -1,94 +0,0 @@
-GEM
-  remote: https://rubygems.org/
-  specs:
-    addressable (2.7.0)
-      public_suffix (>= 2.0.2, < 5.0)
-    colorator (1.1.0)
-    concurrent-ruby (1.1.5)
-    em-websocket (0.5.1)
-      eventmachine (>= 0.12.9)
-      http_parser.rb (~> 0.6.0)
-    eventmachine (1.2.7)
-    faraday (0.17.0)
-      multipart-post (>= 1.2, < 3)
-    ffi (1.11.2)
-    forwardable-extended (2.6.0)
-    http_parser.rb (0.6.0)
-    i18n (1.7.0)
-      concurrent-ruby (~> 1.0)
-    jekyll (4.0.0)
-      addressable (~> 2.4)
-      colorator (~> 1.0)
-      em-websocket (~> 0.5)
-      i18n (>= 0.9.5, < 2)
-      jekyll-sass-converter (~> 2.0)
-      jekyll-watch (~> 2.0)
-      kramdown (~> 2.1)
-      kramdown-parser-gfm (~> 1.0)
-      liquid (~> 4.0)
-      mercenary (~> 0.3.3)
-      pathutil (~> 0.9)
-      rouge (~> 3.0)
-      safe_yaml (~> 1.0)
-      terminal-table (~> 1.8)
-    jekyll-multiple-languages (2.0.3)
-    jekyll-paginate (1.1.0)
-    jekyll-sass-converter (2.0.1)
-      sassc (> 2.0.1, < 3.0)
-    jekyll-watch (2.2.1)
-      listen (~> 3.0)
-    json (2.2.0)
-    kramdown (2.1.0)
-    kramdown-parser-gfm (1.1.0)
-      kramdown (~> 2.0)
-    libv8 (3.16.14.19)
-    liquid (4.0.3)
-    liquid-c (4.0.0)
-      liquid (>= 3.0.0)
-    listen (3.2.0)
-      rb-fsevent (~> 0.10, >= 0.10.3)
-      rb-inotify (~> 0.9, >= 0.9.10)
-    mercenary (0.3.6)
-    multipart-post (2.1.1)
-    octokit (4.14.0)
-      sawyer (~> 0.8.0, >= 0.5.3)
-    pathutil (0.16.2)
-      forwardable-extended (~> 2.6)
-    public_suffix (4.0.1)
-    rb-fsevent (0.10.3)
-    rb-inotify (0.10.0)
-      ffi (~> 1.0)
-    ref (2.0.0)
-    rouge (3.13.0)
-    safe_yaml (1.0.5)
-    sassc (2.2.1)
-      ffi (~> 1.9)
-    sawyer (0.8.2)
-      addressable (>= 2.3.5)
-      faraday (> 0.8, < 2.0)
-    terminal-table (1.8.0)
-      unicode-display_width (~> 1.1, >= 1.1.1)
-    therubyracer (0.12.3)
-      libv8 (~> 3.16.14.15)
-      ref
-    unicode-display_width (1.6.0)
-
-PLATFORMS
-  ruby
-
-DEPENDENCIES
-  addressable (= 2.7.0)
-  jekyll (= 4.0.0)
-  jekyll-multiple-languages (= 2.0.3)
-  jekyll-paginate (= 1.1.0)
-  json (= 2.2.0)
-  liquid-c (= 4.0.0)
-  octokit (= 4.14.0)
-  sassc (= 2.2.1)
-  therubyracer (= 0.12.3)
-
-RUBY VERSION
-   ruby 2.6.3p62
-
-BUNDLED WITH
-   1.17.2
diff --git a/docs/README.md b/docs/README.md
index 3c47c7c..fa2a777 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,60 +1,43 @@
-This README gives an overview of how to build and contribute to the documentation of Apache Flink Stateful Functions.
+This README gives an overview of how to build and contribute to the documentation of Apache Flink.
 
-The documentation is included with the source of Apache Flink Stateful Functions in order to ensure that you always
+The documentation is included with the source of Apache Flink in order to ensure that you always
 have docs corresponding to your checked out version. The online documentation at
 https://flink.apache.org/ is also generated from the files found here.
 
 # Requirements
 
-The dependencies are declared in the Gemfile in this directory. We use Markdown
-to write and Jekyll to translate the documentation to static HTML. All required
-dependencies are installed locally when you build the documentation through the
-`build_docs.sh` script. If you want to install the software manually, use Ruby's
-Bundler Gem to install all dependencies:
+### Build the site locally
 
-    gem install bundler -v 1.16.1
-    bundle install
+Make sure you have installed [Hugo](https://gohugo.io/getting-started/installing/) on your
+system.
 
-Note that in Ubuntu based systems, it may be necessary to install the following
-packages: `rubygems ruby-dev libssl-dev build-essential`.
+From this directory:
 
-# Using Dockerized Jekyll
+  * Fetch the theme submodule
+	```sh
+	git submodule update --init --recursive
+	```
+  * Start local server
+	```sh
+	hugo -b "" serve
+	```
 
-We dockerized the jekyll environment above. If you have [docker](https://docs.docker.com/),
-you can run following command to start the container.
+The site can be viewed at http://localhost:1313/
+
+## Generate configuration tables
+
+Configuration descriptions are auto generated from code. To trigger the generation you need to run:
 
 ```
-cd flink/docs/docker
-./run.sh
+mvn -Pgenerate-config-docs install
 ```
 
-It takes a few moment to build the image for the first time, but will be a second from the second time.
-The run.sh command brings you in a bash session where you run the `./build_docs.sh` script mentioned above.
+The resulting html files will be written to `layouts/shortcodes/generated`. Tables are regenerated each time the command is invoked.
+These tables can be directly included into the documentation:
 
-
-# Build
-
-The `docs/build_docs.sh` script installs dependencies locally, calls Jekyll, and
-generates the documentation in `docs/content`. You can then point your browser
-to `docs/content/index.html` and start reading.
-
-If you call the script with the preview flag `build_docs.sh -p`, Jekyll will
-start a web server at `localhost:4000` and watch the docs directory for
-updates. Use this mode to preview changes locally. 
-
-You can call the script with the incremental flag `build_docs.sh -i`.
-Jekyll will then serve a live preview at `localhost:4000`,
-and it will be much faster because it will only rebuild the pages corresponding
-to files that are modified. Note that if you are making changes that affect
-the sidebar navigation, you'll have to build the entire site to see
-those changes reflected on every page.
-
-| Flag | Action | 
-| -----| -------| 
-| -p   | Run interactive preview | 
-| -i   | Incremental builds | 
-| -e   | Build only English docs |
-| -z   | Build only Chinese docs |
+```
+{{< generated/file_name >}}
+```
 
 # Contribute
 
@@ -70,11 +53,13 @@
     title: "Title of the Page"
     ---
 
-Furthermore, you can access variables found in `docs/_config.yml` as follows:
-
-    {{ site.NAME }}
-
-This will be replaced with the value of the variable called `NAME` when generating the docs.
+    ---
+    title: "Title of the Page" <-- Title rendered in the side nave
+    weight: 1 <-- Weight controls the ordering of pages in the side nav. 
+    type: docs <-- required
+    aliases:  <-- Alias to setup redirect from removed page to this one
+      - /alias/to/removed/page.html
+    ---
 
 ## Structure
 
@@ -85,8 +70,8 @@
 All documents are structured with headings. From these headings, you can automatically generate a page table of contents (see below).
 
 ```
-# Level-1 Heading  <- Used for the title of the page (don't use this)
-## Level-2 Heading <- Start with this one
+# Level-1 Heading  <- Used for the title of the page 
+## Level-2 Heading <- Start with this one for content
 ### Level-3 heading
 #### Level-4 heading
 ##### Level-5 heading
@@ -96,47 +81,140 @@
 
 #### Table of Contents
 
-    * This will be replaced by the TOC
-    {:toc}
+Table of contents are added automatically to every page, based on heading levels 2 - 4. 
+The ToC can be ommitted by adding the following to the front matter of the page:
 
+    ---
+    bookToc: false
+    ---
 
-Add this markup (both lines) to the document in order to generate a table of contents for the page. Headings until level 3 headings are included.
+### ShortCodes 
 
-You can exclude a heading from the table of contents:
+Flink uses [shortcodes](https://gohugo.io/content-management/shortcodes/) to add custom functionality
+to its documentation markdown. The following are available for use:  
 
-    # Excluded heading
-    {:.no_toc}
+#### Flink Artifact
+
+    {{< artfiact flink-streaming-java withScalaVersion >}}
+
+This will be replaced by the maven artifact for flink-streaming-java that users should copy into their pom.xml file. It will render out to:
+
+```xml
+<dependency>
+    <groupdId>org.apache.flink</groupId>
+    <artifactId>flink-streaming-java_2.11</artifactId>
+    <version><!-- current flink version --></version>
+</dependency>
+```
+
+It includes a number of optional flags:
+
+* withScalaVersion: Includes the scala version suffix to the artifact id
+* withTestScope: Includes `<scope>test</scope>` to the module. Useful for marking test dependencies.
+* withTestClassifier: Includes `<classifier>tests</classifier>`. Useful when users should be pulling in Flinks tests dependencies. This is mostly for the test harnesses and probably not what you want. 
 
 #### Back to Top
 
-	{% top %}
+	{{< top >}}
 
-This will be replaced by a default back to top link. It is recommended to use these links at least at the end of each level-2 section.
+This will be replaced by a back to top link. It is recommended to use these links at least at the end of each level-2 section.
 
-#### Labels
+#### Info Hints
 
-	{% info %}
-	{% warn %}
+	{{< hint info >}}
+	Some interesting information
+	{{< /hint >}}
+	
+The hint will be rendered in a blue box. This hint is useful when providing 
+additional information for the user that does not fit into the flow of the documentation.
 
-These will be replaced by a info or warning label. You can change the text of the label by providing an argument:
+#### Info Warning 
 
-    {% info Recommendation %}
+    {{< hint warning >}}
+    Something to watch out for. 
+    {{< /hint >}}
 
-### Documentation
+The hint will be rendered in a yellow box. This hint is useful when highlighting
+information users should watch out for to prevent errors. 
 
-#### Navigation
+#### Info Danger
 
-The navigation on the left side of the docs is automatically generated when building the docs. You can modify the markup in `_include/sidenav.html`.
+    {{< hint danger >}}
+    Something to avoid
+    {{< /hint >}}
 
-The structure of the navigation is determined by the front matter of all pages. The fields used to determine the structure are:
+The hint will be rendered in a red box. This hint is useful when highlighting
+information users need to know to avoid data loss or to point out broken
+functionality. 
 
-- `nav-id` => ID of this page. Other pages can use this ID as their parent ID.
-- `nav-parent_id` => ID of the parent. This page will be listed under the page with id `nav-parent_id`.
+#### Label
 
-Level 0 is made up of all pages, which have nav-parent_id set to `root`. There is no limitation on how many levels you can nest.
+    {{< label "My Label" >}}
+    
+The label will be rendered in an inlined blue box. This is useful for labeling functionality
+such as whether a SQL feature works for only batch or streaming execution. 
 
-The `title` of the page is used as the default link text. You can override this via `nav-title`. The relative position per navigational level is determined by `nav-pos`.
+#### Flink version 
 
-If you have a page with sub pages, the link target will be used to expand the sub level navigation. If you want to actually add a link to the page as well, you can add the `nav-show_overview: true` field to the front matter. This will then add an `Overview` sub page to the expanded list.
+    {{< version >}}
+    
+Interpolates the current Flink version
 
-The nesting is also used for the breadcrumbs like `Application Development > Libraries > Machine Learning > Optimization`.
+#### Scala Version
+
+    {{< scala_verison >}}
+    
+Interpolates the default scala version
+
+#### Stable
+
+    {{< stable >}}
+     Some content
+    {{< /stable >}}
+    
+This shortcode will only render its content if the site is marked as stable. 
+
+#### Unstable 
+
+    {{< unstable >}}
+    Some content 
+    {{< /unstable >}}
+    
+This shortcode will only render its content if the site is marked as unstable. 
+
+#### Query State Warning
+
+    {{< query_state_warning >}}
+    
+Will render a warning the current SQL feature may have unbounded state requirements.
+
+#### tab
+
+    {{< tabs "sometab" >}}
+    {{< tab "Java" >}}
+    ```java
+    System.out.println("Hello World!");
+    ```
+    {{< /tab >}}
+    {{< tab "Scala" >}}
+    ```scala
+    println("Hello World!");
+    ```
+    {< /tab >}}
+    {{< /tabs }}
+    
+Prints the content in tabs. IMPORTANT: The label in the outermost "tabs" shortcode must
+be unique for the page. 
+
+#### Github Repo
+
+    {{< github_repo >}}
+    
+Renders a link to the apache flink repo. 
+
+#### Github Link
+
+    {{< gh_link file="/some/file.java" name="Some file" >}}
+    
+Renders a link to a file in the Apache Flink repo with a given name. 
+ 
diff --git a/docs/_config.yml b/docs/_config.yml
deleted file mode 100644
index 05841e7..0000000
--- a/docs/_config.yml
+++ /dev/null
@@ -1,102 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-#------------------------------------------------------------------------------
-# VARIABLES
-#------------------------------------------------------------------------------
-# Variables specified in this file can be used in the documentation via:
-#     {{ site.CONFIG_KEY }}
-#------------------------------------------------------------------------------
-
-# This are the version referenced in the docs. Please only use these variables
-# to reference a specific Stateful Function version, because this is the only place where
-# we change the version for the complete docs when forking of a release branch
-# etc.
-# The full version string as referenced in Maven (e.g. 1.2.1)
-version: "2.3-SNAPSHOT"
-# For stable releases, leave the bugfix version out (e.g. 1.2). For snapshot
-# release this should be the same as the regular version
-version_title: "2.3-SNAPSHOT"
-# The Flink version supported by this version of Stateful Functions
-flink_version: "1.12.1"
-# Branch on Github for this version
-github_branch: "master"
-
-# Plain Scala version is needed for e.g. the Gradle quickstart.
-scala_version: "2.12"
-# This suffix is appended to the Scala-dependent Maven artifact names
-scala_version_suffix: "_2.12"
-
-# Plain flink-shaded version is needed for e.g. the hive connector.
-# Please update the shaded_version once new flink-shaded is released.
-shaded_version: "8.0"
-
-# Some commonly linked pages (this was more important to have as a variable
-# during incubator; by now it should also be fine to hardcode these.)
-website_url: "https://flink.apache.org"
-jira_url: "https://issues.apache.org/jira/browse/FLINK"
-github_url: "https://github.com/apache/flink-statefun"
-download_url: "https://flink.apache.org/downloads.html"
-
-# please use a protocol relative URL here
-baseurl: //ci.apache.org/projects/flink/flink-statefun-docs-master
-stable_baseurl: //ci.apache.org/projects/flink/flink-statefun-docs-stable
-
-javadocs_baseurl: //ci.apache.org/projects/flink/flink-statefun-docs-master/
-
-# Flag whether this is a stable version or not. Used for the quickstart page.
-is_stable: false
-
-# Flag to indicate whether an outdated warning should be shown.
-show_outdated_warning: false
-
-previous_docs:
-  2.0: https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.0
-  2.1: https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1
-  2.2: https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.2
-
-#------------------------------------------------------------------------------
-# BUILD CONFIG
-#------------------------------------------------------------------------------
-# These variables configure the jekyll build (./build_docs.sh). You don't need
-# to change anything here.
-#------------------------------------------------------------------------------
-
-exclude:
-  - "build_docs.sh"
-  - "check_links.sh"
-
-# Used in some documents to initialize arrays. Don't delete.
-array: []
-
-defaults:
-  -
-    scope:
-      path: ""
-    values:
-      layout: plain
-      nav-pos: 99999 # Move to end if no pos specified
-
-host: 0.0.0.0
-
-kramdown:
-  toc_levels: 1..3 # Include h1-h3 for ToC
-
-# The all languages used
-languages: ['en']
-
-plugins: ['jekyll-paginate', 'jekyll-multiple-languages']
diff --git a/docs/_config_dev_en.yml b/docs/_config_dev_en.yml
deleted file mode 100644
index eb11fbf..0000000
--- a/docs/_config_dev_en.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License
-
-exclude:
-  - "*.zh.md"
-  - "build_docs.sh"
-  - "check_links.sh"
-  - "content"
-  - "content_en"
-  - "content_zh"
diff --git a/docs/_config_dev_zh.yml b/docs/_config_dev_zh.yml
deleted file mode 100644
index 8b9ddeb..0000000
--- a/docs/_config_dev_zh.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License
-
-exclude:
-  - "*.md"
-  - "build_docs.sh"
-  - "check_links.sh"
-  - "content"
-  - "content_en"
-  - "content_zh"
-
-include:
-  - "*.zh.md"
diff --git a/docs/_includes/sidenav.html b/docs/_includes/sidenav.html
deleted file mode 100644
index 4c10ebd..0000000
--- a/docs/_includes/sidenav.html
+++ /dev/null
@@ -1,185 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-{%- comment -%}
-==============================================================================
-Extract the active nav IDs.
-==============================================================================
-{%- endcomment -%}
-
-{%- assign active_nav_ids = site.array -%}
-{%- assign parent_id = page.nav-parent_id -%}
-
-{%- for i in (1..10) -%}
-  {%- if parent_id -%}
-    {%- assign active_nav_ids = active_nav_ids | push: parent_id -%}
-    {%- assign current = (site.pages_by_language[page.language] | where: "nav-id" , parent_id | sort: "nav-pos") -%}
-    {%- if current.size > 0 -%}
-      {%- assign parent_id = current[0].nav-parent_id -%}
-    {%- else -%}
-      {%- break -%}
-    {%- endif -%}
-  {%- else -%}
-    {%- break -%}
-  {%- endif -%}
-{%- endfor -%}
-
-{%- if page.language == "en" -%}
-  {%- capture baseurl_i18n -%}{{ site.baseurl }}{%- endcapture -%}
-{%- else if page.language == "zh" -%}
-  {%- capture baseurl_i18n -%}{{ site.baseurl }}/{{ page.language }}{%- endcapture -%}
-{%- endif -%}
-
-{%- comment -%}
-==============================================================================
-Build the nested list from nav-id and nav-parent_id relations.
-==============================================================================
-This builds a nested list from all pages. The fields used to determine the
-structure are:
-
-- 'nav-id' => ID of this page. Other pages can use this ID as their
-  parent ID.
-- 'nav-parent_id' => ID of the parent. This page will be listed under
-  the page with id 'nav-parent_id'.
-
-Level 0 is made up of all pages, which have nav-parent_id set to 'root'.
-
-The 'title' of the page is used as the default link text. You can
-override this via 'nav-title'. The relative position per navigational
-level is determined by 'nav-pos'.
-{%- endcomment -%}
-
-{%- assign elementsPosStack = site.array -%}
-{%- assign posStack = site.array -%}
-
-{%- assign elements = site.array -%}
-{%- assign all_pages_by_nav_parent = (site.pages_by_language[page.language] | where_exp: "item", "item.nav-parent_id != nil" | group_by: "nav-parent_id") -%}
-{%- assign children = (all_pages_by_nav_parent | where: "name" , "root") -%}
-{%- assign children = (children[0].items | sort: "nav-pos") -%}
-{%- if children.size > 0 -%}
-  {%- assign elements = elements | push: children -%}
-{%- endif -%}
-
-{%- assign elementsPos = 0 -%}
-{%- assign pos = 0 -%}
-
-<div class="sidenav-logo">
-  <p><a href="{{ baseurl_i18n }}/"><img class="bottom" alt="Apache Flink" src="{{ site.baseurl }}/page/img/navbar-brand-logo.png"></a> v{{ site.version_title }}</p>
-</div>
-<ul id="sidenav">
-{%- for i in (1..10000) -%}
-  {%- if pos >= elements[elementsPos].size -%}
-    {%- if elementsPos == 0 -%}
-      {%- break -%}
-    {%- else -%}
-      {%- assign elementsPos = elementsPosStack | last -%}
-      {%- assign pos = posStack | last %}
-</ul></div></li>
-      {%- assign elementsPosStack = elementsPosStack | pop -%}
-      {%- assign posStack = posStack | pop -%}
-    {%- endif -%}
-  {%- else -%}
-    {%- assign this = elements[elementsPos][pos] -%}
-
-    {%- if this.url == page.url -%}
-      {%- assign active = true -%}
-    {%- elsif this.nav-id and active_nav_ids contains this.nav-id -%}
-      {%- assign active = true -%}
-    {%- elsif this.always-expand -%}
-      {%- assign active = true -%}
-    {%- else -%}
-      {%- assign active = false -%}
-    {%- endif -%}
-
-    {%- capture title -%}{%- if this.nav-title -%}{{ this.nav-title }}{%- else -%}{{ this.title }}{%- endif -%}{%- endcapture -%}
-    {%- capture target -%}"{{ site.baseurl }}{{ this.url }}"{%- if active %} class="active"{%- endif -%}{%- endcapture -%}
-    {%- capture overview_target -%}"{{ site.baseurl }}{{ this.url }}"{%- if this.url == page.url -%} class="active"{%- endif -%}{%- endcapture -%}
-
-    {% if this.section-break %}<hr class="section-break"></hr>{% endif -%}
-
-    {%- assign pos = pos | plus: 1 -%}
-    {%- if this.nav-id -%}
-      {%- assign children = (all_pages_by_nav_parent | where: "name" , this.nav-id) -%}
-      {%- if children.size > 0 -%}
-        {%- assign children = (children[0].items | sort: "nav-pos") -%}
-        {%- capture collapse_target -%}"#collapse-{{ i }}" data-toggle="collapse"{%- if active -%} class="active"{%- endif -%}{%- endcapture -%}
-        {%- capture expand -%}<i class="fa fa-caret-down pull-right" aria-hidden="true" style="padding-top: 4px"></i>{%- endcapture %}
-<li><a href={{ collapse_target }}>{{ title }}{{ expand }}</a><div class="collapse{% if active %} in{% endif %}" id="collapse-{{ i }}"><ul>
-        {%- if this.nav-show_overview %}
-<li><a href={{ overview_target }}>
-            {%- if page.is_default_language %}Overview{% else %}概览{% endif %}</a></li>
-        {%- endif -%}
-        {%- assign elements = elements | push: children -%}
-        {%- assign elementsPosStack = elementsPosStack | push: elementsPos -%}
-        {%- assign posStack = posStack | push: pos -%}
-
-        {%- assign elementsPos = elements.size | minus: 1 -%}
-        {%- assign pos = 0 -%}
-      {%- else %}
-<li><a href={{ target }}>{{ title }}</a></li>
-      {%- endif -%}
-    {%- else %}
-<li><a href={{ target }}>{{ title }}</a></li>
-    {%- endif -%}
-  {%- endif -%}
-{%- endfor %}
-  <li class="divider"></li>
-  <li><a href="{{ site.javadocs_baseurl }}/api/java"><i class="fa fa-external-link title" aria-hidden="true"></i> Javadocs</a></li>
-  <li><a href="http://flink.apache.org"><i class="fa fa-external-link title" aria-hidden="true"></i> Project Page</a></li>
-</ul>
-
-<div class="sidenav-search-box">
-  <form class="navbar-form" role="search" action="{{site.baseurl}}/search-results.html">
-    <div class="form-group">
-      <input type="text" class="form-control" size="16px" name="q" placeholder="Search">
-    </div>
-    <button type="submit" class="btn btn-default">Go</button>
-  </form>
-</div>
-
-<div class="sidenav-versions">
-  <div class="dropdown">
-    <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
-      {%- if page.is_default_language -%}
-        Pick Docs Version
-      {%- else -%}
-        选择文档版本
-      {%- endif -%}
-    <span class="caret"></span></button>
-    <ul class="dropdown-menu">
-      {%- for d in site.previous_docs %}
-      <li><a href="{{ d[1] }}">v{{ d[0] }}</a></li>
-      {%- endfor %}
-    </ul>
-  </div>
-</div>
-
-<!--
-<div class="sidenav-languages">
-  {%- if page.is_default_language -%}
-    <a href="{{ site.baseurl }}/zh{{ page.url }}">
-      <button type="submit" class="btn btn-default">中文版</button>
-    </a>
-  {%- else -%}
-    <a href="{{ site.baseurl }}{{ page.url | remove_first: 'zh/' }}">
-      <button type="submit" class="btn btn-default">English</button>
-    </a>
-  {%- endif %}
-</div>
--->
diff --git a/docs/_layouts/404_base.html b/docs/_layouts/404_base.html
deleted file mode 100644
index 9ad29b3..0000000
--- a/docs/_layouts/404_base.html
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: base
----
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-<noscript>
-  <meta http-equiv="refresh" content="5; url=https:{{ site.baseurl }}">
-</noscript>
-<script type="text/javascript">
-  var documentationRootUrl = "https:{{ site.baseurl }}";
-  var timeout = "5000";
-  window.onload = function() {
-    setTimeout(doRedirect, timeout);
-  }
-  function doRedirect() {
-    window.location.href = documentationRootUrl;
-  }
-</script>
-
-<h1>{{ page.title }}</h1>
-
-{{ content }}
diff --git a/docs/_layouts/base.html b/docs/_layouts/base.html
deleted file mode 100644
index e85db9a..0000000
--- a/docs/_layouts/base.html
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE html>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
-    <title>Apache Flink Stateful Functions {{ site.version_title }} Documentation: {{ page.title }}</title>
-    <link rel="shortcut icon" href="{{ site.baseurl }}/page/favicon.png" type="image/x-icon">
-    <link rel="icon" href="{{ site.baseurl }}/page/favicon.png" type="image/x-icon">
-    <link rel="canonical" href="{{ site.stable_baseurl }}{{ page.url | replace:'index.html',''}}">
-
-    <!-- Bootstrap -->
-    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
-    <link rel="stylesheet" href="{{ site.baseurl }}/page/css/flink.css">
-    <link rel="stylesheet" href="{{ site.baseurl }}/page/css/syntax.css">
-    <link rel="stylesheet" href="{{ site.baseurl }}/page/css/codetabs.css">
-    <link rel="stylesheet" href="{{ site.baseurl }}/page/font-awesome/css/font-awesome.min.css">
-    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
-    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
-    <!--[if lt IE 9]>
-      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
-      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
-    <![endif]-->
-  </head>
-  <body>
-    {% if site.show_outdated_warning %}
-    <div style="position:fixed; bottom:0; left:0; z-index:99999; width:100%; text-align:center; padding:15px; border-top:5px solid #ECCCD1; background:#F2DEDE; color:#AD433F; font-weight:bold">
-      {% if page.language == "en" %}
-        This documentation is for an out-of-date version of Apache Flink Stateful Functions. We recommend you use <a href="https://ci.apache.org/projects/flink/flink-statefun-docs-stable/">the latest stable version</a>.
-      {% else if page.language == "zh" %}
-        本文档是 Apache Flink Stateful Functions 的旧版本。建议访问 <a href="https://ci.apache.org/projects/flink/flink-statefun-docs-stable/zh">最新的稳定版本</a>。
-      {% endif %}
-    </div>
-    {% endif %}
-
-    <!-- Main content. -->
-    <div class="container">
-      {% comment %}
-      This is the base for all content. The content from the layouts found in
-      the _layouts directory goes here.
-      {% endcomment %}
-      <div class="row">
-        <div class="col-lg-3" id="sidenavcol">
-          {% include sidenav.html %}
-        </div>
-        <div class="col-lg-9 content" id="contentcol">
-          {{ content }}
-        </div>
-      </div>
-    </div><!-- /.container -->
-
-    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
-    <script src="{{ site.baseurl }}/page/js/jquery.min.js"></script>
-    <!-- Include all compiled plugins (below), or include individual files as needed -->
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
-    <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.min.js"></script>
-    <script src="{{ site.baseurl }}/page/js/flink.js"></script>
-
-    <!-- Google Analytics -->
-    <script>
-      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-      ga('create', 'UA-52545728-1', 'auto');
-      ga('send', 'pageview');
-    </script>
-
-    <!-- Disqus -->
-    {% comment %}
-    <script type="text/javascript">
-    var disqus_shortname = 'stratosphere-eu';
-    (function() {
-        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
-        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
-        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
-    })();
-    </script>
-    {% endcomment %}
-  </body>
-</html>
diff --git a/docs/_layouts/plain.html b/docs/_layouts/plain.html
deleted file mode 100644
index 6b7f56a..0000000
--- a/docs/_layouts/plain.html
+++ /dev/null
@@ -1,78 +0,0 @@
----
-layout: base
----
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-{%- assign active_pages = site.array -%}
-{%- assign active = page -%}
-
-{%- for i in (1..10) -%}
-  {%- assign active_pages = active_pages | push: active -%}
-  {%- if active.nav-parent_id -%}
-    {%- assign next = site.pages_by_language[page.language] | where: "nav-id" , active.nav-parent_id -%}
-    {%- if next.size > 0 -%}
-      {%- assign active = next[0] -%}
-    {%- else -%}
-      {%- break -%}
-    {%- endif -%}
-  {%- else -%}
-    {%- break -%}
-  {%- endif -%}
-{%- endfor -%}
-
-{% assign active_pages = active_pages | reverse %}
-
-<ol class="breadcrumb">
-{%- for p in active_pages %}
-  {% capture title %}{% if p.nav-title %}{{ p.nav-title }}{% else %}{{ p.title }}{% endif %}{% endcapture -%}
-  {%- if forloop.last == true %}
-    <li class="active">{{ title }}</li>
-  {%- elsif p.nav-show_overview %}
-    <li><a href="{{ site.baseurl }}{{ p.url }}">{{ title }}</a></li>
-  {%- else %}
-    <li>{{ title }}</li>
-  {%- endif -%}
-{%- endfor %}
-</ol>
-
-<h1>{{ page.title }}{% if page.is_beta %} <span class="beta">Beta</span>{% endif %}</h1>
-{% if site.show_outdated_warning %}
-<div class="alert alert-danger" role="alert">
-  {%- if page.language == "en" %}
-    <strong>This documentation is for an out-of-date version of Apache Flink. We recommend you use <a href="https://ci.apache.org/projects/flink/flink-docs-stable/">the latest stable version</a>.</strong>
-  {%- else if page.language == "zh" %}
-    <strong>本文档是 Apache Flink 的旧版本。建议访问 <a href="https://ci.apache.org/projects/flink/flink-docs-stable/zh">最新的稳定版本</a>。</strong>
-  {%- endif %}
-</div>
-{%- endif %}
-
-{{ content }}
-
-<div class="footer">
-  <!--
-  <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications" target="_blank">
-    {% if page.language == "zh" %}
-      想参与贡献翻译?
-    {% else if page.language == "en" %}
-      Want to contribute translation?
-    {% endif %}
-  </a>
-  -->
-</div>
diff --git a/docs/_layouts/redirect.html b/docs/_layouts/redirect.html
deleted file mode 100644
index 700e8aa..0000000
--- a/docs/_layouts/redirect.html
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: base
----
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-{% if page.language == "en" %}
-
-    <meta http-equiv="refresh" content="1; url={{ site.baseurl }}{{ page.redirect }}" />
-
-    <h1>Page '{{ page.title }}' Has Moved</h1>
-
-    The page <strong>{{ page.title }}</strong> has been moved. Redirecting to <a href="{{ site.baseurl }}/{{ page.redirect }}">{{ site.baseurl }}{{ page.redirect }}</a> in 1 second.
-
-{% else if page.language == "zh" %}
-
-    <meta http-equiv="refresh" content="1; url={{ site.baseurl }}/zh{{ page.redirect }}" />
-
-    <h1>'{{ page.title }}' 页面已被移动</h1>
-
-    <strong>{{ page.title }}</strong> 页面已经被移动了。将在 1 秒后重定向到 <a href="{{ site.baseurl }}/zh{{ page.redirect }}">{{ site.baseurl }}/zh{{ page.redirect }}</a> 。
-
-{% endif %}
diff --git a/docs/_plugins/build_time.rb b/docs/_plugins/build_time.rb
deleted file mode 100644
index 61aa5e8..0000000
--- a/docs/_plugins/build_time.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-module Jekyll
-  class BuildTimeTag < Liquid::Tag
-
- 	def initialize(tag_name, input, tokens)
-      super
-    end
-
-    def render(context)
-    	Time.now.strftime("%D, %r %Z")
-    end
-  end
-end
-
-Liquid::Template.register_tag('build_time', Jekyll::BuildTimeTag)
\ No newline at end of file
diff --git a/docs/_plugins/gh_link.rb b/docs/_plugins/gh_link.rb
deleted file mode 100644
index bdaa2d4..0000000
--- a/docs/_plugins/gh_link.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-# 
-# http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# ---------------------------------------------------------
-# Expands a github link shortcut into a proper markdown link
-# ---------------------------------------------------------
-
-module Jekyll
-  class GitHubLinkTag < Liquid::Tag
-
-    def initialize(tag_name, input, tokens)
-      super
-      @input = input
-    end
-
-    def render(context)
-      input = @input.sub(/".*"/, "").split
-      name = @input.match(/".*"/).to_s.gsub(/"/, "")#@input.split.drop(2).join(" ")
-      config = context.registers[:site].config
-
-      path = input[0]
-      file = path.split('/').last
-
-      page_gh_tag = context["page"]["gh_link_tag"]
-      # tag precendence:
-      # 1. input[1],
-      # 2. 'gh_link_tag' of page frontmatter
-      # 3. "master" (default)
-      gh_tag = input[1].nil? ? (page_gh_tag.nil? ? "master" : page_gh_tag) : input[1]
-      name = name.to_s == '' ? file : name
-      #refname = input[2].nil? ? file : input[2]
-
-      "[#{name}](#{config["github_url"]}/blob/#{gh_tag}/#{path})"
-    end
-  end
-end
-
-Liquid::Template.register_tag('gh_link', Jekyll::GitHubLinkTag)
diff --git a/docs/_plugins/info.rb b/docs/_plugins/info.rb
deleted file mode 100644
index ef3c210..0000000
--- a/docs/_plugins/info.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-module Jekyll
-  class InfoTag < Liquid::Tag
-
-    def initialize(tag_name, text, tokens)
-      super
-      @text = text
-    end
-
-    def render(context)
-    	if @text.to_s == ''
-    		@text = "Info"
-    	end
-
-    	@text = @text.strip! || @text if !@text.nil?
-    	"<span class=\"label label-info\">#{@text}</span>"
-    end
-  end
-end
-
-Liquid::Template.register_tag('info', Jekyll::InfoTag)
diff --git a/docs/_plugins/panel.rb b/docs/_plugins/panel.rb
deleted file mode 100644
index 1dfef63..0000000
--- a/docs/_plugins/panel.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-module Jekyll
-  class PanelTag < Liquid::Tag
-
-    def initialize(tag_name, text, tokens)
-      super
-      @text = text
-    end
-
-    def render(context)
-    	@text = @text.strip! || @text if !@text.nil?
-      "<div class=\"panel panel-default\"><div class=\"panel-body\" markdown=\"span\">#{@text}</div></div>"
-    end
-  end
-end
-
-Liquid::Template.register_tag('panel', Jekyll::PanelTag)
diff --git a/docs/_plugins/removeDuplicateLicenseHeaders.rb b/docs/_plugins/removeDuplicateLicenseHeaders.rb
deleted file mode 100644
index 2ac653f..0000000
--- a/docs/_plugins/removeDuplicateLicenseHeaders.rb
+++ /dev/null
@@ -1,75 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-
-# http://www.apache.org/licenses/LICENSE-2.0
-
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# ---------------------------------------------------------
-# Ensures that the documentation contains the Apache License
-# headers once, not repeatedly for each include.
-# ---------------------------------------------------------
-
-module Jekyll
-
-  module LicenseRemover
- 
-    AL2 = "<!--\n"+
-          "Licensed to the Apache Software Foundation (ASF) under one\n"+
-          "or more contributor license agreements.  See the NOTICE file\n"+
-          "distributed with this work for additional information\n"+
-          "regarding copyright ownership.  The ASF licenses this file\n"+
-          "to you under the Apache License, Version 2.0 (the\n"+
-          "\"License\"); you may not use this file except in compliance\n"+
-          "with the License.  You may obtain a copy of the License at\n"+
-          "\n"+
-          "http://www.apache.org/licenses/LICENSE-2.0\n"+
-          "\n"+
-          "Unless required by applicable law or agreed to in writing,\n"+
-          "software distributed under the License is distributed on an\n"+
-          "\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"+
-          "KIND, either express or implied.  See the License for the\n"+
-          "specific language governing permissions and limitations\n"+
-          "under the License.\n"+
-          "-->\n"
-
-    def writeFile(dest, content)
-      path = self.destination(dest)
-      FileUtils.mkdir_p(File.dirname(path))
-      File.open(path, 'w') do |f|
-        # remove all Apache Licenses
-        withoutLicense = content.gsub(/<!--[^>]*LICENSE-2.0[^>]*-->/,'')
-        # put single Apache License on top
-        singleLicense = AL2+withoutLicense
-        # write file out
-        f.write(singleLicense)
-      end
-    end
-
-  end
-
-  class Post
-    include LicenseRemover
-    def write(dest)
-      self.writeFile(dest, self.output)
-    end
-  end
-
-  class Page
-    include LicenseRemover
-    def write(dest)
-      self.writeFile(dest, self.output)
-    end
-  end
-
-end
diff --git a/docs/_plugins/top.rb b/docs/_plugins/top.rb
deleted file mode 100644
index b79781c..0000000
--- a/docs/_plugins/top.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-module Jekyll
-  class TopTag < Liquid::Tag
-
-    def initialize(tag_name, text, tokens)
-      super
-    end
-
-    def render(context)
-    	"<a href=\"\#top\" class=\"top pull-right\"><span class=\"glyphicon glyphicon-chevron-up\"></span> Back to top</a>"
-    end
-  end
-end
-
-Liquid::Template.register_tag('top', Jekyll::TopTag)
diff --git a/docs/_plugins/warn.rb b/docs/_plugins/warn.rb
deleted file mode 100644
index c8bd3af..0000000
--- a/docs/_plugins/warn.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# ---------------------------------------------------------
-# Expands a github link shortcut into a proper markdown link
-# ---------------------------------------------------------
-
-module Jekyll
-  class WarnTag < Liquid::Tag
-
-    def initialize(tag_name, text, tokens)
-      super
-      @text = text
-    end
-
-    def render(context)
-    	if @text.to_s == ''
-    		@text = "Warning"
-    	end
-
-    	@text = @text.strip! || @text if !@text.nil?
-    	"<span class=\"label label-danger\">#{@text}</span>"
-    end
-  end
-end
-
-Liquid::Template.register_tag('warn', Jekyll::WarnTag)
diff --git a/docs/assets/_custom.scss b/docs/assets/_custom.scss
new file mode 100644
index 0000000..33ccbb4
--- /dev/null
+++ b/docs/assets/_custom.scss
@@ -0,0 +1,239 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+// 
+//   http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+@import "github";
+
+.link {
+    padding-bottom: 5px;
+}
+
+.appetizer {
+	color: #FBB142;
+}
+
+.maindish {
+	color: #7E4F89;
+}
+
+.dessert {
+    color: #E6526F;
+}
+
+.book-menu nav {
+	background: #f8f8f8;
+}
+
+.book-page {
+	padding: 2rem 2rem;
+}
+
+.book-search input {
+	background: white;
+}
+
+.markdown a {
+	text-decoration: none;
+	color: #05b;
+}
+
+.markdown a:visited {
+	text-decoration: none;
+	color: #05b;
+}
+
+.markdown {
+    line-height: 1.43;
+
+    h1,
+    h2,
+    h3,
+    h4,
+    h5,
+    h6 {
+        font-weight: 500;
+        padding-top: 0;
+        margin-top: 1em;
+    }
+}
+
+body {
+    letter-spacing: normal;
+    -webkit-font-smoothing: auto;
+}
+
+aside nav ul {
+  li {
+    margin: 0.5em 0;
+  }
+}
+
+.book-search {
+	border: 2px solid #ebebeb;
+}
+
+@media screen and (max-width: 768px) {
+    .toc {
+        display: none;
+    }
+}
+
+aside.book-menu nav {
+    a:hover {
+        font-weight: bold;
+        opacity: 1.0;
+    }
+
+    a.active {
+        font-weight: bold;
+        color: var(--body-font-color);
+    }
+}
+
+aside.book-menu > li {
+    padding: 10px 5px 5px 5px;
+}
+
+aside.book-toc {
+    h3 {
+        margin-top: 0;
+        padding-top: 0;
+        font-size: 1.2em;
+    }
+}
+
+html {
+    line-height: 1.43;
+}
+
+h1, h2, h3, h4, h5, h6 {
+    line-height: 1.1;
+}
+
+h1, h2, h3 {
+    margin-top: 20px;
+    margin-bottom: 10px;
+}
+
+h2, h3, h4 {
+    padding-top: 1em;
+}
+
+h1 {
+    font-size: 36px;
+}
+
+h2 {
+    font-size: 30px;
+    border-bottom: 1px solid #e5e5e5;
+}
+
+h3 {
+    font-size: 24px;
+}
+
+h4 {
+    font-size: 18px;
+}
+
+.markdown code {
+    background: white;
+    padding: 0;
+    border-radius: 0;
+}
+
+pre.chroma code {
+    line-height: 1.43;
+}
+
+.book-languages {
+    border: 2px solid black; 
+}
+
+.menu-break {
+    opacity: 0.1;
+}
+
+#book-search-results {
+    padding: 2px;
+    background-color: white;
+}
+
+.label {
+    display: inline;
+    padding: .2em .6em .3em;
+    font-size: 75%;
+    font-weight: 700;
+    line-height: 1;
+    color: #fff;
+    text-align: center;
+    white-space: nowrap;
+    vertical-align: baseline;
+    border-radius: .25em;
+    background-color: #337ab7;
+}
+
+.expand-toc {
+    position: fixed;
+    top: 2em;
+    right: 5em;
+    display: none;
+}
+
+.container {
+    max-width: 90rem;
+}
+
+#book-search-input:focus {
+    outline: none;
+}
+
+.rest-api h5 {
+    margin-top: .5em;
+    margin-bottom: .5em;
+    font-size: 1em;
+}
+
+.rest-api tbody {
+    display: table;
+    width: 100%;
+    background: white;
+}
+
+.rest-api td {
+    background: white;
+}
+
+.rest-api .book-expand label {
+    padding: 0rem 0rem;
+    background: white;
+}
+
+.rest-api .book-expand {
+    background: white;
+}
+
+.rest-api .book-expand .book-expand-head {
+    background: white;
+}
+
+.configuration td {
+    background: white;
+}
+
+.markdown table tr:nth-child(2n) {
+    background: white;
+} 
\ No newline at end of file
diff --git a/docs/assets/_fonts.scss b/docs/assets/_fonts.scss
new file mode 100644
index 0000000..dc57189
--- /dev/null
+++ b/docs/assets/_fonts.scss
@@ -0,0 +1,25 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+// 
+//   http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+body {
+    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
+    font-size: 14px;
+}
+
+code {
+    font-family: "Menlo", "Lucida Console", monospace;
+}
\ No newline at end of file
diff --git a/docs/assets/github.css b/docs/assets/github.css
new file mode 100644
index 0000000..25600e3
--- /dev/null
+++ b/docs/assets/github.css
@@ -0,0 +1,87 @@
+/**
+ * Syntax highlighting generated via
+ * hugo gen chromastyles --style=github > chroma.css
+ */
+
+/* Background */ .chroma { background-color: #ffffff }
+/* Other */ .chroma .x {  }
+/* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 }
+/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
+/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
+/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
+/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
+/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
+/* Keyword */ .chroma .k { color: #000000; font-weight: bold }
+/* KeywordConstant */ .chroma .kc { color: #000000; font-weight: bold }
+/* KeywordDeclaration */ .chroma .kd { color: #000000; font-weight: bold }
+/* KeywordNamespace */ .chroma .kn { color: #000000; font-weight: bold }
+/* KeywordPseudo */ .chroma .kp { color: #000000; font-weight: bold }
+/* KeywordReserved */ .chroma .kr { color: #000000; font-weight: bold }
+/* KeywordType */ .chroma .kt { color: #445588; font-weight: bold }
+/* Name */ .chroma .n {  }
+/* NameAttribute */ .chroma .na { color: #008080 }
+/* NameBuiltin */ .chroma .nb { color: #0086b3 }
+/* NameBuiltinPseudo */ .chroma .bp { color: #999999 }
+/* NameClass */ .chroma .nc { color: #445588; font-weight: bold }
+/* NameConstant */ .chroma .no { color: #008080 }
+/* NameDecorator */ .chroma .nd { color: #3c5d5d; font-weight: bold }
+/* NameEntity */ .chroma .ni { color: #800080 }
+/* NameException */ .chroma .ne { color: #990000; font-weight: bold }
+/* NameFunction */ .chroma .nf { color: #990000; font-weight: bold }
+/* NameFunctionMagic */ .chroma .fm {  }
+/* NameLabel */ .chroma .nl { color: #990000; font-weight: bold }
+/* NameNamespace */ .chroma .nn { color: #555555 }
+/* NameOther */ .chroma .nx {  }
+/* NameProperty */ .chroma .py {  }
+/* NameTag */ .chroma .nt { color: #000080 }
+/* NameVariable */ .chroma .nv { color: #008080 }
+/* NameVariableClass */ .chroma .vc { color: #008080 }
+/* NameVariableGlobal */ .chroma .vg { color: #008080 }
+/* NameVariableInstance */ .chroma .vi { color: #008080 }
+/* NameVariableMagic */ .chroma .vm {  }
+/* Literal */ .chroma .l {  }
+/* LiteralDate */ .chroma .ld {  }
+/* LiteralString */ .chroma .s { color: #dd1144 }
+/* LiteralStringAffix */ .chroma .sa { color: #dd1144 }
+/* LiteralStringBacktick */ .chroma .sb { color: #dd1144 }
+/* LiteralStringChar */ .chroma .sc { color: #dd1144 }
+/* LiteralStringDelimiter */ .chroma .dl { color: #dd1144 }
+/* LiteralStringDoc */ .chroma .sd { color: #dd1144 }
+/* LiteralStringDouble */ .chroma .s2 { color: #dd1144 }
+/* LiteralStringEscape */ .chroma .se { color: #dd1144 }
+/* LiteralStringHeredoc */ .chroma .sh { color: #dd1144 }
+/* LiteralStringInterpol */ .chroma .si { color: #dd1144 }
+/* LiteralStringOther */ .chroma .sx { color: #dd1144 }
+/* LiteralStringRegex */ .chroma .sr { color: #009926 }
+/* LiteralStringSingle */ .chroma .s1 { color: #dd1144 }
+/* LiteralStringSymbol */ .chroma .ss { color: #990073 }
+/* LiteralNumber */ .chroma .m { color: #009999 }
+/* LiteralNumberBin */ .chroma .mb { color: #009999 }
+/* LiteralNumberFloat */ .chroma .mf { color: #009999 }
+/* LiteralNumberHex */ .chroma .mh { color: #009999 }
+/* LiteralNumberInteger */ .chroma .mi { color: #009999 }
+/* LiteralNumberIntegerLong */ .chroma .il { color: #009999 }
+/* LiteralNumberOct */ .chroma .mo { color: #009999 }
+/* Operator */ .chroma .o { color: #000000; font-weight: bold }
+/* OperatorWord */ .chroma .ow { color: #000000; font-weight: bold }
+/* Punctuation */ .chroma .p {  }
+/* Comment */ .chroma .c { color: #999988; font-style: italic }
+/* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic }
+/* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic }
+/* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic }
+/* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic }
+/* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold; font-style: italic }
+/* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold; font-style: italic }
+/* Generic */ .chroma .g {  }
+/* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd }
+/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
+/* GenericError */ .chroma .gr { color: #aa0000 }
+/* GenericHeading */ .chroma .gh { color: #999999 }
+/* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd }
+/* GenericOutput */ .chroma .go { color: #888888 }
+/* GenericPrompt */ .chroma .gp { color: #555555 }
+/* GenericStrong */ .chroma .gs { font-weight: bold }
+/* GenericSubheading */ .chroma .gu { color: #aaaaaa }
+/* GenericTraceback */ .chroma .gt { color: #aa0000 }
+/* GenericUnderline */ .chroma .gl { text-decoration: underline }
+/* TextWhitespace */ .chroma .w { color: #bbbbbb }
diff --git a/docs/assets/search-data.js b/docs/assets/search-data.js
new file mode 100644
index 0000000..620fc38
--- /dev/null
+++ b/docs/assets/search-data.js
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+'use strict';
+
+(function () {
+  const indexCfg = {{ with i18n "bookSearchConfig" }}
+    {{ . }};
+  {{ else }}
+   {};
+  {{ end }}
+
+  indexCfg.doc = {
+    id: 'id',
+    field: ['title', 'content'],
+    store: ['title', 'href', 'section'],
+  };
+
+  const index = FlexSearch.create('balance', indexCfg);
+  window.bookSearchIndex = index;
+
+  {{- $pages := where .Site.Pages "Kind" "in" (slice "page" "section") -}}
+  {{- $pages = where $pages "Params.booksearchexclude" "!=" true -}}
+  {{- $pages = where $pages "Content" "not in" (slice nil "") -}}
+
+  {{ range $index, $page := $pages }}
+  index.add({
+    'id': {{ $index }},
+    'href': '{{ $page.RelPermalink }}',
+    'title': {{ (partial "docs/simple-title" $page) | jsonify }},
+    'section': {{ (partial "docs/simple-title" $page.Parent) | jsonify }},
+    'content': {{ $page.Plain | jsonify }}
+  });
+  {{- end -}}
+})();
diff --git a/docs/build_docs.sh b/docs/build_docs.sh
deleted file mode 100755
index 51a5179..0000000
--- a/docs/build_docs.sh
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/usr/bin/env bash
-################################################################################
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-# limitations under the License.
-################################################################################
-
-RUBY=${RUBY:-ruby}
-GEM=${GEM:-gem}
-CACHE_DIR=${CACHE_DIR:-".rubydeps"}
-
-set -e
-cd "$(dirname ${BASH_SOURCE[0]})"
-
-DIR="`pwd`"
-
-# We need at least bundler to proceed
-if [ "`command -v bundle`" == "" ]; then
-	RUBYGEM_BINDIR=""
-
-	# Adjust the PATH to discover locally installed ruby gem binaries
-	export PATH="$(${RUBY} -e 'puts Gem.user_dir')/bin:$PATH"
-
-	if [ "`command -v bundle`" == "" ]; then
-		echo "WARN: Could not find bundle."
-		echo "Attempting to install locally. If this doesn't work, please install with 'gem install bundler'."
-
-		# install bundler locally
-		${GEM} install --user-install --no-format-executable bundler
-	fi
-fi
-
-# Install Ruby dependencies locally
-bundle install --path ${CACHE_DIR}
-
-DOCS_SRC=${DIR}
-DOCS_DST=${DOCS_SRC}/content
-
-# default jekyll command is to just build site
-JEKYLL_CMD="build"
-
-JEKYLL_CONFIG=""
-
-DOC_LANGUAGES="en zh"
-
-# if -p flag is provided, serve site on localhost
-# -i is like -p, but incremental (only rebuilds the modified file)
-# -e builds only english documentation
-# -z builds only chinese documentation 
-while getopts "piez" opt; do
-	case $opt in
-		p)
-		JEKYLL_CMD="serve --baseurl= --watch"
-		;;
-		i)
-		[[ `${RUBY} -v` =~ 'ruby 1' ]] && echo "Error: building the docs with the incremental option requires at least ruby 2.0" && exit 1
-		JEKYLL_CMD="serve --baseurl= --watch --incremental"
-		;;
-		e)
-		JEKYLL_CONFIG="--config _config.yml,_config_dev_en.yml"
-		;;
-		z)
-		JEKYLL_CONFIG="--config _config.yml,_config_dev_zh.yml"
-		;;
-		*) echo "usage: $0 [-e|-z] [-i|-p]" >&2
-		exit 1 ;;
-	esac
-done
-
-# use 'bundle exec' to insert the local Ruby dependencies
-
-if [ "${JEKYLL_CMD}" = "build" ] && [ -z "${JEKYLL_CONFIG}" ]; then
-  # run parallel builds for all languages if not serving or creating a single language only
-
-  # run processes and store pids
-  echo "Spawning parallel builds for languages: ${DOC_LANGUAGES}..."
-  pids=""
-  for lang in ${DOC_LANGUAGES}; do
-    bundle exec jekyll ${JEKYLL_CMD} --config _config.yml,_config_dev_${lang}.yml --source "${DOCS_SRC}" --destination "${DOCS_DST}_${lang}" &
-    pid=$!
-    pids="${pids} ${pid}"
-  done
-
-  # wait for all pids (since jekyll returns 0 even in case of failures, we do not parse exit codes)
-  wait ${pids}
-  rm -rf "${DOCS_DST}"
-  mkdir -p "${DOCS_DST}"
-  for lang in ${DOC_LANGUAGES}; do
-    cp -aln "${DOCS_DST}_${lang}/." "${DOCS_DST}"
-    rm -rf "${DOCS_DST}_${lang}"
-  done
-  exit 0
-else
-  bundle exec jekyll ${JEKYLL_CMD} ${JEKYLL_CONFIG} --source "${DOCS_SRC}" --destination "${DOCS_DST}"
-fi
diff --git a/docs/check_links.sh b/docs/check_links.sh
deleted file mode 100755
index 5d9f762..0000000
--- a/docs/check_links.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-################################################################################
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you under the Apache License, Version 2.0 (the
-#  "License"); you may not use this file except in compliance
-#  with the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-# limitations under the License.
-################################################################################
-
-target=${1:-"http://localhost:4000"}
-
-# Crawl the docs, ignoring robots.txt, storing nothing locally
-wget --spider -r -nd -nv -e robots=off -p -o spider.log "$target"
-
-# Abort for anything other than 0 and 4 ("Network failure")
-status=$?
-if [ $status -ne 0 ] && [ $status -ne 4 ]; then
-    exit $status
-fi
-
-# Fail the build if any broken links are found
-broken_links_str=$(grep -e 'Found [[:digit:]]\+ broken links' spider.log)
-if [ -n "$broken_links_str" ]; then
-    grep -B 1 "Remote file does not exist -- broken link!!!" spider.log
-    echo "---------------------------------------------------------------------------"
-    echo -e "$broken_links_str"
-    echo "Search for page containing broken link using 'grep -R BROKEN_PATH DOCS_DIR'"
-    exit 1
-fi
diff --git a/docs/config.toml b/docs/config.toml
new file mode 100644
index 0000000..d47ac8b
--- /dev/null
+++ b/docs/config.toml
@@ -0,0 +1,74 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+baseURL = '//ci.apache.org/projects/flink/flink-statefun-docs-master'
+languageCode = "en-us"
+title = "Apache Flink Stateful Functions"
+enableGitInfo = false
+theme = "book"
+pygmentsUseClasses = true
+
+## DO NOT MERGE THIS LINE
+refLinksErrorLevel = "WARNING"
+
+[params]
+  # Flag whether this is a stable version or not.
+  # Used for the quickstart page.
+  IsStable = false 
+
+  # Flag to indicate whether an outdated warning should be shown.
+  ShowOutDatedWarning = false
+
+  # This are the version referenced in the docs. Please only use these variables
+  # to reference a specific Flink version, because this is the only place where
+  # we change the version for the complete docs when forking of a release branch
+  # etc.
+  # The full version string as referenced in Maven (e.g. 1.2.1)
+  Version = "3.0-SNAPSHOT"
+
+  # For stable releases, leave the bugfix version out (e.g. 1.2). For snapshot
+  # release this should be the same as the regular version
+  VersionTitle = "3.0-SNAPSHOT"
+
+  # The branch for this version of Apache Flink Stateful Functions
+  Branch = "master"
+
+  # The github repository for Apache Flink Stateful Functions
+  Repo = "//github.com/apache/flink-statefun"
+
+  GithubRepo = "https://github.com/apache/flink-statefun.git"
+
+  # This suffix is appended to the Scala-dependent Maven artifact names
+  ScalaVersion = "_2.12"
+
+  ProjectHomepage = "//flink.apache.org"
+
+  # External links at the bottom
+  # of the menu
+  MenuLinks = [
+    ["Project Homepage", "//flink.apache.org"],
+    ["JavaDocs", "//ci.apache.org/projects/flink/flink-statefun-docs-master/api/java/"],
+  ]
+
+  PreviousDocs = [
+  	["2.2", "https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.2"],
+    ["2.1", "https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1"],
+	  ["2.0", "https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.2"]
+  ]
+
+[markup]
+[markup.goldmark.renderer]
+  unsafe = true
diff --git a/docs/content/_index.md b/docs/content/_index.md
new file mode 100644
index 0000000..f003909
--- /dev/null
+++ b/docs/content/_index.md
@@ -0,0 +1,48 @@
+---
+title: Apache Flink Stateful Functions 
+type: docs
+bookToc: false
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Stateful Functions Documentation
+
+Stateful Functions is an API that simplifies the building of **distributed stateful applications** with a runtime built for **serverless architectures**. It brings together the benefits of stateful stream processing - the processing of large datasets with low latency and bounded resource constraints - along with a runtime for modeling stateful entities that supports location transparency, concurrency, scaling, and resiliency.
+
+{{< img src="fig/concepts/arch_overview.svg" alt="Stateful Functions" width="50%" >}}
+
+It is designed to work with modern architectures, like cloud-native deployments and popular event-driven FaaS platforms like AWS Lambda and KNative, and to provide out-of-the-box consistent state and messaging while preserving the serverless experience and elasticity of these platforms.
+
+Stateful Functions is developed under the umbrella of [Apache Flink](flink.apache.org)
+
+## Learn By Doing
+
+If you prefer to learn by doing, start with our code [walkthrough]({{< ref "docs/getting-started/python_walkthrough" >}}). 
+It provides a step by step introduction to the API and guides you through real applications.
+
+## Learn Concepts Step By Step
+
+If you prefer to learn concepts step by step, start with our guide to main [concepts]({{< ref "docs/concepts/application-building-blocks" >}}).
+It will walk you through all the API’s and concepts to build advanced stateful systems.
+
+## Start A New Project 
+
+The [project setup]({{< ref "docs/getting-started/project-setup" >}}) instructions show you how to create a project for a new Stateful Functions application in just a few steps.
+
diff --git a/docs/concepts/index.md b/docs/content/docs/concepts/_index.md
similarity index 78%
rename from docs/concepts/index.md
rename to docs/content/docs/concepts/_index.md
index f95bf91..ce7d7db 100644
--- a/docs/concepts/index.md
+++ b/docs/content/docs/concepts/_index.md
@@ -1,12 +1,9 @@
 ---
 title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
+icon: <i class="fa fa-map-o title appetizer" aria-hidden="true"></i>
+bold: true
+bookCollapseSection: true
+weight: 2
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -25,4 +22,4 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+-->
\ No newline at end of file
diff --git a/docs/concepts/application-building-blocks.md b/docs/content/docs/concepts/application-building-blocks.md
similarity index 80%
rename from docs/concepts/application-building-blocks.md
rename to docs/content/docs/concepts/application-building-blocks.md
index 81d7628..4bf236c 100644
--- a/docs/concepts/application-building-blocks.md
+++ b/docs/content/docs/concepts/application-building-blocks.md
@@ -1,9 +1,9 @@
 ---
-title: Application Building Blocks 
-nav-id: building-blocks
-nav-pos: 1
-nav-title: Application Building Blocks
-nav-parent_id: concepts
+title: Application Building Blocks
+weight: 2
+type: docs
+aliases:
+  - /concepts/application-building-blocks.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,18 +24,16 @@
 under the License.
 -->
 
-Stateful Functions provides a framework for building event drivent applications. Here, we explain important aspects of Stateful Function’s architecture.
+# Application Building Blocks
 
-* This will be replaced by the TOC
-{:toc}
+Stateful Functions provides a framework for building event drivent applications. Here, we explain important aspects of Stateful Function’s architecture.
 
 ## Event Ingress
 
 Stateful Function applications sit squarely in the event driven space, so the natural place to start is with getting events into the system.
 
-<p class="text-center">
-    <img width="80%" src="{{ site.baseurl }}/fig/concepts/statefun-app-ingress.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/statefun-app-ingress.svg" >}}
+
 
 In stateful functions, the component that ingests records into the system is called an event ingress.
 This can be anything from a Kafka topic, to a messsage queue, to an http request - anything that can get data into the system and trigger the intitial functions to begin computation.
@@ -44,9 +42,7 @@
 
 At the core of the diagram are the namesake stateful functions.
 
-<p class="text-center">
-	<img width="80%" src="{{ site.baseurl }}/fig/concepts/statefun-app-functions.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/statefun-app-functions.svg" >}}
 
 Think of these as the building blocks for your service.
 They can message each other arbitrarily, which is one way in which this framework moves away from the traditional stream processing view of the world.
@@ -59,9 +55,8 @@
 
 The first is that all functions have locally embedded state, known as persisted states.
 
-<p class="text-center">
-	<img width="80%" src="{{ site.baseurl }}/fig/concepts/statefun-app-state.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/statefun-app-state.svg" >}}
+
 
 One of Apache Flink's core strengths is its ability to provide fault-tolerant local state.
 When inside a function, while it is performing some computation, you are always working with local state in local variables.
@@ -70,9 +65,7 @@
 
 For both state and messaging, Stateful Functions is able to provide the exactly-once guarantees users expect from a modern data processessing framework.
 
-<p class="text-center">
-    <img width="80%" src="{{ site.baseurl }}/fig/concepts/statefun-app-fault-tolerance.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/statefun-app-fault-tolerance.svg" >}}
 
 In the case of failure, the entire state of the world (both persisted states and messages) are rolled back to simulate completely failure free execution.
 
@@ -82,9 +75,7 @@
 
 Finally, applications can output data to external systems via event egresses.
 
-<p class="text-center">
-    <img width="80%" src="{{ site.baseurl }}/fig/concepts/statefun-app-egress.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/statefun-app-egress.svg" >}}
 
 Of course, functions perform arbitrary computation and can do whatever they like, which includes making RPC calls and connecting to other systems.
 By using an event egress, applications can leverage pre-built integrations built on-top of the Apache Flink connector ecosystem.
diff --git a/docs/concepts/distributed_architecture.md b/docs/content/docs/concepts/distributed_architecture.md
old mode 100755
new mode 100644
similarity index 86%
rename from docs/concepts/distributed_architecture.md
rename to docs/content/docs/concepts/distributed_architecture.md
index e38f1ec..22dcf70
--- a/docs/concepts/distributed_architecture.md
+++ b/docs/content/docs/concepts/distributed_architecture.md
@@ -1,9 +1,9 @@
 ---
-title: Distributed Architecture 
-nav-id: dist-arch
-nav-pos: 3
-nav-title: Architecture
-nav-parent_id: concepts
+title: Architecture
+weight: 4
+type: docs
+aliases:
+  - /concepts/distributed_architecture.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,18 +24,15 @@
 under the License.
 -->
 
-A Stateful Functions deployment consists of a few components interacting together. Here we describe these pieces and their relationship to each other and the Apache Flink runtime.
+# Distributed Architecture
 
-* This will be replaced by the TOC
-{:toc}
+A Stateful Functions deployment consists of a few components interacting together. Here we describe these pieces and their relationship to each other and the Apache Flink runtime.
 
 ## High-level View
 
 A *Stateful Functions* deployment consists of a set of **Apache Flink Stateful Functions** processes and, optionally, various deployments that execute remote functions.
 
-<p class="text-center">
-    <img width="80%" src="{{ site.baseurl }}/fig/concepts/arch_overview.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/arch_overview.svg" >}}
 
 The Flink worker processes (TaskManagers) receive the events from the ingress systems (Kafka, Kinesis, etc.) and route them to the target functions. They invoke the functions and route the resulting messages to the next respective target functions. Messages designated for egress are written to an egress system (again, Kafka, Kinesis, ...).
 
@@ -44,9 +41,7 @@
 The heavy lifting is done by the Apache Flink processes, which manage the state, handle the messaging, and invoke the stateful functions.
 The Flink cluster consists typically of one master and multiple workers (TaskManagers).
 
-<p class="text-center">
-    <img width="80%" src="{{ site.baseurl }}/fig/concepts/arch_components.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/arch_components.svg" >}}
 
 In addition to the Apache Flink processes, a full deployment requires [ZooKeeper](https://zookeeper.apache.org/) (for [master failover](https://ci.apache.org/projects/flink/flink-docs-stable/ops/jobmanager_high_availability.html)) and bulk storage (S3, HDFS, NAS, GCS, Azure Blob Store, etc.) to store Flink's [checkpoints](https://ci.apache.org/projects/flink/flink-docs-master/concepts/stateful-stream-processing.html#checkpointing). In turn, the deployment requires no database, and Flink processes do not require persistent volumes.
 
@@ -69,12 +64,9 @@
 
 Function invocations happen through an HTTP / gRPC protocol and go through a service that routes invocation requests to any available endpoint, for example a Kubernetes (load-balancing) service, the AWS request gateway for Lambda, etc. Because invocations are self-contained (contain message, state, access to timers, etc.) the target functions can be treated like any stateless application.
 
-<p class="text-center">
-	<img width="80%" src="{{ site.baseurl }}/fig/concepts/arch_funs_remote.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/arch_funs_remote.svg" >}}
 
-
-Refer to the documentation on the [Python SDK]({{ site.baseurl }}/sdk/python.html) and [remote modules]({{ site.baseurl }}/sdk/index.html#remote-module) for details. 
+Refer to the documentation on the [Python SDK]({{< ref "docs/sdk/python" >}}) and [remote modules]({{< ref "docs/sdk/overview#remote-module" >}}) for details. 
 
 #### Co-located Functions
 
@@ -82,9 +74,7 @@
 
 This mode supports different languages while avoiding to route invocations through a Service/LoadBalancer, but it cannot scale the state and compute parts independently.
 
-<p class="text-center">
-	<img width="80%" src="{{ site.baseurl }}/fig/concepts/arch_funs_colocated.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/arch_funs_colocated.svg" >}}
 
 This style of deployment is similar to how Flink's Table API and API Beam's portability layer deploy and execute non-JVM functions.
 
@@ -92,8 +82,6 @@
 
 *Embedded Functions* are similar to the execution mode of Stateful Functions 1.0 and to Flink's Java/Scala stream processing APIs. Functions are run in the JVM and are directly invoked with the messages and state access. This is the most performant way, though at the cost of only supporting JVM languages. Updates to functions mean updating the Flink cluster.
 
-<p class="text-center">
-	<img width="80%" src="{{ site.baseurl }}/fig/concepts/arch_funs_embedded.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/arch_funs_embedded.svg" >}}
 
 Following the database analogy, Embedded Functions are a bit like *Stored Procedures*, but in a more principled way: The Functions here are normal Java/Scala/Kotlin functions implementing standard interfaces, and can be developed/tested in any IDE.
diff --git a/docs/concepts/logical.md b/docs/content/docs/concepts/logical.md
similarity index 92%
rename from docs/concepts/logical.md
rename to docs/content/docs/concepts/logical.md
index 4ed47fe..c3e9795 100644
--- a/docs/concepts/logical.md
+++ b/docs/content/docs/concepts/logical.md
@@ -1,9 +1,9 @@
 ---
-title: Logical Functions 
-nav-id: logical-functions
-nav-pos: 2
-nav-title: Logical Functions
-nav-parent_id: concepts
+title: Logical Functions
+weight: 3
+type: docs
+aliases:
+  - /concepts/logical.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,12 +24,13 @@
 under the License.
 -->
 
+# Logical Functions
+
 Stateful Function's are allocated logically, which means the system can support an unbounded number of instances with a finite amount of resources.
 Logical instances do not use CPU, memory, or threads when not actively being invoked, so there is no theoretical upper limit on the number of instances that can created.
 Users are encouraged to model their applications as granularly as possible, based on what makes the most sense for their application, instead of desigining applications around resource constraints.
 
-* This will be replaced by the TOC
-{:toc}
+
 
 ## Function Address
 
@@ -37,9 +38,7 @@
 But in a Stateful Functions application, function instances are virtual and their runtime location is not exposed to the user.
 Instead, an ``Address`` is used to reference a specific stateful function in the system.
 
-<p class="text-center">
-    <img width="80%" src="{{ site.baseurl }}/fig/concepts/address.svg"/>
-</p>
+{{< img width="80%" src="/fig/concepts/address.svg" >}}
 
 An address is made of two components, a ``FunctionType`` and ``ID``.
 A function type is similar to a class in an object-oriented language; it declares what sort of function the address references.
diff --git a/docs/concepts/index.md b/docs/content/docs/deployment-and-operations/_index.md
similarity index 76%
copy from docs/concepts/index.md
copy to docs/content/docs/deployment-and-operations/_index.md
index f95bf91..71a1574 100644
--- a/docs/concepts/index.md
+++ b/docs/content/docs/deployment-and-operations/_index.md
@@ -1,12 +1,9 @@
 ---
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
+title: Deployment and Operations
+icon: <i class="fa fa-cogs title maindish" aria-hidden="true"></i>
+bold: true
+bookCollapseSection: true
+weight: 5
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -25,4 +22,4 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+-->
\ No newline at end of file
diff --git a/docs/deployment-and-operations/configurations.md b/docs/content/docs/deployment-and-operations/configurations.md
similarity index 96%
rename from docs/deployment-and-operations/configurations.md
rename to docs/content/docs/deployment-and-operations/configurations.md
index 46b16d3..7aa86a6 100644
--- a/docs/deployment-and-operations/configurations.md
+++ b/docs/content/docs/deployment-and-operations/configurations.md
@@ -1,9 +1,9 @@
 ---
 title: Configurations
-nav-id: configurations
-nav-pos: 2
-nav-title: Configurations
-nav-parent_id: deployment-and-ops
+weight: 3
+type: docs
+aliases:
+  - /deployment-and-operations/configurations.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,6 +24,8 @@
 under the License.
 -->
 
+# Configurations
+
 Stateful Functions includes a small number of SDK specific configurations.
 These may be set through your job's ``flink-conf.yaml``.
 
diff --git a/docs/deployment-and-operations/metrics.md b/docs/content/docs/deployment-and-operations/metrics.md
similarity index 98%
rename from docs/deployment-and-operations/metrics.md
rename to docs/content/docs/deployment-and-operations/metrics.md
index 4b470c5..6c81a5d 100644
--- a/docs/deployment-and-operations/metrics.md
+++ b/docs/content/docs/deployment-and-operations/metrics.md
@@ -1,9 +1,9 @@
 ---
 title: Metrics
-nav-id: metrics
-nav-pos: 3
-nav-title: Metrics
-nav-parent_id: deployment-and-ops
+weight: 4
+type: docs
+aliases:
+  - /deployment-and-operations/metrics.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,6 +24,8 @@
 under the License.
 -->
 
+# Metrics
+
 Stateful Functions includes a number of SDK specific metrics.
 Along with the [standard metric scopes](https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/metrics.html#system-scope), Stateful Functions supports ``Function Scope`` which one level below operator scope.
 
diff --git a/docs/deployment-and-operations/index.md b/docs/content/docs/deployment-and-operations/overview.md
similarity index 85%
rename from docs/deployment-and-operations/index.md
rename to docs/content/docs/deployment-and-operations/overview.md
index d922a85..95ef7e5 100644
--- a/docs/deployment-and-operations/index.md
+++ b/docs/content/docs/deployment-and-operations/overview.md
@@ -1,11 +1,10 @@
 ---
-title: Deployment and Operations
-nav-id: deployment-and-ops
-nav-pos: 5
-nav-title: 'Deployment and Operations'
-nav-parent_id: root
-nav-show_overview: true 
-permalink: /deployment-and-operations/index.html
+title: 'Overview'
+weight: 1
+type: docs
+bookToc: false
+aliases:
+  - /deployment-and-operations/
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -26,6 +25,8 @@
 under the License.
 -->
 
+# Deployment and Operations
+
 Stateful Functions is a framework built on top of the Apache Flink runtime, which means it inherits Flink's deployment and operations model, and there are no new concepts you need to learn.
 Read through the official [Apache Flink documentation](https://ci.apache.org/projects/flink/flink-docs-stable/) to learn how to run and maintain an application in production.
 The following pages outline Stateful Functions' specific configurations and metrics.
\ No newline at end of file
diff --git a/docs/content/docs/deployment-and-operations/packaging.md b/docs/content/docs/deployment-and-operations/packaging.md
new file mode 100644
index 0000000..a7107c7
--- /dev/null
+++ b/docs/content/docs/deployment-and-operations/packaging.md
@@ -0,0 +1,89 @@
+---
+title: Packaging For Deployment
+weight: 2
+type: docs
+aliases:
+  - /deployment-and-operations/packaging.html
+---
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Packaging For Deployment
+
+Stateful Functions applications can be packaged as either standalone applications or Flink jobs that can be submitted to a cluster.
+
+## Images
+
+The recommended deployment mode for Stateful Functions applications is to build a Docker image.
+This way, user code does not need to package any Apache Flink components.
+The provided base image allows teams to package their applications with all the necessary runtime dependencies quickly.
+
+Below is an example Dockerfile for building a Stateful Functions image with both an [embedded module]({{ site.baseurl }}/sdk/modules.html#embedded-module) and a [remote module]({{ site.baseurl }}/sdk/modules.html#remote-module) for an application called ``statefun-example``.
+
+```dockerfile
+FROM flink-statefun:{{< version >}}
+
+RUN mkdir -p /opt/statefun/modules/statefun-example
+RUN mkdir -p /opt/statefun/modules/remote
+
+COPY target/statefun-example*jar /opt/statefun/modules/statefun-example/
+COPY module.yaml /opt/statefun/modules/remote/module.yaml
+```
+
+{{< stable >}}
+{{< hint info >}}
+The Flink community is currently waiting for the official Docker images to be published to Docker Hub.
+In the meantime, Ververica has volunteered to make Stateful Functions' images available via their public registry: 
+
+```docker
+FROM ververica/flink-statefun:{{< version >}}
+```
+
+You can follow the status of Docker Hub contribution [here](https://github.com/docker-library/official-images/pull/7749).
+{{< /hint >}}
+{{< /stable >}}
+{{< unstable >}}
+{{< hint info >}}
+The Flink community does not publish images for snapshot versions.
+You can build this version locally by cloning the [repo](https://github.com/apache/flink-statefun) and following the instructions in `tools/docker/README.md`
+{{< /hint >}}
+{{< /unstable >}}
+
+## Flink Jar
+
+If you prefer to package your job to submit to an existing Flink cluster, simply include ``statefun-flink-distribution`` as a dependency to your application.
+
+{{< artifact statefun-flink-distribution >}}
+
+It includes all of Stateful Functions' runtime dependencies and configures the application's main entry-point.
+
+{{< hint info >}}
+**Attention:** The distribution must be bundled in your application fat JAR so that it is on Flink's [user code class loader](https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/debugging_classloading.html#inverted-class-loading-and-classloader-resolution-order)
+{{< /hint >}}
+
+```bash
+$ ./bin/flink run -c org.apache.flink.statefun.flink.core.StatefulFunctionsJob ./statefun-example.jar
+```
+
+The following configurations are strictly required for running StateFun application.
+
+```yaml
+classloader.parent-first-patterns.additional: org.apache.flink.statefun;org.apache.kafka;com.google.protobuf
+```
+
diff --git a/docs/deployment-and-operations/state-bootstrap.md b/docs/content/docs/deployment-and-operations/state-bootstrap.md
similarity index 82%
rename from docs/deployment-and-operations/state-bootstrap.md
rename to docs/content/docs/deployment-and-operations/state-bootstrap.md
index 3e4a72d..ba25f4d 100644
--- a/docs/deployment-and-operations/state-bootstrap.md
+++ b/docs/content/docs/deployment-and-operations/state-bootstrap.md
@@ -1,9 +1,9 @@
 ---
 title: State Bootstrapping
-nav-id: bootstrapping
-nav-pos: 4
-nav-title: State Bootstrapping
-nav-parent_id: deployment-and-ops
+weight: 5
+type: docs
+aliases:
+  - /deployment-and-operations/state-bootstrap.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,6 +24,8 @@
 under the License.
 -->
 
+# State Bootstrapping
+
 Often times applications require some intial state provided by historical data in a file, database, or other system.
 Because state is managed by Apache Flink's snapshotting mechanism, for Stateful Function applications, that means
 writing the intial state into a [savepoint](https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/savepoints.html) that can be used to start the job.
@@ -31,25 +33,12 @@
 
 To get started, include the following libraries in your application:
 
-{% highlight xml %}
-<dependency>
-  <groupId>org.apache.flink</groupId>
-  <artifactId>statefun-flink-state-processor</artifactId>
-  <version>{{ site.version }}</version>
-</dependency>
-<dependency>
-  <groupId>org.apache.flink</groupId>
-  <artifactId>flink-state-processor-api_{{ site.scala_version }}</artifactId>
-  <version>{{ site.flink_version }}</version>
-</dependency>
-{% endhighlight %}
+{{< artifact statefun-flink-state-processor >}}
+{{< artifact flink-state-processor-api withScalaVersion >}}
 
-<div class="alert alert-info">
-  <strong>Attention:</strong> The savepoint creator currently only supports initializing the state for Java modules.
-</div>
-
-* This will be replaced by the TOC
-{:toc}
+{{< hint warning >}}
+**Attention:** The savepoint creator currently only supports initializing the state for Java modules.
+{{< /hint >}}
 
 ## State Bootstrap Function
 
@@ -61,7 +50,7 @@
 
 For example, consider the following state bootstrap function:
 
-{% highlight java %}
+```java
 public class MyStateBootstrapFunction implements StateBootstrapFunction {
 
 	@Persisted
@@ -72,7 +61,7 @@
 		state.set(extractStateFromInput(input));
 	}
  }
-{% endhighlight %}
+```
 
 Assume that this bootstrap function was provided for function type ``MyFunctionType``, and the id of the bootstrap function instance was ``id-13``. 
 The function writes persisted state of name ``my-state`` using the given bootstrap data. 
@@ -83,16 +72,16 @@
 Savepoints are created by defining certain metadata, such as max parallelism and state backend.
 The default state backend is [RocksDB](https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/state_backends.html#the-rocksdbstatebackend).
 
-{% highlight java %}
+```java
 int maxParallelism = 128;
 StatefulFunctionsSavepointCreator newSavepoint = new StatefulFunctionsSavepointCreator(maxParallelism);
-{% endhighlight %}
+```
 
 Each input data set is registered in the savepoint creator with a [router]({{ site.baseurl }}/io-module/index.html#router) that routes each record to zero or more function instances.
 You may then register any number of function types to the savepoint creator, similar to how functions are registered within a stateful functions module.
 Finally, specify an output location for the resulting savepoint.
 
-{% highlight java %}
+```java
 // Read data from a file, database, or other location
 final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
 
@@ -110,7 +99,7 @@
 newSavepoint.write("file:///savepoint/path/");
 
 env.execute();
-{% endhighlight %}
+```
 
 For full details of how to use Flink's ``DataSet`` API, please check the official [documentation](https://ci.apache.org/projects/flink/flink-docs-stable/dev/batch/).
 
@@ -118,21 +107,21 @@
 
 After creating a new savpepoint, it can be used to provide the initial state for a Stateful Functions application.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Image Deployment" markdown="1">
+{{< tabs "153bd8f9-f442-4796-9b55-d534005f7bdf" >}}
+{{< tab "Image Deployment" >}}
 When deploying based on an image, pass the ``-s`` command to the Flink [JobMaster](https://ci.apache.org/projects/flink/flink-docs-stable/concepts/glossary.html#flink-master) image.
-{% highlight yaml %}
+```yaml
 version: "2.1"
 services:
   master:
     image: my-statefun-application-image
     command: -s file:///savepoint/path
-{% endhighlight %}
-</div>
-<div data-lang="Session Cluster" markdown="1">
+```
+{{< /tab >}}
+{{< tab "Session Cluster" >}}
 When deploying to a Flink session cluster, specify the savepoint argument in the Flink CLI.
-{% highlight bash %}
+```bash
 $ ./bin/flink run -s file:///savepoint/path stateful-functions-job.jar
-{% endhighlight %}
-</div>
-</div>
\ No newline at end of file
+```
+{{< /tab >}}
+{{< /tabs >}}
\ No newline at end of file
diff --git a/docs/getting-started/index.md b/docs/content/docs/getting-started/_index.md
similarity index 76%
rename from docs/getting-started/index.md
rename to docs/content/docs/getting-started/_index.md
index 6ad8ec4..37ee9ae 100644
--- a/docs/getting-started/index.md
+++ b/docs/content/docs/getting-started/_index.md
@@ -1,12 +1,9 @@
 ---
-title: "Getting Started"
-nav-id: getting-started
-nav-title: '<i class="fa fa-rocket title appetizer" aria-hidden="true"></i> Getting Started'
-nav-parent_id: root
-section-break: true
-nav-show_overview: false 
-nav-pos: 1
-always-expand: true
+title: Getting Started
+icon: <i class="fa fa-rocket title appetizer" aria-hidden="true"></i>
+bold: true
+bookCollapseSection: true
+weight: 1
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -25,4 +22,4 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+-->
\ No newline at end of file
diff --git a/docs/getting-started/java_walkthrough.md b/docs/content/docs/getting-started/java_walkthrough.md
similarity index 83%
rename from docs/getting-started/java_walkthrough.md
rename to docs/content/docs/getting-started/java_walkthrough.md
index 9f650ce..7de9e18 100644
--- a/docs/getting-started/java_walkthrough.md
+++ b/docs/content/docs/getting-started/java_walkthrough.md
@@ -1,9 +1,9 @@
 ---
-title: "Java Walkthrough"
-nav-id: java-walkthrough
-nav-title: 'Java Walkthrough'
-nav-parent_id: getting-started
-nav-pos: 3
+title: 'Java Walkthrough'
+weight: 4
+type: docs
+aliases:
+  - /getting-started/java_walkthrough.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,18 +24,17 @@
 under the License.
 -->
 
+# Java Walkthrough
+
 Like all great introductions in software, this walkthrough will start at the beginning: saying hello.
 The application will run a simple function that accepts a request and responds with a greeting.
 It will not attempt to cover all the complexities of application development, but instead focus on building a stateful function — which is where you will implement your business logic.
 
-* This will be replaced by the TOC
-{:toc}
-
 ## A Basic Hello
 
 Greeting actions are triggered by consuming, routing and passing messages that are defined using ProtoBuf.
 
-{% highlight proto %}
+```proto
 syntax = "proto3";
 
 message GreetRequest {
@@ -46,11 +45,11 @@
     string who = 1;
     string greeting = 2;
 }
-{% endhighlight %}
+```
 
-Under the hood, messages are processed using [stateful functions]({{ site.baseurl }}/sdk/java.html), by definition any class that implements the ``StatefulFunction`` interface.
+Under the hood, messages are processed using [stateful functions]({{< ref "docs/sdk/java" >}}), by definition any class that implements the ``StatefulFunction`` interface.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.examples.greeter;
 
 import org.apache.flink.statefun.sdk.Context;
@@ -70,17 +69,17 @@
         context.send(GreetingConstants.GREETING_EGRESS_ID, response);
     }
 }
-{% endhighlight %}
+```
 
 
-This function takes in a request and sends a response to an external system (or [egress]({{ site.baseurl }}/io-module/index.html#egress)).
+This function takes in a request and sends a response to an external system (or [egress]({{< ref "docs/io-module/overview#egress" >}})).
 While this is nice, it does not show off the real power of stateful functions: handling state.
 
 ## A Stateful Hello
 
 Suppose you want to generate a personalized response for each user depending on how many times they have sent a request.
 
-{% highlight java %}
+```java
 private static String greetText(String name, int seen) {
     switch (seen) {
         case 0:
@@ -95,7 +94,7 @@
             return String.format("Hello at the %d-th time %s", seen + 1, name);
     }
 }
-{% endhighlight %}
+```
 
 ## Routing Messages
 
@@ -104,10 +103,10 @@
 However, stateful functions are virtual and do not consume any CPU or memory when not actively being invoked.
 That means your application can create as many functions as necessary — in this case, users — without worrying about resource consumption.
 
-Whenever data is consumed from an external system (or [ingress]({{ site.baseurl }}/io-module/index.html#ingress)), it is routed to a specific function based on a given function type and identifier.
+Whenever data is consumed from an external system (or [ingress]({{< ref "docs/io-module/overview#ingress" >}}), it is routed to a specific function based on a given function type and identifier.
 The function type represents the class of function to be invoked, such as the Greeter function, while the identifier (``GreetRequest#getWho``) scopes the call to a specific virtual instance based on some key.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.examples.greeter;
 
 import org.apache.flink.statefun.examples.kafka.generated.GreetRequest;
@@ -120,17 +119,17 @@
         downstream.forward(GreetingConstants.GREETER_FUNCTION_TYPE, message.getWho(), message);
     }
 }
-{% endhighlight %}
+```
 
 So, if a message for a user named John comes in, it will be shipped to John’s dedicated Greeter function.
 In case there is a following message for a user named Jane, a new instance of the Greeter function will be spawned.
 
 ## Persistence
 
-[Persisted value]({{ site.baseurl }}/sdk/java.html#persistence) is a special data type that enables stateful functions to maintain fault-tolerant state scoped to their identifiers, so that each instance of a function can track state independently.
+[Persisted value]({{< ref "docs/sdk/java#persistence" >}}) is a special data type that enables stateful functions to maintain fault-tolerant state scoped to their identifiers, so that each instance of a function can track state independently.
 To “remember” information across multiple greeting messages, you then need to associate a persisted value field (``count``) to the Greet function. For each user, functions can now track how many times they have been seen.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.examples.greeter;
 
 import org.apache.flink.statefun.sdk.Context;
@@ -165,23 +164,24 @@
             .build();
     }
 }
-{% endhighlight %}
+```
 
 Each time a message is processed, the function computes a personalized message for that user.
 It reads and updates the number of times that user has been seen and sends a greeting to the egress.
 
-You can check the full code for the application described in this walkthrough [here]({{ site.github_url }}/tree/{{ site.github_branch }}/statefun-examples/statefun-greeter-example).
+You can check the full code for the application described in this walkthrough 
+{{< gh_link file="/statefun-examples/statefun-greeter-example" name="here" >}}.
 In particular, take a look at the module ``GreetingModule``, which is the main entry point for the full application, to see how everything gets tied together.
 You can run this example locally using the provided Docker setup.
 
-{% highlight bash %}
+```bash
 $ docker-compose build 
 $ docker-compose up
-{% endhighlight %}
+```
 
 Then, send some messages to the topic "names", and observe what comes out of "greetings".
 
-{% highlight bash %}
+```bash
 $ docker-compose exec kafka-broker kafka-console-producer.sh \
     --broker-list localhost:9092 \
     --topic names
@@ -191,15 +191,15 @@
      --isolation-level read_committed \
      --from-beginning \
      --topic greetings
-{% endhighlight %}
+```
 
-<p class="text-center">
-    <img width="80%" src="{{ site.baseurl }}/fig/greeter-function.gif"/>
-</p>
+
+{{< img width="80%" src="/fig/greeter-function.gif" >}}
+
 
 ## Want To Go Further?
 
 This Greeter never forgets a user.
 Try and modify the function so that it will reset the ``count`` for any user that spends more than 60 seconds without interacting with the system.
 
-Check out the [Java SDK]({{ site.baseurl }}/sdk/java.html) page for more information on how to achieve this.
+Check out the [Java SDK]({{< ref "docs/sdk/java#persistence" >}}) page for more information on how to achieve this.
diff --git a/docs/getting-started/project-setup.md b/docs/content/docs/getting-started/project-setup.md
similarity index 86%
rename from docs/getting-started/project-setup.md
rename to docs/content/docs/getting-started/project-setup.md
index 34fc281..f1f2f68 100644
--- a/docs/getting-started/project-setup.md
+++ b/docs/content/docs/getting-started/project-setup.md
@@ -1,9 +1,9 @@
 ---
-title: "Project Setup"
-nav-id: projectsetup 
-nav-title: 'Project Setup'
-nav-parent_id: getting-started
-nav-pos: 1
+title: 'Project Setup'
+weight: 2
+type: docs
+aliases:
+  - /getting-started/project-setup.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,32 +24,28 @@
 under the License.
 -->
 
+# Project Setup
+
 ## Dependency 
 
 You can quickly get started building a Stateful Functions applications by adding the ``statefun-sdk`` to an existing project or using the provided maven archetype.
 
-{% highlight xml %}
-<dependency>
-    <groupId>org.apache.flink</groupId>
-    <artifactId>statefun-sdk</artifactId>
-    <version>{{ site.version }}</version>
-</dependency>
-{% endhighlight %}
+{{< artifact statefun-sdk >}}
 
 ## Maven Archetype
 
-{% highlight bash %}
+```bash
 $ mvn archetype:generate \
     -DarchetypeGroupId=org.apache.flink \
     -DarchetypeArtifactId=statefun-quickstart \
-    -DarchetypeVersion={{ site.version }}
-{% endhighlight %}
+    -DarchetypeVersion={{< version >}}
+```
 
 This allows you to name your newly created project.
 It will interactively ask you for the groupId, artifactId, and package name.
 There will be a new directory with the same name as your artifact id.
 
-{% highlight bash %}
+```bash
 $ tree statefun-quickstart/
   statefun-quickstart/
   ├── Dockerfile
@@ -66,7 +62,7 @@
               └── META-INF
                 └── services
                   └── org.apache.flink.statefun.sdk.spi.StatefulFunctionModule
-{% endhighlight %}
+```
 
 The project contains four files:
 
diff --git a/docs/getting-started/python_walkthrough.md b/docs/content/docs/getting-started/python_walkthrough.md
similarity index 88%
rename from docs/getting-started/python_walkthrough.md
rename to docs/content/docs/getting-started/python_walkthrough.md
index 920010d..12b9b49 100644
--- a/docs/getting-started/python_walkthrough.md
+++ b/docs/content/docs/getting-started/python_walkthrough.md
@@ -1,9 +1,9 @@
 ---
-title: "Python Walkthrough"
-nav-id: python-walkthrough
-nav-title: 'Python Walkthrough'
-nav-parent_id: getting-started
-nav-pos: 2
+title: 'Python Walkthrough'
+weight: 3
+type: docs
+aliases:
+  - /getting-started/python_walkthrough.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,12 +24,13 @@
 under the License.
 -->
 
+# Python Walkthrough
+
 Stateful Functions offers a platform for building robust, stateful event-driven applications.
 It provides fine-grained control over state and time, which allows for the implementation of advanced systems.
 In this step-by-step guide you’ll learn how to build a stateful applications with the Stateful Functions API.
 
-* This will be replaced by the TOC
-{:toc}
+
 
 ## What Are You Building?
 
@@ -50,22 +51,24 @@
 
 If you want to follow along, you will require a computer with [Python 3](https://www.python.org/) along with [Docker](https://www.docker.com/).
 
-{% panel **Note:** Each code block within this walkthrough may not contain the full surrounding class for brevity.
-The full code is available on [at the bottom of this page](#full-application). %}
+{{< hint info >}}
+Each code block within this walkthrough may not contain the full surrounding class for brevity.
+The full code is available on [at the bottom of this page](#full-application).
+{{< /hint >}}
 
-You can download a zip file with a skeleton project by clicking [here]({{ site.baseurl }}/downloads/walkthrough.zip).
+You can download a zip file with a skeleton project by clicking [here](/downloads/walkthrough.zip).
 
-{% unless site.is_stable %}
-<p style="border-radius: 5px; padding: 5px" class="bg-danger">
-    <b>Note</b>: The Stateful Functions project does not publish snapshot versions of the Python SDK to PyPI.
-    Please consider using a stable version of this guide.
-</p>
-{% endunless %}
+{{< unstable >}}
+{{< hint warning >}}
+The Stateful Functions project does not publish snapshot versions of the Python SDK to PyPI.
+Please consider using a stable version of this guide.
+{{< /hint >}}
+{{< /unstable >}}
 
 After unzipping the package, you will find a number of files.
 These include dockerfiles and data generators to run this walkthrough in a local self contained environment.
 
-{% highlight bash %}
+```bash
 $ tree statefun-walkthrough
 statefun-walkthrough
 ├── Dockerfile
@@ -81,7 +84,7 @@
 │   ├── messages_pb2.py
 │   └── requirements.txt
 └── module.yaml
-{% endhighlight %}
+```
 
 ## Start With Events
 
@@ -91,7 +94,7 @@
 The response will be returned with an appropriate greeting.
 The third type, `SeenCount`, is a utility class that will be used latter on to help manage the number of times a user has been seen so far.
 
-{% highlight proto %}
+```proto
 syntax = "proto3";
 
 package example;
@@ -113,19 +116,19 @@
     // The number of times a users has been seen so far
     int64 seen = 1;
 }
-{% endhighlight %}
+```
 
 
 ## Our First Function
 
-Under the hood, messages are processed using [stateful functions]({{ site.baseurl }}/sdk/python.html), which is any two argument function that is bound to the ``StatefulFunction`` runtime.
+Under the hood, messages are processed using [stateful functions]({{< ref "docs/sdk/python" >}}), which is any two argument function that is bound to the ``StatefulFunction`` runtime.
 Functions are bound to the runtime with the `@function.bind` decorator.
 When binding a function, it is annotated with a function type.
 This is the name used to reference this function when sending it messages.
 
 When you open the file `greeter/greeter.py` you should see the following code.
 
-{% highlight python %}
+```python
 from statefun import StatefulFunctions
 
 functions = StatefulFunctions()
@@ -133,10 +136,10 @@
 @functions.bind("example/greeter")
 def greet(context, greet_request):
     pass
-{% endhighlight %}
+```
 
 A stateful function takes two arguments, a context and message. 
-The [context]({{ site.baseurl }}/sdk/python.html#context-reference) provides access to stateful functions runtime features such as state management and message passing.
+The [context]({{< ref "docs/sdk/python#context-reference" >}}) provides access to stateful functions runtime features such as state management and message passing.
 You will explore some of these features as you progress through this walkthrough. 
 
 The other parameter is the input message that has been passed to this function.
@@ -144,7 +147,7 @@
 If a function only accepts a known type, you can override the message type using Python 3 type syntax.
 This way you do not need to unwrap the message or check types.
 
-{% highlight python %}
+```python
 from messages_pb2 import GreetRequest
 from statefun import StatefulFunctions
 
@@ -153,17 +156,17 @@
 @functions.bind("example/greeter")
 def greet(context, greet_request: GreetRequest):
     pass
-{% endhighlight %}
+```
 
 ## Sending A Response
 
 Stateful Functions accept messages and can also send them out.
-Messages can be sent to other functions, as well as external systems (or [egress]({{ site.baseurl }}/io-module/index.html#egress)).
+Messages can be sent to other functions, as well as external systems (or [egress]({{< ref "docs/io-module/overview#egress" >}}).
 
 One popular external system is [Apache Kafka](http://kafka.apache.org/).
 As a first step, lets update our function in `greeter/greeter.py` to respond to each input by sending a greeting to a Kafka topic.
 
-{% highlight python %}
+```python
 from messages_pb2 import GreetRequest, GreetResponse
 from statefun import StatefulFunctions
 
@@ -177,7 +180,7 @@
     
     egress_message = kafka_egress_record(topic="greetings", key=greet_request.name, value=response)
     context.pack_and_send_egress("example/greets", egress_message)
-{% endhighlight %} 
+``` 
 
 For each message, a response is constructed and sent to a Kafka topic called `greetings` partitioned by `name`.
 The `egress_message` is sent to a an `egress` named `example/greets`.
@@ -188,7 +191,7 @@
 This is a great start, but does not show off the real power of stateful functions - working with state.
 Suppose you want to generate a personalized response for each user depending on how many times they have sent a request.
 
-{% highlight python %}
+```python
 def compute_greeting(name, seen):
     """
     Compute a personalized greeting, based on the number of times this @name had been seen before.
@@ -204,12 +207,12 @@
     response.greeting = greeting
 
     return response
-{% endhighlight %}
+```
 
 To “remember” information across multiple greeting messages, you then need to associate a persisted value field (``seen_count``) to the Greet function.
 For each user, functions can now track how many times they have been seen.
 
-{% highlight python %}
+```python
 @functions.bind("example/greeter")
 def greet(context, greet_request: GreetRequest):
     state = context.state('seen_count').unpack(SeenCount)
@@ -224,7 +227,7 @@
 
     egress_message = kafka_egress_record(topic="greetings", key=greet_request.name, value=response)
     context.pack_and_send_egress("example/greets", egress_message)
-{% endhighlight %}
+```
 
 The state `seen_count` is always scoped to the current name so it can track each user independently.
 
@@ -237,7 +240,7 @@
 One popular Python web framework is [Flask](https://palletsprojects.com/p/flask/).
 It can be used to quickly and easily expose an application to the Apache Flink runtime.
 
-{% highlight python %}
+```python
 from statefun import StatefulFunctions
 from statefun import RequestReplyHandler
 
@@ -267,7 +270,7 @@
 
 if __name__ == "__main__":
     app.run()
-{% endhighlight %}
+```
 
 ## Configuring for Runtime
 
@@ -276,7 +279,7 @@
 This is also a good time to configure our connection to the input and output Kafka topics.
 The configuration is in a file called `module.yaml`.
 
-{% highlight yaml %}
+```yaml
 version: "1.0"
 module:
   meta:
@@ -316,7 +319,7 @@
             deliverySemantic:
               type: exactly-once
               transactionTimeoutMillis: 100000
-{% endhighlight %}
+```
 
 This configuration does a few interesting things.
 
@@ -337,24 +340,24 @@
 The base image provides the Stateful Function runtime, it will use the provided `module.yaml` to configure for this specific job.
 This can be found in the `Dockerfile` in the root directory. 
 
-{% highlight docker %}
-FROM flink-statefun:{{ site.version }}
+```docker
+FROM flink-statefun:{{< version >}}
 
 RUN mkdir -p /opt/statefun/modules/greeter
 ADD module.yaml /opt/statefun/modules/greeter
-{% endhighlight %}
+```
 
 You can now run this application locally using the provided Docker setup.
 
-{% highlight bash %}
+```bash
 $ docker-compose up -d
-{% endhighlight %}
+```
 
 Then, to see the example in actions, see what comes out of the topic `greetings`:
 
-{% highlight bash %}
+```bash
 docker-compose logs -f event-generator 
-{% endhighlight %}
+```
 
 
 ## Want To Go Further?
@@ -362,11 +365,11 @@
 This Greeter never forgets a user.
 Try and modify the function so that it will reset the ``seen_count`` for any user that spends more than 60 seconds without interacting with the system.
 
-Check out the [Python SDK]({{ site.baseurl }}/sdk/python.html) page for more information on how to achieve this.
+Check out the [Python SDK]({{< ref "docs/sdk/python" >}}) page for more information on how to achieve this.
 
 ## Full Application 
 
-{% highlight python %}
+```python
 from messages_pb2 import SeenCount, GreetRequest, GreetResponse
 
 from statefun import StatefulFunctions
@@ -432,4 +435,4 @@
 if __name__ == "__main__":
     app.run()
 
-{% endhighlight %}
+```
diff --git a/docs/concepts/index.md b/docs/content/docs/io-module/_index.md
similarity index 76%
copy from docs/concepts/index.md
copy to docs/content/docs/io-module/_index.md
index f95bf91..aacee54 100644
--- a/docs/concepts/index.md
+++ b/docs/content/docs/io-module/_index.md
@@ -1,12 +1,9 @@
 ---
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
+title: I/O Modules
+icon: <i class="fa fa-random title maindish" aria-hidden="true"></i>
+bold: true
+bookCollapseSection: true
+weight: 4
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -25,4 +22,4 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+-->
\ No newline at end of file
diff --git a/docs/io-module/apache-kafka.md b/docs/content/docs/io-module/apache-kafka.md
similarity index 79%
rename from docs/io-module/apache-kafka.md
rename to docs/content/docs/io-module/apache-kafka.md
index 9b47169..09b6723 100644
--- a/docs/io-module/apache-kafka.md
+++ b/docs/content/docs/io-module/apache-kafka.md
@@ -1,9 +1,9 @@
 ---
 title: Apache Kafka
-nav-id: apache-kafka
-nav-pos: 1
-nav-title: Apache Kafka
-nav-parent_id: io-module
+weight: 2
+type: docs
+aliases:
+  - /io-module/apache-kafka.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,26 +24,29 @@
 under the License.
 -->
 
+# Apache Kafka
+
 
 Stateful Functions offers an Apache Kafka I/O Module for reading from and writing to Kafka topics.
 It is based on Apache Flink's universal [Kafka connector](https://ci.apache.org/projects/flink/flink-docs-stable/dev/connectors/kafka.html) and provides exactly-once processing semantics.
 The Kafka I/O Module is configurable in Yaml or Java.
 
-* This will be replaced by the TOC
-{:toc}
+
 
 ## Dependency
 
+{{< tabs "dep" >}}
+{{< tab "Remote Module" >}}
+If configuring an Apache Kafka I/O Module as part of a remote module, there are no additional
+dependencies to include in your application.
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
 To use the Kafka I/O Module in Java, please include the following dependency in your pom.
 
-{% highlight xml %}
-<dependency>
-	<groupId>org.apache.flink</groupId>
-	<artifactId>statefun-kafka-io</artifactId>
-	<version>{{ site.version }}</version>
-	<scope>provided</scope>
-</dependency>
-{% endhighlight %}
+{{< artifact statefun-kafka-io withProvidedScope >}}
+
+{{< /tab >}}
+{{< /tabs >}}
 
 ## Kafka Ingress Spec
 
@@ -58,9 +61,9 @@
 5. A ``KafkaIngressDeserializer`` for deserializing data from Kafka (Java only)
 6. The position to start consuming from
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "7cf3a0a2-608e-4af9-a5db-e754d85450c0" >}}
+{{< tab "Remote Module" >}}
+```yaml
 version: "1.0"
 
 module:
@@ -83,10 +86,10 @@
                 targets:
                   - example-namespace/my-function-1
                   - example-namespace/my-function-2
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 package org.apache.flink.statefun.docs.io.kafka;
 
 import org.apache.flink.statefun.docs.models.User;
@@ -109,9 +112,9 @@
           .withStartupPosition(KafkaIngressStartupPosition.fromLatest())
           .build();
 }
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 The ingress also accepts properties to directly configure the Kafka client, using ``KafkaIngressBuilder#withProperties(Properties)``.
 Please refer to the Kafka [consumer configuration](https://docs.confluent.io/current/installation/configuration/consumer-configs.html) documentation for the full list of available properties.
@@ -125,101 +128,101 @@
 
 Starts from offsets that were committed to Kafka for the specified consumer group.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "e87cd357-97c2-4364-bf93-4d1d9c65a6a6" >}}
+{{< tab "Remote Module" >}}
+```yaml
 startupPosition:
     type: group-offsets
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KafkaIngressStartupPosition#fromGroupOffsets();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Earlist
 
 Starts from the earliest offset.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "8609e959-9c92-4d33-9e38-df8496c7b3f5" >}}
+{{< tab "Remote Module" >}}
+```yaml
 startupPosition:
     type: earliest
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KafkaIngressStartupPosition#fromEarliest();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Latest
 
 Starts from the latest offset.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "f464e8de-fc98-4926-98d8-2a7afcf6c5b7" >}}
+{{< tab "Remote Module" >}}
+```yaml
 startupPosition:
     type: latest
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KafkaIngressStartupPosition#fromLatest();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Specific Offsets
 
 Starts from specific offsets, defined as a map of partitions to their target starting offset.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "b1ec723b-a999-4e64-9c72-0c08678799f3" >}}
+{{< tab "Remote Module" >}}
+```yaml
 startupPosition:
     type: specific-offsets
     offsets:
         - user-topic/0: 91
         - user-topic/1: 11
         - user-topic/2: 8
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 Map<TopicPartition, Long> offsets = new HashMap<>();
 offsets.add(new TopicPartition("user-topic", 0), 91);
 offsets.add(new TopicPartition("user-topic", 11), 11);
 offsets.add(new TopicPartition("user-topic", 8), 8);
 
 KafkaIngressStartupPosition#fromSpecificOffsets(offsets);
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Date
 
 Starts from offsets that have an ingestion time larger than or equal to a specified date.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "1d3bd4cf-144b-4eaa-976a-0c58a587d46b" >}}
+{{< tab "Remote Module" >}}
+```yaml
 startupPosition:
     type: date
     date: 2020-02-01 04:15:00.00 Z
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KafkaIngressStartupPosition#fromDate(ZonedDateTime.now());
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 On startup, if the specified startup offset for a partition is out-of-range or does not exist (which may be the case if the ingress is configured to start from group offsets, specific offsets, or from a date), then the ingress will fallback to using the position configured using ``KafkaIngressBuilder#withAutoOffsetResetPosition(KafkaIngressAutoResetPosition)``.
 By default, this is set to be the latest position.
@@ -230,7 +233,7 @@
 The ``KafkaIngressDeserializer`` allows users to specify such a schema.
 The ``T deserialize(ConsumerRecord<byte[], byte[]> record)`` method gets called for each Kafka message, passing the key, value, and metadata from Kafka.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.io.kafka;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -257,7 +260,7 @@
 		}
 	}
 }
-{% endhighlight %}
+```
 
 ## Kafka Egress Spec
 
@@ -271,9 +274,9 @@
 4. The fault tolerance semantic
 5. Properties for the Kafka producer
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "62444f98-c036-4b2c-a2b2-4f187542f37f" >}}
+{{< tab "Remote Module" >}}
+```yaml
 version: "1.0"
 
 module:
@@ -292,10 +295,10 @@
               transactionTimeoutMillis: 100000
             properties:
               - foo.config: bar
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 package org.apache.flink.statefun.docs.io.kafka;
 
 import org.apache.flink.statefun.docs.models.User;
@@ -314,9 +317,9 @@
           .withSerializer(UserSerializer.class)
           .build();
 }
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 Please refer to the Kafka [producer configuration](https://docs.confluent.io/current/installation/configuration/producer-configs.html) documentation for the full list of available properties.
 
@@ -329,56 +332,56 @@
 
 Nothing is guaranteed, produced records can be lost or duplicated.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "3da2f1be-871a-4ae1-8cc0-d04cccee26de" >}}
+{{< tab "Remote Module" >}}
+```yaml
 deliverySemantic:
     type: none
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KafkaEgressBuilder#withNoProducerSemantics();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### At Least Once
 
 Stateful Functions will guarantee that no records will be lost but they can be duplicated.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "a50f0607-3ec8-4161-9a1f-2f65eb267f4f" >}}
+{{< tab "Remote Module" >}}
+```yaml
 deliverySemantic:
     type: at-least-once
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KafkaEgressBuilder#withAtLeastOnceProducerSemantics();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Exactly Once
 
 Stateful Functions uses Kafka transactions to provide exactly-once semantics.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "5e34d5c3-ffdd-452c-9a5b-b4e180afe70d" >}}
+{{< tab "Remote Module" >}}
+```yaml
 deliverySemantic:
     type: exactly-once
     transactionTimeoutMillis: 900000 # 15 min
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KafkaEgressBuilder#withExactlyOnceProducerSemantics(Duration.minutes(15));
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 ### Kafka Serializer
 
@@ -386,7 +389,7 @@
 The ``KafkaEgressSerializer`` allows users to specify such a schema.
 The ``ProducerRecord<byte[], byte[]> serialize(T out)`` method gets called for each message, allowing users to set a key, value, and other metadata.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.io.kafka;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -418,4 +421,4 @@
     }
   }
 }
-{% endhighlight %}
\ No newline at end of file
+```
\ No newline at end of file
diff --git a/docs/io-module/aws-kinesis.md b/docs/content/docs/io-module/aws-kinesis.md
similarity index 79%
rename from docs/io-module/aws-kinesis.md
rename to docs/content/docs/io-module/aws-kinesis.md
index b9fc52a..6dccf5d 100644
--- a/docs/io-module/aws-kinesis.md
+++ b/docs/content/docs/io-module/aws-kinesis.md
@@ -1,9 +1,9 @@
 ---
 title: AWS Kinesis
-nav-id: aws-kinesis
-nav-pos: 2
-nav-title: AWS Kinesis
-nav-parent_id: io-module
+weight: 3
+type: docs
+aliases:
+  - /io-module/aws-kinesis.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,26 +24,30 @@
 under the License.
 -->
 
+# AWS Kinesis
+
 
 Stateful Functions offers an AWS Kinesis I/O Module for reading from and writing to Kinesis streams.
 It is based on Apache Flink's [Kinesis connector](https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/connectors/kinesis.html).
 The Kinesis I/O Module is configurable in Yaml or Java.
 
-* This will be replaced by the TOC
-{:toc}
+
 
 ## Dependency
 
+{{< tabs "dep" >}}
+{{< tab "Remote Module" >}}
+If configuring an AWS Kinesis I/O Module as part of a remote module, there are no additional
+dependencies to include in your application.
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
 To use the Kinesis I/O Module in Java, please include the following dependency in your pom.
 
-{% highlight xml %}
-<dependency>
-    <groupId>org.apache.flink</groupId>
-    <artifactId>statefun-kinesis-io</artifactId>
-    <version>{{ site.version }}</version>
-    <scope>provided</scope>
-</dependency>
-{% endhighlight %}
+{{< artifact statefun-kinesis-io withProvidedScope >}}
+
+{{< /tab >}}
+{{< /tabs >}}
+
 
 ## Kinesis Ingress Spec
 
@@ -58,9 +62,9 @@
 5. Properties for the Kinesis client
 6. The name of the stream to consume from
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "c1054004-8e8f-46db-90cc-faf57ef1f39d" >}}
+{{< tab "Remote Module" >}}
+```yaml
 version: "1.0"
 
 module:
@@ -95,10 +99,10 @@
                 clientConfigProperties:
                   - SocketTimeout: 9999
                   - MaxConnections: 15
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 package org.apache.flink.statefun.docs.io.kinesis;
 
 import org.apache.flink.statefun.docs.models.User;
@@ -123,9 +127,9 @@
           .withClientConfigurationProperty("key", "value")
           .build();
 }
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 The ingress also accepts properties to directly configure the Kinesis client, using ``KinesisIngressBuilder#withClientConfigurationProperty()``.
 Please refer to the Kinesis [client configuration](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html) documentation for the full list of available properties.
@@ -139,56 +143,56 @@
 
 Start consuming from the latest position, i.e. head of the stream shards.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "71944997-a4fb-4bfb-b6b2-42883b05f2b8" >}}
+{{< tab "Remote Module" >}}
+```yaml
 startupPosition:
     type: latest
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KinesisIngressStartupPosition#fromLatest();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Earlist
 
 Start consuming from the earliest position possible.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "c5f062ef-6570-48fa-9919-9533040aeead" >}}
+{{< tab "Remote Module" >}}
+```yaml
 startupPosition:
     type: earliest
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KinesisIngressStartupPosition#fromEarliest();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Date
 
 Starts from offsets that have an ingestion time larger than or equal to a specified date.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "a544f516-37d1-4f54-bf43-7170572891cd" >}}
+{{< tab "Remote Module" >}}
+```yaml
 startupPosition:
     type: date
     date: 2020-02-01 04:15:00.00 Z
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 KinesisIngressStartupPosition#fromDate(ZonedDateTime.now());
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 ### Kinesis Deserializer
 
@@ -196,7 +200,7 @@
 The ``KinesisIngressDeserializer`` allows users to specify such a schema.
 The ``T deserialize(IngressRecord ingressRecord)`` method gets called for each Kinesis record, passing the binary data and metadata from Kinesis.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.io.kinesis;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -223,7 +227,7 @@
     }
   }
 }
-{% endhighlight %}
+```
 
 ## Kinesis Egress Spec
 
@@ -238,9 +242,9 @@
 5. Properties for the Kinesis client
 6. The number of max outstanding records before backpressure is applied
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "e9aa5f1d-5a32-41c9-b6e4-8f985e4cb481" >}}
+{{< tab "Remote Module" >}}
+```yaml
 version: "1.0"
 
 module:
@@ -265,10 +269,10 @@
                 clientConfigProperties:
                   - ThreadingModel: POOLED
                   - ThreadPoolSize: 10
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 package org.apache.flink.statefun.docs.io.kinesis;
 
 import org.apache.flink.statefun.docs.models.User;
@@ -291,9 +295,9 @@
           .withSerializer(UserSerializer.class)
           .build();
 }
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 Please refer to the Kinesis [producer default configuration properties](https://github.com/awslabs/amazon-kinesis-producer/blob/master/java/amazon-kinesis-producer-sample/default_config.properties) documentation for the full list of available properties.
 
@@ -303,7 +307,7 @@
 The ``KinesisEgressSerializer`` allows users to specify such a schema.
 The ``EgressRecord serialize(T value)`` method gets called for each message, allowing users to set a value, and other metadata.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.io.kinesis;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -336,7 +340,7 @@
     }
   }
 }
-{% endhighlight %}
+```
 
 ## AWS Region
 
@@ -346,38 +350,38 @@
 
 Consults AWS's default provider chain to determine the AWS region.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "dfce86e5-df95-4d98-a74d-4e656c5eff01" >}}
+{{< tab "Remote Module" >}}
+```yaml
 awsCredentials:
     type: default
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 AwsRegion.fromDefaultProviderChain();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Specific
 
 Specifies an AWS region using the region's unique id.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "ef7d29af-083e-4708-a9f2-62471ab8da50" >}}
+{{< tab "Remote Module" >}}
+```yaml
 awsCredentials:
     type: specific
     id: us-west-1
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 AwsRegion.of("us-west-1");
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 
 #### Custom Endpoint
@@ -385,21 +389,21 @@
 Connects to an AWS region through a non-standard AWS service endpoint.
 This is typically used only for development and testing purposes.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "450998b5-1c78-40ee-8626-c23945cee049" >}}
+{{< tab "Remote Module" >}}
+```yaml
 awsCredentials:
     type: custom-endpoint
     endpoint: https://localhost:4567
     id: us-west-1
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 AwsRegion.ofCustomEndpoint("https://localhost:4567", "us-west-1");
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 ## AWS Credentials
 
@@ -409,57 +413,57 @@
 
 Consults AWS’s default provider chain to determine the AWS credentials.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "eb8b18d5-c276-466c-9291-930b60071d55" >}}
+{{< tab "Remote Module" >}}
+```yaml
 awsCredentials:
     type: default
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 AwsCredentials.fromDefaultProviderChain();
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Basic
 
 Specifies the AWS credentials directly with provided access key ID and secret access key strings.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "0ac35336-1426-4fe1-89e4-f0eb02a6d4f4" >}}
+{{< tab "Remote Module" >}}
+```yaml
 awsCredentials:
     type: basic
     accessKeyId: access-key-id
     secretAccessKey: secret-access-key
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 AwsCredentials.basic("accessKeyId", "secretAccessKey");
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 #### Profile
 
 Specifies the AWS credentials using an AWS configuration profile, along with the profile's configuration path.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "ac63d291-57de-4a16-ba61-d8d051b0a3ed" >}}
+{{< tab "Remote Module" >}}
+```yaml
 awsCredentials:
     type: basic
     profileName: profile-name
     profilePath: /path/to/profile/config
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 AwsCredentials.profile("profile-name", "/path/to/profile/config");
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
diff --git a/docs/io-module/flink-connectors.md b/docs/content/docs/io-module/flink-connectors.md
similarity index 86%
rename from docs/io-module/flink-connectors.md
rename to docs/content/docs/io-module/flink-connectors.md
index 5856845..dc8d876 100644
--- a/docs/io-module/flink-connectors.md
+++ b/docs/content/docs/io-module/flink-connectors.md
@@ -1,9 +1,9 @@
 ---
 title: Flink Connectors
-nav-id: flink-connectors
-nav-pos: 3
-nav-title: Flink Connectors
-nav-parent_id: io-module
+weight: 4
+type: docs
+aliases:
+  - /io-module/flink-connectors.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,31 +24,25 @@
 under the License.
 -->
 
+# Flink Connectors
+
 
 The source-sink I/O module allows you to plug in existing, or custom, Flink connectors that are not already integrated into a dedicated I/O module.
 For details of how to build a custom connector see the official [Apache Flink documentation](https://ci.apache.org/projects/flink/flink-docs-stable).
 
-* This will be replaced by the TOC
-{:toc}
+
 
 ## Dependency
 
 To use a custom Flink connector, please include the following dependency in your pom.
 
-{% highlight xml %}
-<dependency>
-    <groupId>org.apache.flink</groupId>
-    <artifactId>statefun-flink-io</artifactId>
-    <version>{{ site.version }}</version>
-    <scope>provided</scope>
-</dependency>
-{% endhighlight %}
+{{< artifact statefun-flink-io withProvidedScope >}}
 
 ## Source Spec
 
 A source function spec creates an ingress from a Flink source function.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.io.flink;
 
 import java.util.Map;
@@ -67,13 +61,13 @@
         binder.bindIngress(spec);
     }
 }
-{% endhighlight %}
+```
 
 ## Sink Spec
 
 A sink function spec creates an egress from a Flink sink function.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.io.flink;
 
 import java.util.Map;
@@ -92,4 +86,4 @@
         binder.bindEgress(spec);
     }
 }
-{% endhighlight %}
+```
diff --git a/docs/io-module/index.md b/docs/content/docs/io-module/overview.md
similarity index 87%
rename from docs/io-module/index.md
rename to docs/content/docs/io-module/overview.md
index b60c530..a6f011e 100644
--- a/docs/io-module/index.md
+++ b/docs/content/docs/io-module/overview.md
@@ -1,10 +1,9 @@
 ---
-title: I/O Module 
-nav-id: io-module
-nav-pos: 4
-nav-title: 'I/O Module'
-nav-parent_id: root
-nav-show_overview: true 
+title: 'Overview'
+weight: 1
+type: docs
+aliases:
+  - /io-module/
 permalink: /io-module/index.html
 ---
 <!--
@@ -26,11 +25,11 @@
 under the License.
 -->
 
+# I/O Module
+
 Stateful Functions' I/O modules allow functions to receive and send messages to external systems.
 Based on the concept of Ingress (input) and Egress (output) points, and built on top of the Apache Flink® connector ecosystem, I/O modules enable functions to interact with the outside world through the style of message passing.
 
-* This will be replaced by the TOC
-{:toc}
 
 ## Ingress
 
@@ -41,9 +40,9 @@
 
 The spec defines the details of how to connect to the external system, which is specific to each individual I/O module. Each identifier-spec pair is bound to the system inside an stateful function module.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "6a2d517b-86de-4db3-872b-fe35c35d4000" >}}
+{{< tab "Remote Module" >}}
+```yaml
 version: "1.0"
 
 module:
@@ -56,10 +55,10 @@
                  id: example/user-ingress
                  type: # ingress type
                spec: # ingress specific configurations
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 package org.apache.flink.statefun.docs.io.ingress;
 
 import org.apache.flink.statefun.docs.models.User;
@@ -70,8 +69,8 @@
     public static final IngressIdentifier<User> INGRESS =
         new IngressIdentifier<>(User.class, "example", "user-ingress");
 }
-{% endhighlight %}
-{% highlight java %}
+```
+```java
 package org.apache.flink.statefun.docs.io.ingress;
 
 import java.util.Map;
@@ -93,27 +92,27 @@
         throw new MissingImplementationException("Replace with your specific ingress");
     }
 }
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 ## Router
 
 A router is a stateless operator that takes each record from an ingress and routes it to zero or more functions.
 Routers are bound to the system via a stateful function module, and unlike other components, an ingress may have any number of routers.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
+{{< tabs "4862f608-23e7-4d04-9310-f2b8f5fcc502" >}}
+{{< tab "Remote Module" >}}
 When defined in ``yaml``, routers are defined by a list of function types.
 The ``id`` component of the address is pulled from the key associated with each record in its underlying source implementation.
-{% highlight yaml %}
+```yaml
 targets:
     - example-namespace/my-function-1
     - example-namespace/my-function-2
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 package org.apache.flink.statefun.docs.io.ingress;
 
 import org.apache.flink.statefun.docs.FnUser;
@@ -127,8 +126,8 @@
         downstream.forward(FnUser.TYPE, message.getUserId(), message);
     }
 }
-{% endhighlight %}
-{% highlight java %}
+```
+```java
 package org.apache.flink.statefun.docs.io.ingress;
 
 import java.util.Map;
@@ -153,9 +152,9 @@
         throw new MissingImplementationException("Replace with your specific ingress");
     }
 }
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 ## Egress
 
@@ -166,9 +165,9 @@
 An egress spec defines the details of how to connect to the external system, the details are specific to each individual I/O module.
 Each identifier-spec pair are bound to the system inside a stateful function module.
 
-<div class="codetabs" markdown="1">
-<div data-lang="Remote Module" markdown="1">
-{% highlight yaml %}
+{{< tabs "850e633a-d342-42f6-a7aa-a45d49bd2cc7" >}}
+{{< tab "Remote Module" >}}
+```yaml
 version: "1.0"
 
 module:
@@ -181,10 +180,10 @@
                 id: example/user-egress
                 type: # egress type
               spec: # egress specific configurations
-{% endhighlight %}
-</div>
-<div data-lang="Embedded Module" markdown="1">
-{% highlight java %}
+```
+{{< /tab >}}
+{{< tab "Embedded Module" >}}
+```java
 package org.apache.flink.statefun.docs.io.egress;
 
 import org.apache.flink.statefun.docs.models.User;
@@ -196,8 +195,8 @@
         new EgressIdentifier<>("example", "egress", User.class);
 }
 
-{% endhighlight %}
-{% highlight java %}
+```
+```java
 package org.apache.flink.statefun.docs.io.egress;
 
 import java.util.Map;
@@ -219,13 +218,13 @@
         throw new MissingImplementationException("Replace with your specific egress");
     }
 }
-{% endhighlight %}
-</div>
-</div>
+```
+{{< /tab >}}
+{{< /tabs >}}
 
 Stateful functions may then message an egress the same way they message another function, passing the egress identifier as function type.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.io.egress;
 
 import org.apache.flink.statefun.docs.models.User;
@@ -240,4 +239,4 @@
         context.send(Identifiers.EGRESS, new User());
     }
 }
-{% endhighlight %}
\ No newline at end of file
+```
\ No newline at end of file
diff --git a/docs/concepts/index.md b/docs/content/docs/sdk/_index.md
similarity index 76%
copy from docs/concepts/index.md
copy to docs/content/docs/sdk/_index.md
index f95bf91..5997d7b 100644
--- a/docs/concepts/index.md
+++ b/docs/content/docs/sdk/_index.md
@@ -1,12 +1,10 @@
 ---
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
+title: SDKs
+icon: <i class="fa fa-code title maindish" aria-hidden="true"></i>
+bold: true
+sectionBreak: true
+bookCollapseSection: true
+weight: 3
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -25,4 +23,4 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+-->
\ No newline at end of file
diff --git a/docs/sdk/external.md b/docs/content/docs/sdk/external.md
similarity index 89%
rename from docs/sdk/external.md
rename to docs/content/docs/sdk/external.md
index 0f1f048..76811eb 100644
--- a/docs/sdk/external.md
+++ b/docs/content/docs/sdk/external.md
@@ -1,9 +1,9 @@
 ---
-title: "3rd Party SDKs" 
-nav-id: external-sdk
-nav-pos: 1000
-nav-title: "3rd Party SDKs"
-nav-parent_id: sdk
+title: "3rd Party SDKs"
+weight: 1001
+type: docs
+aliases:
+  - /sdk/external.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,11 +24,10 @@
 under the License.
 -->
 
-There are a number of community supported Stateful Function [remote]({{ site.baseurl }}/sdk/index.html#remote-module) SDKs for various languages.
-None of these SDKs are managed by the Flink PMC and the normal rules of open source apply.
+# 3rd Party SDKs
 
-* This will be replaced by the TOC
-{:toc}
+There are a number of community supported Stateful Function [remote]({{< ref "docs/sdk/overview#embedded-module" >}}) SDKs for various languages.
+None of these SDKs are managed by the Flink PMC and the normal rules of open source apply.
 
 ## Golang
 
diff --git a/docs/sdk/flink-datastream.md b/docs/content/docs/sdk/flink-datastream.md
similarity index 85%
rename from docs/sdk/flink-datastream.md
rename to docs/content/docs/sdk/flink-datastream.md
index 24a5b74..7832047 100644
--- a/docs/sdk/flink-datastream.md
+++ b/docs/content/docs/sdk/flink-datastream.md
@@ -1,9 +1,9 @@
 ---
-title: "SDK for Flink DataStream Integration"
-nav-id: flink-datastream-sdk
-nav-pos: 1001
-nav-title: "Flink DataStream"
-nav-parent_id: sdk
+title: "Flink DataStream"
+weight: 1002
+type: docs
+aliases:
+  - /sdk/flink-datastream.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,6 +24,8 @@
 under the License.
 -->
 
+# SDK for Flink DataStream Integration
+
 This SDK may be used if you want your Stateful Functions application to consume events from, or output events to
 Flink [DataStreams](https://ci.apache.org/projects/flink/flink-docs-stable/dev/datastream_api.html). Using this SDK,
 you may combine pipelines written with the Flink DataStream API or higher-level libraries (such as [Table API](https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/),
@@ -33,16 +35,7 @@
 
 To use this, add the Flink DataStream Integration SDK as a dependency to your application:
 
-{% highlight xml %}
-<dependency>
-	<groupId>org.apache.flink</groupId>
-	<artifactId>statefun-flink-datastream</artifactId>
-	<version>{{ site.version }}</version>
-</dependency>
-{% endhighlight %}
-
-* This will be replaced by the TOC
-{:toc}
+{{< artifact statefun-flink-datastream >}}
 
 ## SDK Overview
 
@@ -56,7 +49,7 @@
 
 You can use the ``RoutableMessageBuilder`` to transform your ``DataStream``s:
 
-{% highlight java %}
+```java
 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
 
 DataStream<String> names = env.addSource(...)
@@ -68,7 +61,7 @@
             .withMessageBody(name)
             .build()
     );
-{% endhighlight %}
+```
 
 In the above example, we transformed a ``DataStream<String>`` into a ``DataStream<RoutableMessage>`` by mapping
 element in the original stream to a ``RoutableMessage``, with each element targeted for the function type ``(example:greet)``.
@@ -78,7 +71,7 @@
 Once you have transformed your stream ingresses, you may start binding functions to consume the stream events, as well
 as DataStream egresses to produce the outputs to:
 
-{% highlight java %}
+```java
 FunctionType GREET = new FunctionType("example", "greet");
 FunctionType REMOTE_GREET = new FunctionType("example", "remote-greet");
 EgressIdentifier<String> GREETINGS = new EgressIdentifier<>("example", "greetings", String.class);
@@ -107,12 +100,12 @@
         .withFunctionProvider(GREET, unused -> new MyFunction())
         .withEgressId(GREETINGS)
         .build(env);
-{% endhighlight %}
+```
 
 As you can see, instead of binding functions, ingresses, and egresses through modules as you would with a typical Stateful
 Functions application, you bind them directly to the ``DataStream`` job using a ``StatefulFunctionDataStreamBuilder``:
 
-* Remote functions are bound using the `withRequestReplyRemoteFunction` method. [Specification of the remote function]({{ site.baseurl }}/sdk/index.html#specification)
+* Remote functions are bound using the `withRequestReplyRemoteFunction` method. [Specification of the remote function]({{< ref "docs/sdk/overview#specification" >}})
 such as service endpoint and various connection configurations can be set using the provided ``RequestReplyFunctionBuilder``.
 * Embedded functions are bind using ``withFunctionProvider``.
 * Egress identifiers used by functions need to be bind with the `withEgressId` method.
@@ -121,22 +114,22 @@
 
 Finally, you can obtain an egress as a ``DataStream`` from the result ``StatefulFunctionEgressStreams``:
 
-{% highlight java %}
+```java
 EgressIdentifier<String> GREETINGS = new EgressIdentifier<>("example", "greetings", String.class);
 
 StatefulFunctionEgressStreams egresses = ...
 
 DataStream<String> greetingsEgress = egresses.getDataStreamForEgressId(GREETINGS);
-{% endhighlight %}
+```
 
 The obtained egress ``DataStream`` can be further processed as in a typical Flink streaming application.
 
 ## Configuration
 
-Like a typical Stateful Functions application, configuration specific to Stateful Functions is set through the ``flink-conf.yaml`` file, as explained [here]({{ site.baseurl }}/deployment-and-operations/configurations.html).
+Like a typical Stateful Functions application, configuration specific to Stateful Functions is set through the ``flink-conf.yaml`` file, as explained [here]({{< ref "docs/deployment-and-operations/configurations" >}}).
 You can also overwrite the base settings for each individual job:
 
-{% highlight java %}
+```java
 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
 
 StatefulFunctionsConfig statefunConfig = StatefulFunctionsConfig.fromEnvironment(env);
@@ -148,9 +141,9 @@
         ...
         .withConfiguration(statefunConfig)
         .build(env);
-{% endhighlight %}
+```
 
-<div class="alert alert-info">
-  <strong>Attention:</strong> The setFlinkJobName method on StatefulFunctionsConfig does not have effect using this SDK.
-  You need to define the job name as you normally would via Flink's DataStream API.
-</div>
+{{< hint info >}}
+The setFlinkJobName method on StatefulFunctionsConfig does not have effect using this SDK.
+You need to define the job name as you normally would via Flink's DataStream API.
+{{< /hint >}}
diff --git a/docs/sdk/java.md b/docs/content/docs/sdk/java.md
similarity index 92%
rename from docs/sdk/java.md
rename to docs/content/docs/sdk/java.md
index b9e752b..750a19c 100644
--- a/docs/sdk/java.md
+++ b/docs/content/docs/sdk/java.md
@@ -1,9 +1,9 @@
 ---
-title: Java SDK 
-nav-id: java-sdk
-nav-pos: 2
-nav-title: Java
-nav-parent_id: sdk
+title: Java
+weight: 3
+type: docs
+aliases:
+  - /sdk/java.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,30 +24,23 @@
 under the License.
 -->
 
+# Java SDK
+
 Stateful functions are the building blocks of applications; they are atomic units of isolation, distribution, and persistence.
 As objects, they encapsulate the state of a single entity (e.g., a specific user, device, or session) and encode its behavior.
 Stateful functions can interact with each other, and external systems, through message passing.
-The Java SDK is supported as an [embedded module]({{ site.baseurl }}/sdk/index.html#embedded-module).
+The Java SDK is supported as an [embedded module]({{< ref "docs/sdk/overview#embedded-module" >}}).
 
 To get started, add the Java SDK as a dependency to your application.
 
-{% highlight xml %}
-<dependency>
-	<groupId>org.apache.flink</groupId>
-	<artifactId>statefun-sdk</artifactId>
-	<version>{{ site.version }}</version>
-</dependency>
-{% endhighlight %}
-
-* This will be replaced by the TOC
-{:toc}
+{{< artifact statefun-sdk >}}
 
 ## Defining A Stateful Function
 
 A stateful function is any class that implements the ``StatefulFunction`` interface.
 The following is an example of a simple hello world function.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs;
 
 import org.apache.flink.statefun.sdk.Context;
@@ -60,7 +53,7 @@
 		System.out.println("Hello " + input.toString());
 	}
 }
-{% endhighlight %}
+```
 
 Functions process each incoming message through their ``invoke`` method.
 Input's are untyped and passed through the system as a ``java.lang.Object`` so one function can potentially process multiple types of messages.
@@ -79,7 +72,7 @@
 Developers outline expected types, optional predicates, and well-typed business logic and let the system dispatch each input to the correct action.
 Variants are bound inside a ``configure`` method that is executed once the first time an instance is loaded.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.match;
 
 import org.apache.flink.statefun.sdk.Context;
@@ -108,7 +101,7 @@
 		System.out.println("Hello manager " + message.getEmployeeId());
 	}
 }
-{% endhighlight %}
+```
 
 #### Making Your Function Complete
 
@@ -116,7 +109,7 @@
 They can be made complete by providing an ``otherwise`` clause that serves as a catch-all for unmatched input, think of it as a default clause in a Java switch statement.
 The ``otherwise`` action takes its message as an untyped ``java.lang.Object``, allowing you to handle any unexpected messages.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.match;
 
 import org.apache.flink.statefun.sdk.Context;
@@ -150,7 +143,7 @@
 		System.out.println("Hello unexpected message");
 	}
 }
-{% endhighlight %}
+```
 
 #### Action Resolution Order
 
@@ -163,10 +156,10 @@
 ## Function Types and Messaging
 
 In Java, function types are defined as logical pointers composed of a namespace and name.
-The type is bound to the implementing class in the [module]({{ site.baseurl }}/sdk/index.html#embedded-module) definition.
+The type is bound to the implementing class in the [module]({{< ref "docs/sdk/overview#embedded-module" >}}) definition.
 Below is an example function type for the hello world function.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs;
 
 import org.apache.flink.statefun.sdk.FunctionType;
@@ -176,11 +169,11 @@
 
   public static final FunctionType HELLO_TYPE = new FunctionType("apache/flink", "hello");
 }
-{% endhighlight %}
+```
 
 This type can then be referenced from other functions to create an address and message a particular instance.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs;
 
 import org.apache.flink.statefun.sdk.Context;
@@ -194,7 +187,7 @@
     context.send(Identifiers.HELLO_TYPE, "user1", new MyUserMessage());
   }
 }
-{% endhighlight %}
+```
 
 ## Sending Delayed Messages
 
@@ -202,7 +195,7 @@
 Functions may even send themselves delayed messages that can serve as a callback.
 The delayed message is non-blocking so functions will continue to process records between the time a delayed message is sent and received.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.delay;
 
 import java.time.Duration;
@@ -223,7 +216,7 @@
 		}
 	}
 }
-{% endhighlight %}
+```
 
 ## Completing Async Requests
 
@@ -246,7 +239,7 @@
 
 The stateful function was restarted, possibly on a different machine, before the ``CompletableFuture`` was completed, therefore it is unknown what is the status of the asynchronous operation.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs.async;
 
 import java.util.concurrent.CompletableFuture;
@@ -291,7 +284,7 @@
 		}
 	}
 }
-{% endhighlight %}
+```
 
 ## Persistence
 
@@ -302,11 +295,11 @@
 The data is always scoped to a specific function type and identifier.
 Below is a stateful function that greets users based on the number of times they have been seen.
 
-<div class="alert alert-info">
-  <strong>Attention:</strong> All <b>PersistedValue</b>, <b>PersistedTable</b>, and <b>PersistedAppendingBuffer</b> fields must be marked with a <b>@Persisted</b> annotation or they will not be made fault tolerant by the runtime.
-</div>
+{{< hint info >}}
+All **PersistedValue**, **PersistedTable**, and **PersistedAppendingBuffer** fields must be marked with a **@Persisted** annotation or they will not be made fault tolerant by the runtime.
+{{< /hint >}}
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs;
 
 import org.apache.flink.statefun.sdk.Context;
@@ -343,7 +336,7 @@
 		count.set(seen + 1);
 	}
 }
-{% endhighlight %}
+```
 
 ``PersistedValue`` comes with the right primitive methods to build powerful stateful applications.
 Calling ``PersistedValue#get`` will return the current value of an object stored in state, or ``null`` if nothing is set.
@@ -356,13 +349,13 @@
 
 These types are functionally equivalent to ``PersistedValue<Map>`` and ``PersistedValue<Collection>`` respectively but may provide better performance in some situations.
 
-{% highlight java %}
+```java
 @Persisted
 PersistedTable<String, Integer> table = PersistedTable.of("my-table", String.class, Integer.class);
 
 @Persisted
 PersistedAppendingBuffer<Integer> buffer = PersistedAppendingBuffer.of("my-buffer", Integer.class);
-{% endhighlight %}
+```
 
 ### Dynamic State Registration
 
@@ -371,7 +364,7 @@
 
 If dynamic state registration is required, it can be achieved using a ``PersistedStateRegistry``:
 
-{% highlight java %}
+```java
 import org.apache.flink.statefun.sdk.Context;
 import org.apache.flink.statefun.sdk.FunctionType;
 import org.apache.flink.statefun.sdk.StatefulFunction;
@@ -395,7 +388,7 @@
 		// ...
 	}
 }
-{% endhighlight %}
+```
 
 Note how the ``PersistedValue`` field doesn't need to be annotated with the ``@Persisted`` annotations, and is initially
 empty. The state object is dynamically created during invocation and registered with the ``PersistedStateRegistry`` so
@@ -406,7 +399,7 @@
 Persisted states may be configured to expire and be deleted after a specified duration.
 This is supported by all types of state:
 
-{% highlight java %}
+```java
 @Persisted
 PersistedValue<Integer> value = PersistedValue.of(
     "my-value",
@@ -425,15 +418,15 @@
     "my-buffer",
     Integer.class,
     Expiration.expireAfterWriting(Duration.ofSeconds(30)));
-{% endhighlight %}
+```
 
 There are two expiration modes supported:
 
-{% highlight java %}
+```java
 Expiration.expireAfterWriting(...)
 
 Expiration.expireAfterReadingOrWriting(...)
-{% endhighlight %}
+```
 
 State TTL configurations are made fault-tolerant by the runtime. In the case of downtime, state entries that should have been removed during said downtime will be purged immediately on restart.
 
@@ -442,7 +435,7 @@
 Stateful functions are created across a distributed cluster of nodes.
 ``StatefulFunctionProvider`` is a factory class for creating a new instance of a ``StatefulFunction`` the first time it is activated.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs;
 
 import org.apache.flink.statefun.docs.dependency.ProductionDependency;
@@ -458,14 +451,14 @@
 		return new FnWithDependency(dependency);
 	}
 }
-{% endhighlight %}
+```
 
 Providers are called once per type on each parallel worker, not for each id.
 If a stateful function requires custom configurations, they can be defined inside a provider and passed to the functions' constructor.
 This is also where shared physical resources, such as a database connection, can be created that are used by any number of virtual functions.
 Now, tests can quickly provide mock, or test dependencies, without the need for complex dependency injection frameworks.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs;
 
 import org.apache.flink.statefun.docs.dependency.RuntimeDependency;
@@ -483,4 +476,4 @@
 		Assert.assertEquals("It appears math is broken", 1 + 1, 2);
 	}
 }
-{% endhighlight %}
+```
diff --git a/docs/sdk/index.md b/docs/content/docs/sdk/overview.md
similarity index 93%
rename from docs/sdk/index.md
rename to docs/content/docs/sdk/overview.md
index 5883dc9..0141ff8 100644
--- a/docs/sdk/index.md
+++ b/docs/content/docs/sdk/overview.md
@@ -1,10 +1,9 @@
 ---
-title: SDK 
-nav-id: sdk
-nav-pos: 3
-nav-title: 'SDK'
-nav-parent_id: root
-nav-show_overview: true 
+title: 'Overview'
+weight: 1
+type: docs
+aliases:
+  - /sdk/
 permalink: /sdk/index.html
 ---
 <!--
@@ -26,15 +25,14 @@
 under the License.
 -->
 
+# Overview
+
 Stateful Functions applications are composed of one or more modules.
 A module is a bundle of functions loaded by the runtime and made available to be messaged.
 Functions from all loaded modules are multiplexed and free to message each other arbitrarily.
 
 Stateful Functions supports two types of modules: Remote and Embedded.
 
-* This will be replaced by the TOC
-{:toc}
-
 ## Remote Module
 
 Remote modules run as external processes from the Apache Flink® runtime; in the same container, as a sidecar, using a serverless platform or other external location.
@@ -85,7 +83,7 @@
 
 ### Full Example
 
-{% highlight yaml %}
+```yaml
 version: "2.0"
 
 module:
@@ -104,7 +102,7 @@
               expireAfter: 5min
           maxNumBatchRequests: 500
           timeout: 2min
-{% endhighlight %}
+```
 
 ## Embedded Module
 
@@ -112,12 +110,12 @@
 
 This module type only supports JVM-based languages and is defined by implementing the ``StatefulFunctionModule`` interface.
 Embedded modules offer a single configuration method where stateful functions bind to the system based on their
-[function type]({{ site.baseurl }}/concepts/logical.html#function-address).
+[function type]({{< ref "docs/concepts/logical#function-address" >}}).
 Runtime configurations are available through the ``globalConfiguration``, which is the union of all configurations
 in the applications ``flink-conf.yaml`` under the prefix ``statefun.module.global-config``, and any command line
 arguments passed in the form ``--key value``.
 
-{% highlight java %}
+```java
 package org.apache.flink.statefun.docs;
 
 import java.util.Map;
@@ -135,12 +133,12 @@
 		binder.bindFunctionProvider(Identifiers.HELLO_TYPE, unused -> new FnHelloWorld());
 	}
 }
-{% endhighlight %}
+```
 
 Embedded modules leverage [Java’s Service Provider Interfaces (SPI)](https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html) for discovery.
 This means that every JAR should contain a file ``org.apache.flink.statefun.sdk.spi.StatefulFunctionModule`` in the ``META_INF/services`` resource directory that lists all available modules that it provides.
 
-{% highlight none %}
+```none
 org.apache.flink.statefun.docs.BasicFunctionModule
-{% endhighlight %}
+```
 
diff --git a/docs/sdk/python.md b/docs/content/docs/sdk/python.md
similarity index 90%
rename from docs/sdk/python.md
rename to docs/content/docs/sdk/python.md
index 2adab27..a02a16f 100644
--- a/docs/sdk/python.md
+++ b/docs/content/docs/sdk/python.md
@@ -1,9 +1,9 @@
 ---
-title: Python SDK 
-nav-id: python-sdk
-nav-pos: 1
-nav-title: Python
-nav-parent_id: sdk
+title: Python
+weight: 2
+type: docs
+aliases:
+  - /sdk/python.html
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -24,19 +24,20 @@
 under the License.
 -->
 
+# Python SDK
+
 Stateful functions are the building blocks of applications; they are atomic units of isolation, distribution, and persistence.
 As objects, they encapsulate the state of a single entity (e.g., a specific user, device, or session) and encode its behavior.
 Stateful functions can interact with each other, and external systems, through message passing.
-The Python SDK is supported as a [remote module]({{ site.baseurl}}/sdk/index.html#remote-module).
+The Python SDK is supported as a [remote module]({{< ref "docs/sdk/overview#remote-module" >}}).
 
 To get started, add the Python SDK as a dependency to your application.
 
-{% highlight bash %}
-apache-flink-statefun=={{ site.version }}
-{% endhighlight %}
-
-* This will be replaced by the TOC
-{:toc}
+{{< selectable >}}
+```bash
+apache-flink-statefun=={{< version >}}
+```
+{{< /selectable >}}
 
 ## Defining A Stateful Function
 
@@ -44,7 +45,7 @@
 The function is bound to the runtime through the stateful functions decorator.
 The following is an example of a simple hello world function.
 
-{% highlight python %}
+```python
 from statefun import StatefulFunctions
 
 functions = StatefulFunctions()
@@ -56,21 +57,21 @@
     message.Unpack(user)
 
     print("Hello " + user.name)
-{% endhighlight %}
+```
 
 This code declares a function with in the namespace ``example`` and of type ``hello`` and binds it to the ``hello_function`` Python instance.
 
 Messages's are untyped and passed through the system as ``google.protobuf.Any`` so one function can potentially process multiple types of messages.
 
 The ``context`` provides metadata about the current message and function, and is how you can call other functions or external systems.
-A full reference of all methods supported by the context object are listed at the [bottom of this page]({{ site.baseurl }}/sdk/python.html#context-reference).
+A full reference of all methods supported by the context object are listed at the [bottom of this page](#context-reference).
 
 ## Type Hints
 
 If the function has a static set of known supported types, they may be specified as [type hints](https://docs.python.org/3/library/typing.html).
 This includes [union types](https://docs.python.org/3/library/typing.html#typing.Union) for functions that support multiple input message types.
 
-{% highlight python %}
+```python
 import typing
 from statefun import StatefulFunctions
 
@@ -90,7 +91,7 @@
         print("Goodbye user")
     elif isinstance(message, Admin):
         print("Goodbye Admin")
-{% endhighlight %}
+```
 
 ## Function Types and Messaging
 
@@ -98,7 +99,7 @@
 The function type must take the form ``<namespace>/<name>``.
 Function types can then be referenced from other functions to create an address and message a particular instance.
 
-{% highlight python %}
+```python
 from google.protobuf.any_pb2 import Any
 from statefun import StatefulFunctions
 
@@ -116,13 +117,13 @@
     envelope.Pack(user)
 
     context.send("example/hello", user.user_id, envelope)
-{% endhighlight %}
+```
 
 Alternatively, functions can be manually bound to the runtime.
 
-{% highlight python %}
+```python
 functions.register("example/caller", caller_function)
-{% endhighlight %}
+```
   
 ## Sending Delayed Messages
 
@@ -131,7 +132,7 @@
 The delayed message is non-blocking so functions will continue to process records between the time a delayed message is sent and received.
 The delay is specified via a [Python timedelta](https://docs.python.org/3/library/datetime.html#datetime.timedelta).
 
-{% highlight python %}
+```python
 from datetime import timedelta
 from statefun import StatefulFunctions
 
@@ -149,7 +150,7 @@
         context.caller.identity,
         timedelta(minutes=30),
         response)
-{% endhighlight %}
+```
 
 ## Persistence
 
@@ -158,12 +159,14 @@
 The data is always scoped to a specific function type and identifier.
 State values could be absent, ``None``, or a ``google.protobuf.Any``.
 
-<strong>Attention:</strong> [Remote modules]({{ site.baseurl}}/sdk/index.html#remote-module) require that all state values are eagerly registered at module.yaml.
+{{< hint info >}}
+[Remote modules]({{< ref "docs/sdk/overview#embedded-module" >}}) require that all state values are eagerly registered at module.yaml.
 It'll also allow configuring other state properties, such as state expiration. Please refer to that page for more details.
+{{< /hint >}}
     
 Below is a stateful function that greets users based on the number of times they have been seen.
 
-{% highlight python %}
+```python
 from google.protobuf.any_pb2 import Any
 from statefun import StatefulFunctions
 
@@ -201,24 +204,24 @@
         return "Third time's the charm"
     else:
         return "Hello for the " + count + "th time"
-{% endhighlight %}
+```
 
 Additionally, persisted values may be cleared by deleting its value.
 
-{% highlight python %}
+```python
 del context["count"]
-{% endhighlight %}
+```
 
 ## Exposing Functions
 
 The Python SDK ships with a ``RequestReplyHandler`` that automatically dispatches function calls based on RESTful HTTP ``POSTS``.
 The ``RequestReplyHandler`` may be exposed using any HTTP framework.
 
-{% highlight python %}
+```python
 from statefun import RequestReplyHandler
 
 handler RequestReplyHandler(functions)
-{% endhighlight %}
+```
     
 
 ### Serving Functions With Flask
@@ -226,7 +229,7 @@
 One popular Python web framework is [Flask](https://palletsprojects.com/p/flask/).
 It can be used to quickly and easily expose a ``RequestReplyHandler``.
 
-{% highlight python %}
+```python
 @app.route('/statefun', methods=['POST'])
 def handle():
     response_data = handler(request.data)
@@ -237,7 +240,7 @@
 
 if __name__ == "__main__":
 	app.run()
-{% endhighlight %}
+```
 
 
 ### Serving Asynchronous Functions 
@@ -245,7 +248,7 @@
 The Python SDK ships with an additional handler, ``AsyncRequestReplyHandler``, that supports Python's awaitable functions (coroutines).
 This handler can be used with asynchronous Python frameworks, for example [aiohttp](https://docs.aiohttp.org/en/stable/).
 
-{% highlight python %}
+```python
 @functions.bind("example/hello")
 async def hello(context, message):
     response = await compute_greeting(message)
@@ -266,7 +269,7 @@
 if __name__ == '__main__':
     web.run_app(app, port=5000)
 
-{% endhighlight %}
+```
 
 
 ## Context Reference
diff --git a/docs/concepts/index.md b/docs/content/versions.md
similarity index 76%
copy from docs/concepts/index.md
copy to docs/content/versions.md
index f95bf91..4ff026a 100644
--- a/docs/concepts/index.md
+++ b/docs/content/versions.md
@@ -1,12 +1,7 @@
 ---
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
+title: Versions 
+type: docs
+bookToc: false
 ---
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
@@ -26,3 +21,9 @@
 specific language governing permissions and limitations
 under the License.
 -->
+
+# Versions
+
+An appendix of hosted documentation for all versions of Apache Flink Stateful Functions.
+
+{{< all_versions >}}
diff --git a/docs/deployment-and-operations/packaging.md b/docs/deployment-and-operations/packaging.md
deleted file mode 100644
index 6c9e5ae..0000000
--- a/docs/deployment-and-operations/packaging.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-title: Packaging For Deployment
-nav-id: packaging
-nav-pos: 1
-nav-title: Packaging For Deployment
-nav-parent_id: deployment-and-ops
----
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-Stateful Functions applications can be packaged as either standalone applications or Flink jobs that can be submitted to a cluster.
-
-* This will be replaced by the TOC
-{:toc}
-
-## Images
-
-The recommended deployment mode for Stateful Functions applications is to build a Docker image.
-This way, user code does not need to package any Apache Flink components.
-The provided base image allows teams to package their applications with all the necessary runtime dependencies quickly.
-
-Below is an example Dockerfile for building a Stateful Functions image with both an [embedded module]({{ site.baseurl }}/sdk/modules.html#embedded-module) and a [remote module]({{ site.baseurl }}/sdk/modules.html#remote-module) for an application called ``statefun-example``.
-
-{% highlight dockerfile %}
-FROM flink-statefun:{{ site.version }}
-
-RUN mkdir -p /opt/statefun/modules/statefun-example
-RUN mkdir -p /opt/statefun/modules/remote
-
-COPY target/statefun-example*jar /opt/statefun/modules/statefun-example/
-COPY module.yaml /opt/statefun/modules/remote/module.yaml
-{% endhighlight %}
-
-{% if site.is_stable %}
-<div class="alert alert-info">
-	The Flink community is currently waiting for the official Docker images to be published to Docker Hub.
-	In the meantime, Ververica has volunteered to make Stateful Functions' images available via their public registry: 
-
-	<code class="language-dockerfile" data-lang="dockerfile">
-		<span class="k">FROM</span><span class="s"> ververica/flink-statefun:{{ site.version }}</span>
-	</code>
-
-	You can follow the status of Docker Hub contribution <a href="https://github.com/docker-library/official-images/pull/7749">here</a>.
-</div>
-{% else %}
-<div class="alert alert-info">
-	<strong>Attention:</strong> The Flink community does not publish images for snapshot versions.
-	You can build this version locally by cloning the <a hre="https://github.com/apache/flink-statefun">repo</a> and following
-	the instructions in 
-	
-	<code class="language-dockerfile" data-lang="dockerfile">
-		<span class="s">tools/docker/README.md</span>
-	</code>
-</div>
-{% endif %}
-
-## Flink Jar
-
-If you prefer to package your job to submit to an existing Flink cluster, simply include ``statefun-flink-distribution`` as a dependency to your application.
-
-{% highlight xml %}
-<dependency>
-	<groupId>org.apache.flink</groupId>
-	<artifactId>statefun-flink-distribution</artifactId>
-	<version>{{ site.version }}</version>
-</dependency>
-{% endhighlight %}
-
-It includes all of Stateful Functions' runtime dependencies and configures the application's main entry-point.
-
-<div class="alert alert-info">
-  <strong>Attention:</strong> The distribution must be bundled in your application fat JAR so that it is on Flink's <a href="https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/debugging_classloading.html#inverted-class-loading-and-classloader-resolution-order">user code class loader</a>
-</div>
-
-{% highlight bash %}
-./bin/flink run -c org.apache.flink.statefun.flink.core.StatefulFunctionsJob ./statefun-example.jar
-{% endhighlight %}
-
-The following configurations are strictly required for running StateFun application.
-
-{% highlight yaml %}
-classloader.parent-first-patterns.additional: org.apache.flink.statefun;org.apache.kafka;com.google.protobuf
-{% endhighlight %}
-
diff --git a/docs/docker/Dockerfile b/docs/docker/Dockerfile
deleted file mode 100644
index 77d3a58..0000000
--- a/docs/docker/Dockerfile
+++ /dev/null
@@ -1,31 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-FROM fedora:28
-
-RUN set -ex; \
-  dnf install -y \
-    vim \
-    gem \
-    ruby-devel \
-    redhat-rpm-config \
-    make \
-    gcc \
-    gcc-c++ \
-    python-setuptools \
-  ; \
-  gem install bundler -v 1.16.1; \
-  dnf clean all
diff --git a/docs/docker/run.sh b/docs/docker/run.sh
deleted file mode 100755
index bd02178..0000000
--- a/docs/docker/run.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/bash
-
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-set -e -x -u
-
-SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-
-export IMAGE_NAME="flink/docs"
-
-pushd ${SCRIPT_DIR}
-
-docker build --rm=true -t ${IMAGE_NAME} .
-
-popd
-
-if [ "$(uname -s)" == "Linux" ]; then
-  USER_NAME=${SUDO_USER:=$USER}
-  USER_ID=$(id -u "${USER_NAME}")
-  GROUP_ID=$(id -g "${USER_NAME}")
-else # boot2docker uid and gid
-  USER_NAME=$USER
-  USER_ID=1000
-  GROUP_ID=50
-fi
-
-docker build -t "${IMAGE_NAME}-${USER_NAME}" - <<UserSpecificDocker
-FROM ${IMAGE_NAME}
-RUN groupadd --non-unique -g ${GROUP_ID} ${USER_NAME} && \
-  useradd -g ${GROUP_ID} -u ${USER_ID} -k /root -m ${USER_NAME}
-ENV  HOME /home/${USER_NAME}
-UserSpecificDocker
-
-FLINK_DOC_ROOT=${SCRIPT_DIR}/..
-
-CMD="
-echo
-echo 'Welcome to Apache Flink docs'
-echo 'To build, execute'
-echo '  ./build_docs.sh'
-echo 'To watch and regenerate automatically'
-echo '  ./build_docs.sh -p'
-echo 'and access http://localhost:4000'
-echo
-bash
-"
-
-pushd ${FLINK_DOC_ROOT}
-
-docker run -i -t \
-  --rm=true \
-  -w ${FLINK_DOC_ROOT} \
-  -u "${USER}" \
-  -v "${FLINK_DOC_ROOT}:${FLINK_DOC_ROOT}" \
-  -p 4000:4000 \
-  ${IMAGE_NAME}-${USER_NAME} \
-  bash -c "${CMD}"
-
-popd
-
diff --git a/docs/fig/LICENSE.txt b/docs/fig/LICENSE.txt
deleted file mode 100644
index 35b8673..0000000
--- a/docs/fig/LICENSE.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-All image files in the folder and its subfolders are
-licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
\ No newline at end of file
diff --git a/docs/fig/stateful_functions.png b/docs/fig/stateful_functions.png
deleted file mode 100755
index 85b4f0d..0000000
--- a/docs/fig/stateful_functions.png
+++ /dev/null
Binary files differ
diff --git a/docs/fig/stateful_functions_overview-ops.png b/docs/fig/stateful_functions_overview-ops.png
deleted file mode 100755
index d846ed1..0000000
--- a/docs/fig/stateful_functions_overview-ops.png
+++ /dev/null
Binary files differ
diff --git a/docs/fig/stateful_functions_overview.png b/docs/fig/stateful_functions_overview.png
deleted file mode 100644
index 85b4f0d..0000000
--- a/docs/fig/stateful_functions_overview.png
+++ /dev/null
Binary files differ
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index 41ec8c3..0000000
--- a/docs/index.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: "Stateful Functions Documentation"
-nav-pos: 0
-nav-title: '<i class="fa fa-home title" aria-hidden="true"></i> Home'
-nav-parent_id: root
----
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
-Stateful Functions is an API that simplifies the building of **distributed stateful applications** with a **runtime built for serverless architectures**.
-It brings together the benefits of stateful stream processing - the processing of large datasets with low latency and bounded resource constraints -
-along with a runtime for modeling stateful entities that supports location transparency, concurrency, scaling, and resiliency. 
-
-<p class="text-center">
-    <img width="80%" src="{{ site.baseurl }}/fig/concepts/arch_overview.svg"/>
-</p>
-
-It is designed to work with modern architectures, like cloud-native deployments and popular event-driven FaaS platforms 
-like AWS Lambda and KNative, and to provide out-of-the-box consistent state and messaging while preserving the serverless
-experience and elasticity of these platforms.
-
-Stateful Functions is developed under the umbrella of [Apache Flink](flink.apache.org).
-
-## Learn By Doing
-
-If you prefer to learn by doing, start with our code [walkthrough]({{ site.baseurl }}/getting-started/python_walkthrough.html).
-It provides a step by step introduction to the API and guides you through real applications.
-
-## Learn Concepts Step By Step
-
-If you prefer to learn concepts step by step, start with our guide to [main concepts]({{ site.baseurl }}/concepts/application-building-blocks.html).
-It will walk you through all the API's and concepts to build advanced stateful systems.
-
-## Start A New Project
-
-The [project setup]({{ site.baseurl }}/getting-started/project-setup.html) instructions show you how to create a project for a new Stateful Functions application in just a few steps.
diff --git a/docs/layouts/_default/baseof.html b/docs/layouts/_default/baseof.html
new file mode 100644
index 0000000..ea45bd8
--- /dev/null
+++ b/docs/layouts/_default/baseof.html
@@ -0,0 +1,117 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!DOCTYPE html>
+<html lang="{{ .Site.Language.Lang }}" dir={{ .Site.Language.LanguageDirection }}>
+
+<head>
+  {{ hugo.Generator }}
+  {{ partial "docs/html-head" . }}
+  {{ partial "docs/inject/head" . }}
+</head>
+
+<body dir={{ .Site.Language.LanguageDirection }}>
+  <input type="checkbox" class="hidden toggle" id="menu-control" />
+  <input type="checkbox" class="hidden toggle" id="toc-control" />
+  <main class="container flex">
+    <aside class="book-menu">
+      {{ template "menu" . }} <!-- Left menu Content -->
+    </aside>
+
+    <div class="book-page">
+      <header class="book-header">
+        {{ template "header" . }} <!-- Mobile layout header -->
+      </header>
+
+      {{ partial "docs/inject/content-before" . }}
+      {{ template "main" . }} <!-- Page Content -->
+      {{ partial "docs/inject/content-after" . }}
+
+      <footer class="book-footer">
+        {{ template "footer" . }} <!-- Footer under page content -->
+        {{ partial "docs/inject/footer" . }}
+      </footer>
+
+      {{ template "comments" . }} <!-- Comments block -->
+
+      <label for="menu-control" class="hidden book-menu-overlay"></label>
+    </div>
+
+    {{ if default true (default .Site.Params.BookToC .Params.BookToC) }}
+    <aside class="book-toc">
+      {{ template "toc" . }} <!-- Table of Contents -->
+    </aside>
+    <aside class="expand-toc">
+      <button class="toc" onclick="expandToc()">
+        <i class="fa fa-expand" aria-hidden="true"></i>
+      </button>
+    </aside>
+    {{ end }}
+  </main>
+
+  {{ partial "docs/inject/body" . }}
+
+  <!-- Google Analytics -->
+  <script>
+    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+    ga('create', 'UA-52545728-1', 'auto');
+    ga('send', 'pageview');
+  </script>
+</body>
+
+</html>
+
+{{ define "menu" }}
+  {{ partial "docs/menu" . }}
+{{ end }}
+
+{{ define "header" }}
+  {{ partial "docs/header" . }}
+
+  {{ if default true (default .Site.Params.BookToC .Params.BookToC) }}
+  <aside class="hidden clearfix">
+    {{ template "toc" . }}
+  </aside>
+  {{ end }}
+{{ end }}
+
+{{ define "footer" }}
+  {{ partial "docs/footer" . }}
+{{ end }}
+
+{{ define "comments" }}
+  {{ if and .Content (default true (default .Site.Params.BookComments .Params.BookComments)) }}
+  <div class="book-comments">
+    {{- partial "docs/comments" . -}}
+  </div>
+  {{ end }}
+{{ end }}
+
+{{ define "main" }}
+  <article class="markdown">
+    {{- .Content -}}
+  </article>
+{{ end }}
+
+{{ define "toc" }}
+  {{ partial "docs/toc" . }}
+{{ end }}
diff --git a/docs/404.md b/docs/layouts/partials/docs/footer.html
similarity index 67%
copy from docs/404.md
copy to docs/layouts/partials/docs/footer.html
index 286c29f..45aa36f 100644
--- a/docs/404.md
+++ b/docs/layouts/partials/docs/footer.html
@@ -1,8 +1,3 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -21,6 +16,13 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+<!--
+    Partial that on the footer of every page.
+-->
+{{ if .IsPage }}
+{{ $folder := "content" }}
+{{ if eq "/zh" .Site.LanguagePrefix }}
+	{{ $folder = "content.zh" }}
+{{ end }}
+<a href="{{ .Site.Params.Repo }}/edit/{{ .Site.Params.Branch }}/docs/{{ $folder }}/{{ .File.Path }}" style="color:black"><i class="fa fa-edit fa-fw"></i>Edit This Page</a>
+{{ end }}
diff --git a/docs/layouts/partials/docs/inject/content-before.html b/docs/layouts/partials/docs/inject/content-before.html
new file mode 100644
index 0000000..273488b
--- /dev/null
+++ b/docs/layouts/partials/docs/inject/content-before.html
@@ -0,0 +1,36 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!--
+    Partial that renders before the content on every page.
+-->
+{{ if $.Site.Params.ShowOutDatedWarning }}
+<article class="markdown">
+    <blockquote style="border-color:#f66">
+        {{ markdownify "This documentation is for an out-of-date version of Apache Flink Stateful Functions. We recommend you use the latest [stable version](https://ci.apache.org/projects/flink/flink-statefun-docs-stable/)."}}
+    </blockquote>
+</article>
+{{ end }}
+{{ if (not $.Site.Params.IsStable) }}
+<article class="markdown">
+    <blockquote style="border-color:#f66">
+        {{ markdownify "This documentation is for an unreleased version of Apache Flink Stateful Functions. We recommend you use the latest [stable version](https://ci.apache.org/projects/flink/flink-statefun-docs-stable/)."}}
+    </blockquote>
+</article>
+{{ end }}
+
diff --git a/docs/404.md b/docs/layouts/partials/docs/inject/head.html
similarity index 72%
copy from docs/404.md
copy to docs/layouts/partials/docs/inject/head.html
index 286c29f..f456c36 100644
--- a/docs/404.md
+++ b/docs/layouts/partials/docs/inject/head.html
@@ -1,8 +1,3 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -21,6 +16,10 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<!--
+    Misc other content that should run in the header
+-->
+<link rel="stylesheet" type="text/css" href="{{.Site.BaseURL}}/font-awesome/css/font-awesome.min.css">
+<script src="{{.Site.BaseURL}}/js/anchor.min.js"></script>
+<script src="{{.Site.BaseURL}}/js/flink.js"></script>
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
diff --git a/docs/layouts/partials/docs/inject/menu-after.html b/docs/layouts/partials/docs/inject/menu-after.html
new file mode 100644
index 0000000..df19fb4
--- /dev/null
+++ b/docs/layouts/partials/docs/inject/menu-after.html
@@ -0,0 +1,76 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!--
+    Content written at the bottom of the menu
+-->
+<br/>
+<hr class="menu-break">
+{{ range $links := .Site.Params.MenuLinks }}
+<a href="{{ index $links 1 }}" style="color:black;margin-bottom:0.5em"><i class="link fa fa-external-link title" aria-hidden="true"></i> {{ index $links 0 }}</a>
+<br/>
+{{ end }}
+<hr class="menu-break">
+<li style="list-style-type: none">
+  <br>
+  <input type="checkbox" id="section-version-picker" class="toggle">
+  <label for="section-version-picker" class="flex justify-between">
+     <div style="font-weight:450;margin-bottom:0.5em">Pick Docs Version</div>
+     <span>▾</span>
+  </label>
+  <ul>
+    <a href="{{.Site.BaseURL}}{{.Site.LanguagePrefix}}">
+      {{ .Site.Params.VersionTitle }} (✓)
+    </a>
+    <hr class="menu-break">
+    {{ range $docs := first 2 .Site.Params.PreviousDocs }}
+      <li>
+        <a href="{{ index $docs 1 }}">
+          v{{ index $docs 0}}
+        </a>
+      </li>
+    {{ end }}
+    <hr class="menu-break">
+    <li>
+      <a href="{{.Site.BaseURL}}{{.Site.LanguagePrefix}}/versions">
+          All Versions
+      </a>
+    </li>
+  </ul>
+</li>
+
+<!-- merge languages into a single dictonary -->
+{{ $translations := dict }}
+{{ range .Site.Home.AllTranslations }}
+  {{ $translations = merge $translations (dict .Language.Lang .) }}
+{{ end }}
+{{ range .Translations }}
+  {{ $translations = merge $translations (dict .Language.Lang .) }}
+{{ end }}
+
+<!-- 
+iterate over the languages and create a button 
+for the one that is not currently active
+-->
+{{ range .Site.Languages }}{{ with index $translations .Lang }}
+{{ if (ne $.Site.Language .Language) }}
+<a  href="{{ .Permalink }}" class="flex align-center">
+  <i class="fa fa-globe" aria-hidden="true"></i>&nbsp;&nbsp;
+  {{ .Language.LanguageName }}
+</a>
+{{ end }}{{ end }}{{ end }}
diff --git a/docs/404.md b/docs/layouts/partials/docs/inject/menu-before.html
similarity index 74%
rename from docs/404.md
rename to docs/layouts/partials/docs/inject/menu-before.html
index 286c29f..95e0f8f 100644
--- a/docs/404.md
+++ b/docs/layouts/partials/docs/inject/menu-before.html
@@ -1,8 +1,3 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -21,6 +16,10 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+<!--
+    Partial that renders at the top of the menu.
+-->
+<a id="logo" href="{{.Site.BaseURL}}{{.Site.LanguagePrefix}}">
+    <img width="70%" src="{{.Site.BaseURL}}/navbar-brand-logo.jpg">
+</a>
+<p style="text-align:right">v{{ $.Site.Params.Version }}</p>
\ No newline at end of file
diff --git a/docs/concepts/index.md b/docs/layouts/partials/docs/interpolate.html
similarity index 75%
copy from docs/concepts/index.md
copy to docs/layouts/partials/docs/interpolate.html
index f95bf91..6b9702a 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/partials/docs/interpolate.html
@@ -1,13 +1,3 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -26,3 +16,9 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<!--
+    Partial that interpolates $scala_version and $version into strings.
+-->
+{{ $str := replace . "$scala_version" site.Params.ScalaVersion }}
+{{ $str = replace $str "$version" site.Params.Version }} 
+{{ return $str }}
\ No newline at end of file
diff --git a/docs/layouts/partials/docs/menu-filetree.html b/docs/layouts/partials/docs/menu-filetree.html
new file mode 100644
index 0000000..b583347
--- /dev/null
+++ b/docs/layouts/partials/docs/menu-filetree.html
@@ -0,0 +1,68 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!--
+    Partial that renders the side navigation.
+-->
+{{ $bookSection := default "docs" .Site.Params.BookSection  }}
+{{ if eq $bookSection "*" }}
+  {{ $bookSection = "/" }}{{/* Backward compatibility */}}
+{{ end }}
+
+{{ with .Site.GetPage $bookSection }}
+  {{ template "book-section-children" (dict "Section" . "CurrentPage" $) }}
+{{ end }}
+
+{{ define "book-section-children" }}{{/* (dict "Section" .Section "CurrentPage" .CurrentPage) */}}
+  <ul>
+    {{ range (where .Section.Pages "Params.bookhidden" "ne" true) }}
+      {{ if .IsSection }}
+        <li {{- if .Params.BookFlatSection }} class="book-section-flat" {{ end -}}>
+          {{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
+          {{ template "book-section-children" (dict "Section" . "CurrentPage" $.CurrentPage) }}
+        </li>
+      {{ else if and .IsPage .Content }}
+        <li>
+          {{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
+        </li>
+      {{ end }}
+    {{ end }}
+  </ul>
+{{ end }}
+
+{{ define "book-page-link" }}{{/* (dict "Page" .Page "CurrentPage" .CurrentPage) */}}
+  {{ $current := eq .CurrentPage .Page }}
+  {{ $ancestor := .Page.IsAncestor .CurrentPage }}
+
+  {{ if .Page.Params.sectionBreak }}
+  	<br/>
+  {{ end }}
+  {{ if .Page.Params.bookCollapseSection }}
+    <input type="checkbox" id="section-{{ md5 .Page }}" class="toggle" {{ if or $current $ancestor }}checked{{ end }} />
+    <label for="section-{{ md5 .Page }}" class="flex justify-between">
+      {{- partial "docs/title" .Page -}}
+      <span>▾</span>
+    </label>
+  {{ else if .Page.Content }}
+    <a href="{{ .Page.Permalink }}" class="{{ if $current }} active{{ end }}">
+      {{- partial "docs/title" .Page -}}
+    </a>
+  {{ else }}
+    <span>{{- partial "docs/title" .Page -}}</span>
+  {{ end }}
+{{ end }}
diff --git a/docs/layouts/partials/docs/menu.html b/docs/layouts/partials/docs/menu.html
new file mode 100644
index 0000000..77d0301
--- /dev/null
+++ b/docs/layouts/partials/docs/menu.html
@@ -0,0 +1,42 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!--
+    Partial that renders the sites menu.
+-->
+<nav>
+{{ partial "docs/inject/menu-before" . }}
+{{ partial "docs/search" . }}
+
+{{ partial "docs/menu-hugo" .Site.Menus.before }}
+
+{{ if .Site.Params.BookMenuBundle }}
+  {{ partial "docs/menu-bundle" . }}
+{{ else }}
+  {{ partial "docs/menu-filetree" . }}
+{{ end }}
+
+{{ partial "docs/menu-hugo" .Site.Menus.after }}
+{{ partial "docs/inject/menu-after" . }}
+</nav>
+
+<!-- Restore menu position as soon as possible to avoid flickering -->
+{{ $script := resources.Get "menu-reset.js" | resources.Minify }}
+{{ with $script.Content }}
+  <script>{{ . | safeJS }}</script>
+{{ end }}
diff --git a/docs/404.md b/docs/layouts/partials/docs/simple-title.html
similarity index 66%
copy from docs/404.md
copy to docs/layouts/partials/docs/simple-title.html
index 286c29f..b324d48 100644
--- a/docs/404.md
+++ b/docs/layouts/partials/docs/simple-title.html
@@ -1,8 +1,3 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -21,6 +16,18 @@
 specific language governing permissions and limitations
 under the License.
 -->
+<!-- 
+  Partial to generate page name without sytling
+  from Title or File name. Accepts Page as context.
+-->
+{{ $title := "" }}
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+{{ if .Title }}
+  {{ $title = .Title }}
+{{ else if and .IsSection .File }}
+  {{ $title = path.Base .File.Dir | humanize | title }}
+{{ else if and .IsPage .File }}
+  {{ $title = .File.BaseFileName | humanize | title }}
+{{ end }}
+
+{{ return $title }}
\ No newline at end of file
diff --git a/docs/layouts/partials/docs/title.html b/docs/layouts/partials/docs/title.html
new file mode 100644
index 0000000..f9c96da
--- /dev/null
+++ b/docs/layouts/partials/docs/title.html
@@ -0,0 +1,42 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<!-- 
+  Partial to generate page name from Title or File name.
+  Accepts Page as context
+-->
+{{ $title := "" }}
+
+{{ if .Title }}
+  {{ $title = .Title }}
+{{ else if and .IsSection .File }}
+  {{ $title = path.Base .File.Dir | humanize | title }}
+{{ else if and .IsPage .File }}
+  {{ $title = .File.BaseFileName | humanize | title }}
+{{ end }}
+
+{{ if .Params.icon }}
+  {{ $title = printf "%s&nbsp;&nbsp;%s" .Params.icon $title }}
+{{ end }}
+
+{{ if .Params.bold }}
+  {{ $title = printf `<div style="font-weight:450;margin-bottom:0.5em">%s</div>` $title }}
+{{ end }}
+
+{{ return ($title | safeHTML) }}
+
diff --git a/docs/404.md b/docs/layouts/partials/docs/toc.html
similarity index 63%
copy from docs/404.md
copy to docs/layouts/partials/docs/toc.html
index 286c29f..863eec2 100644
--- a/docs/404.md
+++ b/docs/layouts/partials/docs/toc.html
@@ -1,8 +1,3 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -21,6 +16,8 @@
 specific language governing permissions and limitations
 under the License.
 -->
-
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+{{/* 
+	Generates the pages table of contents. Unfortunately, hugo does not give us a lot of flexibility 
+	around how the TOC is generated so we have to fall back to a regex to add the header.	
+*/}}
+{{ .TableOfContents | replaceRE "<nav id=\"TableOfContents\">" "<nav id=\"TableOfContents\"><h3>On This Page <button class=\"toc\" onclick=\"collapseToc()\"><i class=\"fa fa-compress\" aria-hidden=\"true\"></i></button></h3>" | safeHTML }}
diff --git a/docs/404.md b/docs/layouts/shortcodes/all_versions.html
similarity index 69%
copy from docs/404.md
copy to docs/layouts/shortcodes/all_versions.html
index 286c29f..64021f1 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/all_versions.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,16 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
-
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+*/}}{{/*
+    Generate a list of links to all previous
+    versions of the Flink docs.
+*/}}
+<ul class="book-languages-list">
+    {{ range $docs := .Site.Params.PreviousDocs }}
+        <li>
+            <a href="{{ index $docs 1 }}">
+                v{{ index $docs 0}}
+            </a>
+        </li>
+    {{ end }}
+</ul>
\ No newline at end of file
diff --git a/docs/layouts/shortcodes/artifact.html b/docs/layouts/shortcodes/artifact.html
new file mode 100644
index 0000000..5afd4c7
--- /dev/null
+++ b/docs/layouts/shortcodes/artifact.html
@@ -0,0 +1,64 @@
+{{/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/}}
+{{/* 
+  Generates an XML snippet for the maven artifact. 
+  IMPORTANT: the whitespace is relevant. Do not change without looking at the 
+  rendered documentation. 
+*/}}
+{{ $scalaVersion := "" }}
+{{ $testScope := "" }}
+{{ $testClassifier := "" }}
+{{ $providedScope := "" }}
+
+{{ $artifactId := .Get 0 }}
+
+{{ $path := .Page.Path }}
+
+{{ range after 1 .Params }}
+  {{ if eq . "withScalaVersion" }}
+    {{ $scalaVersion = "true" }}
+  {{ else if eq . "withTestScope" }}
+    {{ $testScope = "true" }}
+  {{ else if eq . "withTestClassifier" }}
+    {{ $testClassifier = "true" }}
+  {{ else if eq . "withProvidedScope" }}
+    {{ $providedScope = "true" }}
+  {{ else }}
+    {{ errorf "%q: Invalid use of artifact shortcode. Unknown flag `%s`" $path . }}
+  {{ end }}
+{{ end }}
+{{ $scalaVersion := .Get 1 }}
+
+{{ $hash := md5 now }}
+
+{{ if ne $scalaVersion "" }}
+  {{ $artifactId = printf "%s%s" $artifactId $.Site.Params.ScalaVersion }}
+{{ end }}
+
+<div id="{{ $hash }}" onclick="selectTextAndCopy('{{ $hash }}')"class="highlight"><pre class="chroma"><code class="language-xml" data-lang="xml"><span class="nt">&ltdependency&gt</span>
+    <span class="nt">&ltgroupId&gt</span>org.apache.flink<span class="nt">&lt/groupId&gt</span>
+    <span class="nt">&ltartifactId&gt</span>{{- $artifactId -}}<span class="nt">&lt/artifactId&gt</span>
+    <span class="nt">&ltversion&gt</span>{{- site.Params.Version -}}<span class="nt">&lt/version&gt</span>{{ if ne $providedScope "" }}
+    <span class="nt">&ltscope&gt</span>provided<span class="nt">&lt/scope&gt</span>{{ end }}{{ if ne $testScope "" }}    
+    <span class="nt">&ltscope&gt</span>test<span class="nt">&lt/scope&gt</span>{{ end }}{{ if ne $testClassifier "" }}    
+    <span class="nt">&ltclassifer&gt</span>tests<span class="nt">&lt/classifier&gt</span>{{ end }}
+<span class="nt">&lt/dependency&gt</span></code></pre></div>
+<div class="book-hint info" style="text-align:center;display:none" copyable="flink-module" copyattribute="{{ $hash }}">
+  Copied to clipboard!
+</div> 
diff --git a/docs/404.md b/docs/layouts/shortcodes/beta.html
similarity index 68%
copy from docs/404.md
copy to docs/layouts/shortcodes/beta.html
index 286c29f..ddb7bda 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/beta.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,11 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
-
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+*/}}{{/*
+    Adds a warning that the current feature is in BETA.
+*/}}
+<blockquote class="book-hint warning">
+    This feature is currency marked as <b>BETA</b> and in an evolving state.
+    As such, there are <b>no guaruntees</b> made about feature stability
+    and breaking changes may occur in future Flink versions.
+</blockquote>
\ No newline at end of file
diff --git a/docs/concepts/index.md b/docs/layouts/shortcodes/center.html
similarity index 74%
copy from docs/concepts/index.md
copy to docs/layouts/shortcodes/center.html
index f95bf91..ed9d728 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/shortcodes/center.html
@@ -1,14 +1,4 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -25,4 +15,11 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+    Shortcode for centering text
+
+    Parmeters: markdown text
+*/}}
+<div style="text-align: center;">
+    {{ .Inner | markdownify }}
+</div>
\ No newline at end of file
diff --git a/docs/404.md b/docs/layouts/shortcodes/gh_link.html
similarity index 64%
copy from docs/404.md
copy to docs/layouts/shortcodes/gh_link.html
index 286c29f..66e9c7b 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/gh_link.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,15 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+    Shortcode for linking to a file in github. This shortcode
+    will automatically discover the repo and correct branch.
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+    Parmeters: 
+        - file: The absolute path to the image file (required)
+        - name: The rendered link name (required)
+*/}}
+<a href="{{ .Site.Params.Repo }}/blob/{{ .Site.Params.Branch }}/{{ .Get "file" }}">
+    {{ .Get "name" | markdownify }}
+</a>
+
diff --git a/docs/concepts/index.md b/docs/layouts/shortcodes/github_repo.html
similarity index 74%
copy from docs/concepts/index.md
copy to docs/layouts/shortcodes/github_repo.html
index f95bf91..1ede677 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/shortcodes/github_repo.html
@@ -1,14 +1,4 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -25,4 +15,8 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+    Shortcode that interpolates the the full github repo
+
+    Parmeters: None
+*/}}{{- $.Site.Params.GithubRepo -}}
\ No newline at end of file
diff --git a/docs/404.md b/docs/layouts/shortcodes/img.html
similarity index 61%
copy from docs/404.md
copy to docs/layouts/shortcodes/img.html
index 286c29f..e0cd0a5 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/img.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,20 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+  Shortcode for embedding an image.
+  This is more powerful than plain markdown
+  because we can configure the HTML image tag
+  properties.
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+  Parmeters: 
+      - src: The absolute path to the image file (required)
+      - alt: Image alt text (optional)
+      - width: Image width (optional)
+*/}}
+<img 
+  src="{{.Site.BaseURL}}{{ .Get "src" }}"
+  alt="{{ .Get "alt" }}"
+  width="{{ .Get "width" }}"
+  style="display:block;margin-left:auto;margin-right:auto"
+>
\ No newline at end of file
diff --git a/docs/concepts/index.md b/docs/layouts/shortcodes/javadoc.html
similarity index 74%
copy from docs/concepts/index.md
copy to docs/layouts/shortcodes/javadoc.html
index f95bf91..c76d684 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/shortcodes/javadoc.html
@@ -1,14 +1,4 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -25,4 +15,12 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+    Shortcode for linking to Flinks JavaDoc
+
+    Parmeters: 
+        - name: The rendered link name (required)
+*/}}
+<a href="{{ .Site.Params.JavaDoc }}">
+    {{ .Get "name" }}
+</a>
\ No newline at end of file
diff --git a/docs/404.md b/docs/layouts/shortcodes/label.html
similarity index 67%
copy from docs/404.md
copy to docs/layouts/shortcodes/label.html
index 286c29f..2a1f39b 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/label.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,15 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+  Shortcode for embedding an image.
+  This is more powerful than plain markdown
+  because we can configure the HTML image tag
+  properties.
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+  Parmeters: 
+      - src: The absolute path to the image file (required)
+      - alt: Image alt text (optional)
+      - width: Image width (optional)
+*/}}
+<span class="label">{{ .Get 0 }}</span>
\ No newline at end of file
diff --git a/docs/404.md b/docs/layouts/shortcodes/query_state_warning.html
similarity index 66%
copy from docs/404.md
copy to docs/layouts/shortcodes/query_state_warning.html
index 286c29f..f491334 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/query_state_warning.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,6 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
-
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+*/}}
+For streaming queries the required state to compute the query result might grow infinitely depending on the type of aggregation and the number of distinct grouping keys. Please provide a query configuration with valid retention interval to prevent excessive state size.
+See <a href="/docs/dev/table/streaming/query_configuration">Query Configuration</a> for details.
diff --git a/docs/concepts/index.md b/docs/layouts/shortcodes/scala_version.html
similarity index 74%
copy from docs/concepts/index.md
copy to docs/layouts/shortcodes/scala_version.html
index f95bf91..b77c77e 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/shortcodes/scala_version.html
@@ -1,14 +1,4 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -25,4 +15,8 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+    Shortcode for interpolating the scala version set in conf.toml
+
+    Parmeters: None
+*/}}{{- $.Site.Params.ScalaVersion -}}
\ No newline at end of file
diff --git a/docs/404.md b/docs/layouts/shortcodes/selectable.html
similarity index 65%
copy from docs/404.md
copy to docs/layouts/shortcodes/selectable.html
index 286c29f..36e53d1 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/selectable.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,16 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+  Shortcode that automatically copies the content to the users
+  clipboard.
+*/}}
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+{{ $hash := md5 now }}
+
+<div id="{{ $hash }}" onclick="selectTextAndCopy('{{ $hash }}')"class="highlight">
+{{- .Inner | markdownify -}}
+</div>
+<div class="book-hint info" style="text-align:center;display:none" copyable="flink-module" copyattribute="{{ $hash }}">
+  Copied to clipboard!
+</div> 
diff --git a/docs/concepts/index.md b/docs/layouts/shortcodes/stable.html
similarity index 74%
copy from docs/concepts/index.md
copy to docs/layouts/shortcodes/stable.html
index f95bf91..1a395d6 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/shortcodes/stable.html
@@ -1,14 +1,4 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -25,4 +15,9 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+  Shortcode that only renders its contents if the site
+  is marked as stable.
+
+  Parmeters: Markdown text
+*/}}{{ if $.Site.Params.IsStable }}{{ .Inner | markdownify }}{{ end }}
\ No newline at end of file
diff --git a/docs/404.md b/docs/layouts/shortcodes/tab.html
similarity index 63%
copy from docs/404.md
copy to docs/layouts/shortcodes/tab.html
index 286c29f..7092e99 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/tab.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,18 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+  Shortcode for a single tab. See tabs.
+*/}}
+{{ if .Parent }}
+  {{ $name := .Get 0 }}
+  {{ $group := printf "tabs-%s" (.Parent.Get 0) }}
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+  {{ if not (.Parent.Scratch.Get $group) }}
+    {{ .Parent.Scratch.Set $group slice }}
+  {{ end }}
+
+  {{ .Parent.Scratch.Add $group (dict "Name" $name "Content" .Inner) }}
+{{ else }}
+  {{ errorf "%q: 'tab' shortcode must be inside 'tabs' shortcode" .Page.Path }}
+{{ end}}
diff --git a/docs/layouts/shortcodes/tabs.html b/docs/layouts/shortcodes/tabs.html
new file mode 100644
index 0000000..38459bd
--- /dev/null
+++ b/docs/layouts/shortcodes/tabs.html
@@ -0,0 +1,44 @@
+{{/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+*/}}{{/*
+  Shortcode for a rendering tabs.
+*/}}
+{{ if .Inner }}{{ end }}
+{{ $id := .Get 0 }}
+{{ $group := printf "tabs-%s" $id }}
+
+<div class="book-tabs">
+{{- range $index, $tab := .Scratch.Get $group -}}
+  <input 
+    type="radio"
+    class="toggle"
+    data-tab-group="flink-tabs"
+    data-tab-item="{{ $tab.Name }}"
+    name="{{ $group }}"
+    id="{{ printf "%s-%d" $group $index }}"
+    {{ if not $index }}checked="checked"{{ end }} 
+    onclick="onSwitch('{{ $tab.Name }}')"
+  />
+  <label for="{{ printf "%s-%d" $group $index }}">
+    {{- $tab.Name -}}
+  </label>
+  <div class="book-tabs-content markdown-inner">
+    {{- .Content | markdownify -}}
+  </div>
+{{- end -}}
+</div>
diff --git a/docs/concepts/index.md b/docs/layouts/shortcodes/top.html
similarity index 74%
copy from docs/concepts/index.md
copy to docs/layouts/shortcodes/top.html
index f95bf91..11d6808 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/shortcodes/top.html
@@ -1,14 +1,4 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -25,4 +15,10 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+  Shortcode that adds a "Back to Top" link.
+
+  Parmeters: None
+*/}}
+<p><a href="#top" class="top pull-right"><i class="fas fa-triangle"></i> Back to top</a></p>
+
diff --git a/docs/404.md b/docs/layouts/shortcodes/training_link.html
similarity index 64%
copy from docs/404.md
copy to docs/layouts/shortcodes/training_link.html
index 286c29f..2f0e3cb 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/training_link.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,14 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+    Shortcode for linking to a file in the training repo github. This shortcode
+    will automatically discover the repo and correct branch.
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+    Parmeters: 
+        - file: The absolute path to the image file (required)
+        - name: The rendered link name (required)
+*/}}
+<a href="{{ .Site.Params.TrainingExercises }}/blob/{{ .Site.Params.Branch }}/{{ .Get "file" }}">
+    {{ .Get "name" }}
+</a>
diff --git a/docs/404.md b/docs/layouts/shortcodes/training_repo.html
similarity index 64%
copy from docs/404.md
copy to docs/layouts/shortcodes/training_repo.html
index 286c29f..939f334 100644
--- a/docs/404.md
+++ b/docs/layouts/shortcodes/training_repo.html
@@ -1,9 +1,4 @@
----
-title: "404"
-permalink: /404.html
-layout: 404_base
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -20,7 +15,15 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+    Shortcode for linking to a file in the training repo github. This shortcode
+    will automatically discover the repo and correct branch.
 
-The page you are looking for has been moved. This could be because of a recent reorganization of the
-documentation. Redirecting to [Documentation Home Page]({{ site.baseurl }}) in 5 seconds.
+    Parmeters: 
+        - file: The absolute path to the image file (required)
+        - name: The rendered link name (required)
+*/}}
+<a href="{{ .Site.Params.TrainingExercises }}/tree/{{ .Site.Params.Branch }}/">
+    flink-training-repo
+</a>
+
diff --git a/docs/concepts/index.md b/docs/layouts/shortcodes/unstable.html
similarity index 74%
copy from docs/concepts/index.md
copy to docs/layouts/shortcodes/unstable.html
index f95bf91..6ad4c17 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/shortcodes/unstable.html
@@ -1,14 +1,4 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -25,4 +15,9 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+  Shortcode that only renders its contents if the site
+  is not marked as stable.
+
+  Parmeters: Markdown text
+*/}}{{ if (not $.Site.Params.IsStable) }}{{ .Inner | markdownify }}{{ end }}
\ No newline at end of file
diff --git a/docs/concepts/index.md b/docs/layouts/shortcodes/version.html
similarity index 74%
copy from docs/concepts/index.md
copy to docs/layouts/shortcodes/version.html
index f95bf91..6773914 100644
--- a/docs/concepts/index.md
+++ b/docs/layouts/shortcodes/version.html
@@ -1,14 +1,4 @@
----
-title: Concepts
-nav-id: concepts
-nav-pos: 2
-nav-title: '<i class="fa fa-map-o title appetizer" aria-hidden="true"></i> Concepts'
-nav-parent_id: root
-nav-show_overview: false 
-permalink: /concepts/index.html
-always-expand: true
----
-<!--
+{{/*
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
@@ -25,4 +15,8 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
+*/}}{{/*
+    Shortcode that interpolates the the full maven version (x.y.z)
+
+    Parmeters: None
+*/}}{{- $.Site.Params.Version -}}
\ No newline at end of file
diff --git a/docs/page/css/codetabs.css b/docs/page/css/codetabs.css
deleted file mode 100644
index 949453e..0000000
--- a/docs/page/css/codetabs.css
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
-**/
-
-.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover {
-  color: #08c !important;
-}
-
-.nav-tabs > li > a, .nav-tabs > li > a:hover {
-  color: #333;
-}
-
-.nav.nav-tabs {
-    margin-bottom: 20px;
-}
diff --git a/docs/page/css/flink.css b/docs/page/css/flink.css
deleted file mode 100644
index cb41239..0000000
--- a/docs/page/css/flink.css
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-body {
-	padding-top: 10px;
-	padding-bottom: 50px;
-}
-
-.content {
-	padding-top: 10px;
-}
-
-.breadcrumb {
-	background: #f8f8f8;
-}
-
-.footer {
-	color: #7f8c8d;
-	margin-top: 4em;
-	padding-top: 1em;
-	border-top: 1px solid #e5e5e5;
-	font-size: .9em;
-}
-
-@media (min-width: 992px) and (max-width: 1200px) {
-    #contentcol { float: left; width: 70%; }
-    #sidenavcol { float: left; width: 30%; }
-}
-
-/*=============================================================================
- Per page TOC
-=============================================================================*/
-
-/* Move the side nav a little bit down to align with the main heading */
-#markdown-toc {
-	font-size: 90%;
-	padding-top: 16px;
-	padding-bottom: 16px;
-}
-
-/* Custom list styling */
-#markdown-toc, #markdown-toc ul {
-	list-style: none;
-	display: block;
-	position: relative;
-	padding-left: 0;
-	margin-bottom: 0;
-}
-
-/* All element */
-#markdown-toc li > a {
-	color: #000;
-	display: block;
-	padding: 5px 10px;
-	border: 1px solid #E5E5E5;
-	margin: -1px;
-}
-#markdown-toc li > a:hover,
-#markdown-toc li > a:focus {
-  text-decoration: underline;
-  background-color: #eee;
-}
-
-@media (min-width: 768px) {
-	#markdown-toc > li {
-		width: 400px;
-	}
-}
-
-/* 1st-level elements */
-#markdown-toc > li > a {
-	font-weight: bold;
-}
-
-/* 2nd-level element */
-#markdown-toc > li li > a {
-	padding-left: 20px; /* A little more indentation*/
-}
-
-/* >= 3rd-level element */
-#markdown-toc > li li li {
-	display: none; /* hide */
-}
-
-#markdown-toc li:last-child > a {
-	border-bottom: 1px solid #E5E5E5;
-}
-
-/*=============================================================================
-                                    Text
-=============================================================================*/
-
-h2 {
-	border-bottom: 1px solid #e5e5e5;
-}
-
-h2, h3, h4 {
-	padding-top: 1em;
-}
-
-code {
-	color: #000000;
-	background: #ffffff;
-	padding: 1px;
-	font-family: "Menlo", "Lucida Console", monospace;
-}
-
-pre {
-	background: #f7f7f7;
-	border: none;
-	font-size: 12px;
-	font-family: "Menlo", "Lucida Console", monospace;
-}
-
-img.center {
-	display: block;
-	margin-left: auto;
-	margin-right: auto;
-}
-
-a.top {
-	color: black;
-	text-decoration: none
-}
-
-.text {
-	font-size: 14px;
-}
-
-.beta {
-	font-weight: normal;
-	color: #333;
-}
-
-table {
-	width: 100%;
-}
-
-th {
-	text-align: center;
-}
-
-td {
-	padding: 5px;
-}
-
-img.offset {
-	display: block;
-	margin-left: auto;
-	margin-right: auto;
-	margin-bottom: 30px;
-	margin-top: 30px;
-	padding: 10px;
-}
-
-/*=============================================================================
-            AnchorJS (anchor links when hovering over headers)
-=============================================================================*/
-
-.anchorjs-link:hover {
-    text-decoration: none;
-}
-*:hover > .anchorjs-link {
-    transition: color .25s linear;
-}
-
-/*=============================================================================
-                                 Gelly Graphs
-=============================================================================*/
-
-svg.graph line {
-    stroke: rgb(255,0,0);
-    stroke-width: 4;
-}
-
-svg.graph circle {
-    fill: red;
-    stroke: black;
-    stroke-width: 3;
-}
-
-svg.graph text {
-    dominant-baseline: central;
-    font-size: 32px;
-    text-anchor: middle;
-}
-
-/*=============================================================================
- Side navigation
-=============================================================================*/
-
-#sidenav a i.title {
-    min-width: 21px;
-}
-
-#sidenav a i.title.appetizer {
-    color: #FBB142;
-}
-
-#sidenav a i.title.maindish {
-    color: #7E4F89;
-}
-
-#sidenav a i.title.dessert {
-    color: #E6526F;
-}
-
-#sidenav hr.section-break {
-    margin-bottom: 5px;
-    border-top: 0px;
-}
-
-#sidenav, #sidenav ul {
-	list-style: none;
-	display: block;
-	position: relative;
-	padding: 0;
-	margin: 0;
-	color: black;
-}
-
-ul#sidenav {
-	padding: 10px;
-	border: 1px solid #ffffff;
-	background: #f8f8f8;
-	font-size: 15px;
-}
-
-#sidenav a {
-	display: block;
-	color: black;
-	text-decoration: none;
-}
-
-#sidenav a.active {
-	font-weight: bold;
-}
-
-#sidenav a:hover, #sidenav a:focus {
-	font-weight: bold;
-}
-
-/* 1st-level elements */
-#sidenav > li {
-	padding: 10px 5px 5px 5px;
-}
-
-/* 2nd-level element */
-#sidenav > li > ul {
-		padding-top: 5px;
-}
-
-#sidenav > li li {
-	padding: 5px 0px 0px 15px;
-	font-size: 14px;
-}
-
-#sidenav > li li li {
-	font-size: 13px;
-}
-
-.sidenav-search-box {
-	text-align: center;
-	padding: 10px;
-	background: #ececec;
-	border: 1px solid #fff;
-}
-
-.sidenav-logo {
-	text-align: center;
-	padding-top: 10px;
-}
-
-.sidenav-logo img {
-	width: 125px;
-	vertical-align: text-bottom;
-	padding-bottom: 2px;
-}
-
-.sidenav-logo p {
-	font-weight: bold;
-	font-size: 13px;
-}
-
-.sidenav-versions {
-	margin-top: 10px;
-	padding: 10px;
-}
-
-.sidenav-versions button {
-	width: 100%;
-}
-
-.sidenav-languages {
-	padding: 10px;
-}
-
-.sidenav-languages button {
-	width: 100%;
-}
diff --git a/docs/page/css/syntax.css b/docs/page/css/syntax.css
deleted file mode 100644
index ba3c0ba..0000000
--- a/docs/page/css/syntax.css
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
-**/
-
-.highlight  { background: #ffffff; }
-.highlight .c { color: #999988; font-style: italic } /* Comment */
-.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
-.highlight .k { font-weight: bold } /* Keyword */
-.highlight .o { font-weight: bold } /* Operator */
-.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
-.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
-.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #aa0000 } /* Generic.Error */
-.highlight .gh { color: #999999 } /* Generic.Heading */
-.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
-.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
-.highlight .go { color: #888888 } /* Generic.Output */
-.highlight .gp { color: #555555 } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
-.highlight .gt { color: #aa0000 } /* Generic.Traceback */
-.highlight .kc { font-weight: bold } /* Keyword.Constant */
-.highlight .kd { font-weight: bold } /* Keyword.Declaration */
-.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
-.highlight .kr { font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
-.highlight .m { color: #009999 } /* Literal.Number */
-.highlight .s { color: #d14 } /* Literal.String */
-.highlight .na { color: #008080 } /* Name.Attribute */
-.highlight .nb { color: #0086B3 } /* Name.Builtin */
-.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
-.highlight .no { color: #008080 } /* Name.Constant */
-.highlight .ni { color: #800080 } /* Name.Entity */
-.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
-.highlight .nn { color: #555555 } /* Name.Namespace */
-.highlight .nt { color: #000080 } /* Name.Tag */
-.highlight .nv { color: #008080 } /* Name.Variable */
-.highlight .ow { font-weight: bold } /* Operator.Word */
-.highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mf { color: #009999 } /* Literal.Number.Float */
-.highlight .mh { color: #009999 } /* Literal.Number.Hex */
-.highlight .mi { color: #009999 } /* Literal.Number.Integer */
-.highlight .mo { color: #009999 } /* Literal.Number.Oct */
-.highlight .sb { color: #d14 } /* Literal.String.Backtick */
-.highlight .sc { color: #d14 } /* Literal.String.Char */
-.highlight .sd { color: #d14 } /* Literal.String.Doc */
-.highlight .s2 { color: #d14 } /* Literal.String.Double */
-.highlight .se { color: #d14 } /* Literal.String.Escape */
-.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
-.highlight .si { color: #d14 } /* Literal.String.Interpol */
-.highlight .sx { color: #d14 } /* Literal.String.Other */
-.highlight .sr { color: #009926 } /* Literal.String.Regex */
-.highlight .s1 { color: #d14 } /* Literal.String.Single */
-.highlight .ss { color: #990073 } /* Literal.String.Symbol */
-.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #008080 } /* Name.Variable.Class */
-.highlight .vg { color: #008080 } /* Name.Variable.Global */
-.highlight .vi { color: #008080 } /* Name.Variable.Instance */
-.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
diff --git a/docs/page/img/LICENSE.txt b/docs/page/img/LICENSE.txt
deleted file mode 100644
index 35b8673..0000000
--- a/docs/page/img/LICENSE.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-All image files in the folder and its subfolders are
-licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
\ No newline at end of file
diff --git a/docs/page/img/navbar-brand-logo.png b/docs/page/img/navbar-brand-logo.png
deleted file mode 100644
index 677c4d7..0000000
--- a/docs/page/img/navbar-brand-logo.png
+++ /dev/null
Binary files differ
diff --git a/docs/page/js/flink.js b/docs/page/js/flink.js
deleted file mode 100644
index 885a8ff..0000000
--- a/docs/page/js/flink.js
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/* Note: This file is originally from the Apache Spark project. */
-
-/* Custom JavaScript code in the MarkDown docs */
-
-// Enable language-specific code tabs
-function codeTabs() {
-  var counter = 0;
-  var langImages = {
-    "scala": "img/scala-sm.png",
-    "python": "img/python-sm.png",
-    "java": "img/java-sm.png"
-  };
-  $("div.codetabs").each(function() {
-    $(this).addClass("tab-content");
-
-    // Insert the tab bar
-    var tabBar = $('<ul class="nav nav-tabs" data-tabs="tabs"></ul>');
-    $(this).before(tabBar);
-
-    // Add each code sample to the tab bar:
-    var codeSamples = $(this).children("div");
-    codeSamples.each(function() {
-      $(this).addClass("tab-pane");
-      var lang = $(this).data("lang");
-      var image = $(this).data("image");
-      var notabs = $(this).data("notabs");
-      var capitalizedLang = lang.substr(0, 1).toUpperCase() + lang.substr(1);
-      lang = lang.replace(/[^a-zA-Z0-9]/g, "_");
-      var id = "tab_" + lang + "_" + counter;
-      $(this).attr("id", id);
-      if (image != null && langImages[lang]) {
-        var buttonLabel = "<img src='" +langImages[lang] + "' alt='" + capitalizedLang + "' />";
-      } else if (notabs == null) {
-        var buttonLabel = "<b>" + capitalizedLang + "</b>";
-      } else {
-        var buttonLabel = ""
-      }
-      tabBar.append(
-        '<li><a class="tab_' + lang + '" href="#' + id + '">' + buttonLabel + '</a></li>'
-      );
-    });
-
-    codeSamples.first().addClass("active");
-    tabBar.children("li").first().addClass("active");
-    counter++;
-  });
-  $("ul.nav-tabs a").click(function (e) {
-    // Toggling a tab should switch all tabs corresponding to the same language
-    // while retaining the scroll position
-    e.preventDefault();
-    var scrollOffset = $(this).offset().top - $(document).scrollTop();
-    $("." + $(this).attr('class')).tab('show');
-    $(document).scrollTop($(this).offset().top - scrollOffset);
-  });
-}
-
-function makeCollapsable(elt, accordionClass, accordionBodyId, title) {
-  $(elt).addClass("accordion-inner");
-  $(elt).wrap('<div class="accordion ' + accordionClass + '"></div>')
-  $(elt).wrap('<div class="accordion-group"></div>')
-  $(elt).wrap('<div id="' + accordionBodyId + '" class="accordion-body collapse"></div>')
-  $(elt).parent().before(
-    '<div class="accordion-heading">' +
-      '<a class="accordion-toggle" data-toggle="collapse" href="#' + accordionBodyId + '">' +
-             title +
-      '</a>' +
-    '</div>'
-  );
-}
-
-// Enable "view solution" sections (for exercises)
-function viewSolution() {
-  var counter = 0
-  $("div.solution").each(function() {
-    var id = "solution_" + counter
-    makeCollapsable(this, "", id,
-      '<i class="icon-ok-sign" style="text-decoration: none; color: #0088cc">' +
-      '</i>' + "View Solution");
-    counter++;
-  });
-}
-
-// A script to fix internal hash links because we have an overlapping top bar.
-// Based on https://github.com/twitter/bootstrap/issues/193#issuecomment-2281510
-function maybeScrollToHash() {
-  if (window.location.hash && $(window.location.hash).length) {
-    var newTop = $(window.location.hash).offset().top - 57;
-    $(window).scrollTop(newTop);
-  }
-}
-
-$(function() {
-  codeTabs();
-  viewSolution();
-
-  // Display anchor links when hovering over headers. For documentation of the
-  // configuration options, see the AnchorJS documentation.
-  anchors.options = {
-      placement: 'right'
-  };
-  anchors.add();
-
-  $(window).bind('hashchange', function() {
-    maybeScrollToHash();
-  });
-
-  // Scroll now too in case we had opened the page on a hash, but wait a bit because some browsers
-  // will try to do *their* initial scroll after running the onReady handler.
-  $(window).load(function() { setTimeout(function() { maybeScrollToHash(); }, 25); }); 
-});
diff --git a/docs/page/js/jquery.min.js b/docs/page/js/jquery.min.js
deleted file mode 100644
index e6a051d..0000000
--- a/docs/page/js/jquery.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v1.11.2 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.2",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
-return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)
-}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/docs/search-results.md b/docs/search-results.md
deleted file mode 100644
index 5d8de99..0000000
--- a/docs/search-results.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title:  "Search Results"
----
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<script>
-  (function() {
-    var cx = '000322205049649384055:qbxxlwnwoqs';
-    var gcse = document.createElement('script');
-    gcse.type = 'text/javascript';
-    gcse.async = true;
-    gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
-    var s = document.getElementsByTagName('script')[0];
-    s.parentNode.insertBefore(gcse, s);
-  })();
-</script>
-<!-- add the keyword flink to every search -->
-<gcse:search as_oq="flink"></gcse:search>
-
-{% top %}
diff --git a/docs/page/favicon.png b/docs/static/favicon.png
similarity index 100%
rename from docs/page/favicon.png
rename to docs/static/favicon.png
Binary files differ
diff --git a/docs/fig/concepts/address.svg b/docs/static/fig/concepts/address.svg
similarity index 100%
rename from docs/fig/concepts/address.svg
rename to docs/static/fig/concepts/address.svg
diff --git a/docs/fig/concepts/arch_components.svg b/docs/static/fig/concepts/arch_components.svg
similarity index 100%
rename from docs/fig/concepts/arch_components.svg
rename to docs/static/fig/concepts/arch_components.svg
diff --git a/docs/fig/concepts/arch_funs_colocated.svg b/docs/static/fig/concepts/arch_funs_colocated.svg
similarity index 100%
rename from docs/fig/concepts/arch_funs_colocated.svg
rename to docs/static/fig/concepts/arch_funs_colocated.svg
diff --git a/docs/fig/concepts/arch_funs_embedded.svg b/docs/static/fig/concepts/arch_funs_embedded.svg
similarity index 100%
rename from docs/fig/concepts/arch_funs_embedded.svg
rename to docs/static/fig/concepts/arch_funs_embedded.svg
diff --git a/docs/fig/concepts/arch_funs_remote.svg b/docs/static/fig/concepts/arch_funs_remote.svg
similarity index 100%
rename from docs/fig/concepts/arch_funs_remote.svg
rename to docs/static/fig/concepts/arch_funs_remote.svg
diff --git a/docs/fig/concepts/arch_overview.svg b/docs/static/fig/concepts/arch_overview.svg
similarity index 100%
rename from docs/fig/concepts/arch_overview.svg
rename to docs/static/fig/concepts/arch_overview.svg
diff --git a/docs/fig/concepts/statefun-app-blob-storage.svg b/docs/static/fig/concepts/statefun-app-blob-storage.svg
similarity index 100%
rename from docs/fig/concepts/statefun-app-blob-storage.svg
rename to docs/static/fig/concepts/statefun-app-blob-storage.svg
diff --git a/docs/fig/concepts/statefun-app-egress.svg b/docs/static/fig/concepts/statefun-app-egress.svg
similarity index 100%
rename from docs/fig/concepts/statefun-app-egress.svg
rename to docs/static/fig/concepts/statefun-app-egress.svg
diff --git a/docs/fig/concepts/statefun-app-fault-tolerance.svg b/docs/static/fig/concepts/statefun-app-fault-tolerance.svg
similarity index 100%
rename from docs/fig/concepts/statefun-app-fault-tolerance.svg
rename to docs/static/fig/concepts/statefun-app-fault-tolerance.svg
diff --git a/docs/fig/concepts/statefun-app-functions.svg b/docs/static/fig/concepts/statefun-app-functions.svg
similarity index 100%
rename from docs/fig/concepts/statefun-app-functions.svg
rename to docs/static/fig/concepts/statefun-app-functions.svg
diff --git a/docs/fig/concepts/statefun-app-ingress.svg b/docs/static/fig/concepts/statefun-app-ingress.svg
similarity index 100%
rename from docs/fig/concepts/statefun-app-ingress.svg
rename to docs/static/fig/concepts/statefun-app-ingress.svg
diff --git a/docs/fig/concepts/statefun-app-state.svg b/docs/static/fig/concepts/statefun-app-state.svg
similarity index 100%
rename from docs/fig/concepts/statefun-app-state.svg
rename to docs/static/fig/concepts/statefun-app-state.svg
diff --git a/docs/fig/concepts/statefun-app.svg b/docs/static/fig/concepts/statefun-app.svg
similarity index 100%
rename from docs/fig/concepts/statefun-app.svg
rename to docs/static/fig/concepts/statefun-app.svg
diff --git a/docs/fig/greeter-function.gif b/docs/static/fig/greeter-function.gif
similarity index 100%
rename from docs/fig/greeter-function.gif
rename to docs/static/fig/greeter-function.gif
Binary files differ
diff --git a/docs/static/flink-header-logo.svg b/docs/static/flink-header-logo.svg
new file mode 100644
index 0000000..3e9ac60
--- /dev/null
+++ b/docs/static/flink-header-logo.svg
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<svg viewBox="36 127 427 220" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+  <defs>
+    <linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="44097.3398" y1="69.6689" x2="44125.8086" y2="-63.1794" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.6584" style="stop-color:#BF73F2"/>
+      <stop offset="0.6649" style="stop-color:#C370E6"/>
+      <stop offset="0.6852" style="stop-color:#CC68C7"/>
+      <stop offset="0.7081" style="stop-color:#D461AB"/>
+      <stop offset="0.7341" style="stop-color:#DB5B95"/>
+      <stop offset="0.7643" style="stop-color:#E05784"/>
+      <stop offset="0.8017" style="stop-color:#E35479"/>
+      <stop offset="0.8543" style="stop-color:#E55272"/>
+      <stop offset="1" style="stop-color:#E65270"/>
+    </linearGradient>
+    <linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="44081.2695" y1="71.4424" x2="44111.5938" y2="-70.0665" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.6584" style="stop-color:#BF73F2"/>
+      <stop offset="0.6649" style="stop-color:#C370E6"/>
+      <stop offset="0.6852" style="stop-color:#CC68C7"/>
+      <stop offset="0.7081" style="stop-color:#D461AB"/>
+      <stop offset="0.7341" style="stop-color:#DB5B95"/>
+      <stop offset="0.7643" style="stop-color:#E05784"/>
+      <stop offset="0.8017" style="stop-color:#E35479"/>
+      <stop offset="0.8543" style="stop-color:#E55272"/>
+      <stop offset="1" style="stop-color:#E65270"/>
+    </linearGradient>
+    <linearGradient id="SVGID_22_" gradientUnits="userSpaceOnUse" x1="44076.2969" y1="62.4639" x2="44078.1016" y2="-21.4837" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.7317" style="stop-color:#BF73F2"/>
+    </linearGradient>
+    <linearGradient id="SVGID_23_" gradientUnits="userSpaceOnUse" x1="44098.6875" y1="53.8359" x2="44078.4219" y2="18.9243" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#F6E8A0"/>
+      <stop offset="1" style="stop-color:#E65271"/>
+    </linearGradient>
+    <linearGradient id="SVGID_24_" gradientUnits="userSpaceOnUse" x1="44095.125" y1="32.8574" x2="44077.6484" y2="2.7515" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#F6E8A0"/>
+      <stop offset="1" style="stop-color:#E65271"/>
+    </linearGradient>
+    <linearGradient id="SVGID_25_" gradientUnits="userSpaceOnUse" x1="44056.0742" y1="55.1064" x2="44058.0898" y2="19.9353" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#F6E8A0"/>
+      <stop offset="1" style="stop-color:#E65271"/>
+    </linearGradient>
+    <linearGradient id="SVGID_26_" gradientUnits="userSpaceOnUse" x1="44057.9609" y1="19.9785" x2="44069.5781" y2="71.4492" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#E65271"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+    </linearGradient>
+    <linearGradient id="SVGID_27_" gradientUnits="userSpaceOnUse" x1="44098.2734" y1="45.7383" x2="44055.2656" y2="9.103" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#F6E8A0"/>
+      <stop offset="1" style="stop-color:#E65271"/>
+    </linearGradient>
+    <linearGradient id="SVGID_28_" gradientUnits="userSpaceOnUse" x1="44059.4766" y1="20.1328" x2="44101.2734" y2="8.766" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.7317" style="stop-color:#BF73F2"/>
+    </linearGradient>
+    <linearGradient id="SVGID_29_" gradientUnits="userSpaceOnUse" x1="43948.2227" y1="68.9863" x2="44144.5391" y2="-36.272" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.7317" style="stop-color:#BF73F2"/>
+    </linearGradient>
+    <radialGradient id="SVGID_30_" cx="87651.25" cy="11560.2988" r="14.877" gradientTransform="matrix(-0.4579 0.1387 0.2675 0.883 37062.1875 -22360.3281)" gradientUnits="userSpaceOnUse">
+      <stop offset="0.0091" style="stop-color:#FFFFFF"/>
+      <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
+    </radialGradient>
+    <radialGradient id="SVGID_31_" cx="78312.1094" cy="34685.1992" r="23.2557" gradientTransform="matrix(-0.4785 0 0 0.4785 37453.6211 -16583.9492)" gradientUnits="userSpaceOnUse">
+      <stop offset="0.0091" style="stop-color:#FFFFFF"/>
+      <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
+    </radialGradient>
+    <radialGradient id="SVGID_32_" cx="78312.125" cy="34685.1953" r="23.246" gradientTransform="matrix(-0.4785 0 0 0.4785 37453.6211 -16583.9492)" gradientUnits="userSpaceOnUse">
+      <stop offset="0.0091" style="stop-color:#FFFFFF"/>
+      <stop offset="1" style="stop-color:#FFFFFF;stop-opacity:0"/>
+    </radialGradient>
+    <linearGradient id="SVGID_33_" gradientUnits="userSpaceOnUse" x1="44028.9219" y1="-21.6885" x2="44039.9336" y2="-46.5121" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0.0041" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+    </linearGradient>
+    <linearGradient id="SVGID_34_" gradientUnits="userSpaceOnUse" x1="44102.2578" y1="49.9863" x2="44111.2852" y2="-18.6183" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.7317" style="stop-color:#BF73F2"/>
+    </linearGradient>
+    <linearGradient id="SVGID_35_" gradientUnits="userSpaceOnUse" x1="44109.793" y1="50.9766" x2="44118.8203" y2="-17.6278" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.7317" style="stop-color:#BF73F2"/>
+    </linearGradient>
+    <linearGradient id="SVGID_36_" gradientUnits="userSpaceOnUse" x1="44123.0508" y1="21.7207" x2="44118.9961" y2="-26.0176" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.7317" style="stop-color:#BF73F2"/>
+    </linearGradient>
+    <linearGradient id="SVGID_37_" gradientUnits="userSpaceOnUse" x1="44050.8477" y1="61.9199" x2="44052.6523" y2="-22.035" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.7317" style="stop-color:#BF73F2"/>
+    </linearGradient>
+    <linearGradient id="SVGID_38_" gradientUnits="userSpaceOnUse" x1="44033.8477" y1="-2.3027" x2="44038.3164" y2="-9.6765" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#FAA7B5"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+      <stop offset="0.7317" style="stop-color:#BF73F2"/>
+    </linearGradient>
+    <linearGradient id="SVGID_39_" gradientUnits="userSpaceOnUse" x1="44048.457" y1="34.6895" x2="44048.457" y2="34.6895" gradientTransform="matrix(-1 0 0 1 44076.3555 0)">
+      <stop offset="0" style="stop-color:#E65271"/>
+      <stop offset="0.3836" style="stop-color:#FAA100"/>
+    </linearGradient>
+  </defs>
+  <symbol id="New_Symbol_3" viewBox="-50.452 -50.955 100.904 101.91">
+    <path fill="#E65270" d="M14.113-50.012c-1.353,0.017-2.704,0.021-4.056,0.021l-3.489-0.003c0,0-9.98,0.004-14.75,0.004&#10;&#9;&#9;c-0.749,0-1.5-0.003-2.25-0.005C-11.183-49.997-11.933-50-12.684-50c-0.47,0-0.938,0.001-1.407,0.004&#10;&#9;&#9;c-2.838,0.017-5.551,0.358-8.063,1.016c-10.002,2.617-17.576,8.551-22.512,17.634c-2.366,4.354-3.711,9.225-3.995,14.473&#10;&#9;&#9;c-0.126,2.334-0.007,4.726,0.355,7.108c0.043,0.284,0.095,0.568,0.147,0.854l0.115,0.65l0.195-0.192&#10;&#9;&#9;c0.103-0.102,0.135-0.208,0.159-0.288c0.097-0.318,0.188-0.639,0.28-0.958c0.19-0.665,0.388-1.353,0.62-2.013&#10;&#9;&#9;c1.701-4.852,4.284-9.397,7.896-13.902c0.143-0.178,0.251-0.375,0.313-0.566c1.225-3.771,3.354-7.028,6.326-9.69&#10;&#9;&#9;c2.891-2.588,6.357-4.526,10.316-5.771c-2.539,1.087-4.889,2.476-7.003,4.143c-3.448,2.719-5.933,6.046-7.383,9.89&#10;&#9;&#9;c-0.145,0.386-0.267,0.852-0.071,1.368c0.065,0.176,0.111,0.358,0.158,0.541c0.032,0.126,0.063,0.252,0.102,0.377&#10;&#9;&#9;c0.781,2.553,1.967,4.555,3.626,6.117c1.545,1.456,3.513,2.521,6.017,3.257c2.338,0.688,4.778,0.998,7.137,1.298l1.011,0.13&#10;&#9;&#9;c1.321,0.173,2.66,0.377,3.954,0.577l0.779,0.12c0.29,0.044,0.578,0.107,0.876,0.172l0.727,0.152l-0.191-0.325&#10;&#9;&#9;c-0.015-0.028-0.027-0.051-0.048-0.075c-1.225-1.372-2.253-2.897-3.055-4.538c-0.068-0.139-0.214-0.267-0.354-0.312&#10;&#9;&#9;c-0.174-0.057-0.347-0.113-0.52-0.171c-0.551-0.185-1.119-0.371-1.697-0.486c-0.622-0.124-1.259-0.214-1.876-0.3&#10;&#9;&#9;c-0.494-0.07-0.988-0.139-1.479-0.229c-1.653-0.294-2.932-0.825-3.899-1.636c0.212,0.051,0.431,0.083,0.646,0.114&#10;&#9;&#9;c0.3,0.043,0.608,0.089,0.889,0.186c1.524,0.53,3.196,0.776,5.263,0.776l0.279-0.001c0.371-0.004,0.741-0.021,1.117-0.039&#10;&#9;&#9;l0.726-0.03l-0.054-0.179c-1.483-4.845-1.441-9.599,0.119-14.157c-0.653,3.091-0.772,5.962-0.368,8.737&#10;&#9;&#9;c0.618,4.241,2.486,7.896,5.556,10.863c2.07,2.001,4.667,3.681,7.938,5.133c2.841,1.263,5.801,2.021,8.589,2.691L6.099-7.35&#10;&#9;&#9;c1.988,0.478,4.044,0.972,6.036,1.557c2.987,0.875,5.583,2.314,7.716,4.284c0.319,0.295,0.682,0.63,0.968,1&#10;&#9;&#9;c2.037,2.64,4.412,4.513,7.258,5.727c0.082,0.035,0.175,0.122,0.235,0.221c0.931,1.52,2.048,2.639,3.415,3.424&#10;&#9;&#9;c0.305,0.175,0.609,0.263,0.904,0.263c0.374,0,0.748-0.144,1.113-0.421c0.138-0.106,0.264-0.217,0.375-0.33&#10;&#9;&#9;c0.479-0.481,0.863-1.073,1.211-1.859c0.043-0.094,0.082-0.124,0.187-0.137c0.347-0.046,0.705-0.093,1.06-0.163&#10;&#9;&#9;c5.812-1.15,9.859-5.622,10.562-11.673c0.019-0.161,0.032-0.324,0.045-0.486c0.031-0.384,0.062-0.78,0.177-1.137&#10;&#9;&#9;c0.144-0.451,0.361-0.895,0.573-1.321c0.093-0.189,0.188-0.382,0.276-0.575c0.075-0.166,0.154-0.33,0.232-0.494&#10;&#9;&#9;c0.185-0.389,0.374-0.786,0.531-1.193c0.241-0.621,0.269-1.263,0.084-1.908c-0.08-0.277-0.248-0.318-0.341-0.318&#10;&#9;&#9;c-0.071,0-0.147,0.023-0.224,0.071c-0.16,0.103-0.309,0.217-0.458,0.335c-0.07,0.058-0.142,0.111-0.214,0.165&#10;&#9;&#9;c-0.08,0.062-0.159,0.123-0.237,0.188c-0.187,0.146-0.362,0.288-0.557,0.395c-0.07,0.039-0.143,0.061-0.214,0.061&#10;&#9;&#9;c-0.074,0-0.145-0.022-0.211-0.065l0.274-0.245c0.489-0.434,0.977-0.869,1.457-1.31c0.101-0.092,0.168-0.261,0.159-0.4&#10;&#9;&#9;c-0.057-0.908-0.374-1.661-0.945-2.241c-0.68-0.688-1.393-1.022-2.178-1.022c-0.168,0-0.339,0.016-0.513,0.047&#10;&#9;&#9;c-0.032-0.305-0.097-0.419-0.351-0.555c-1.606-0.871-3.172-1.295-4.785-1.295l-0.252,0.002c-1.099,0-2.169-0.312-3.369-0.981&#10;&#9;&#9;c-0.413-0.229-0.778-0.386-1.119-0.476c-1.031-0.274-2.072-0.377-3.013-0.421c0.404-0.056,0.826-0.083,1.279-0.083&#10;&#9;&#9;c0.289,0,0.587,0.012,0.909,0.033l0.184,0.019c0.136,0.013,0.274,0.025,0.406,0.025c0.177,0,0.323-0.022,0.446-0.073&#10;&#9;&#9;c0.841-0.344,1.663-0.76,2.433-1.154c0.151-0.078,0.26-0.11,0.361-0.11c0.056,0,0.11,0.011,0.167,0.032l0.225,0.084&#10;&#9;&#9;c0.421,0.159,0.856,0.323,1.271,0.507c0.987,0.439,1.838,0.646,2.678,0.646c0.225,0,0.45-0.017,0.673-0.047&#10;&#9;&#9;c0.576-0.078,1.248-0.21,1.854-0.583c0.299-0.184,0.698-0.491,0.735-1.064c0.002-0.01,0.022-0.044,0.069-0.088&#10;&#9;&#9;c0.073-0.067,0.149-0.131,0.227-0.195c0.078-0.064,0.158-0.131,0.233-0.202c0.47-0.431,0.677-0.977,0.619-1.624&#10;&#9;&#9;c-0.018-0.181-0.058-0.605-0.421-0.605c-0.11,0-0.239,0.04-0.418,0.131c-0.075,0.039-0.144,0.07-0.207,0.088&#10;&#9;&#9;c0.177-0.108,0.349-0.217,0.518-0.332c0.401-0.273,0.597-0.691,0.578-1.242c-0.038-1.2-1.302-2.336-2.601-2.336&#10;&#9;&#9;c-0.154,0-0.306,0.019-0.451,0.05c-0.383,0.084-0.859,0.244-1.146,0.742c-0.009,0.014-0.042,0.036-0.049,0.038l-0.22-0.01&#10;&#9;&#9;c-0.261-0.01-0.529-0.021-0.778-0.078l-0.073-0.017c-0.423-0.098-0.859-0.195-1.305-0.195c-0.178,0-0.345,0.016-0.507,0.047&#10;&#9;&#9;c-0.199,0.037-0.396,0.086-0.598,0.136l-0.146,0.035c-0.231-0.749-0.604-1.452-1.109-2.094c-1.131-1.438-2.639-2.452-4.607-3.097&#10;&#9;&#9;c-1.427-0.47-2.961-0.705-4.562-0.705c-0.841,0-1.724,0.063-2.623,0.191c-3.546,0.507-6.021,2.435-7.359,5.729&#10;&#9;&#9;c-0.225,0.552-0.376,1.138-0.524,1.706c-0.071,0.274-0.144,0.554-0.224,0.827c-0.42,1.429-0.949,2.689-1.619,3.859&#10;&#9;&#9;c-1.216,2.123-2.72,3.636-4.599,4.625c-1.502,0.791-3.146,1.192-4.884,1.192c-0.728,0-1.489-0.069-2.264-0.208&#10;&#9;&#9;c-0.157-0.028-0.313-0.062-0.472-0.096c0.547-0.025,1.067-0.055,1.592-0.106c2.431-0.246,4.645-0.993,6.58-2.219&#10;&#9;&#9;c2.633-1.671,4.249-3.747,4.937-6.345c0.385-1.452,0.935-2.898,1.634-4.299c0.404-0.812,0.918-1.752,1.658-2.546&#10;&#9;&#9;c1.046-1.119,2.394-1.884,4.241-2.403c0.505-0.143,1.007-0.298,1.506-0.458c0.276-0.089,0.468-0.28,0.587-0.587&#10;&#9;&#9;c0.289-0.75,0.361-1.515,0.213-2.27c-0.217-1.109-0.744-2.136-1.613-3.139c-0.686-0.791-1.538-1.366-2.362-1.923&#10;&#9;&#9;c-0.414-0.277-0.803-0.572-1.157-0.875c-0.303-0.26-0.46-0.6-0.443-0.958c0.026-0.59,0.07-0.612,0.18-0.612&#10;&#9;&#9;c0.092,0,0.237,0.035,0.471,0.111c0.115,0.038,0.229,0.084,0.342,0.134l0.686,0.296c0.392,0.169,0.783,0.339,1.178,0.503&#10;&#9;&#9;c0.856,0.357,1.703,0.54,2.515,0.54c0.434,0,0.868-0.052,1.291-0.153c1.52-0.364,2.518-1.267,2.966-2.686&#10;&#9;&#9;c0.12-0.384,0.103-0.712-0.055-0.979c-0.104-0.177-0.342-0.325-0.54-0.331c-0.184,0-0.356,0.163-0.488,0.308&#10;&#9;&#9;c-0.074,0.081-0.092,0.187-0.106,0.279c-0.006,0.03-0.011,0.062-0.018,0.09c-0.135,0.505-0.322,0.835-0.604,1.056&#10;&#9;&#9;c0.504-0.685,0.73-1.417,0.689-2.23c-0.042-0.807-0.646-1.369-1.471-1.369c-0.034,0-0.067,0.001-0.103,0.003&#10;&#9;&#9;c-0.313,0.019-0.512,0.188-0.545,0.466c-0.022,0.192-0.022,0.39-0.023,0.58c0,0.079,0,0.159-0.002,0.237&#10;&#9;&#9;c-0.002,0.104-0.001,0.205,0,0.309c0,0.222,0.001,0.431-0.027,0.637c-0.062,0.444-0.326,0.744-0.785,0.891&#10;&#9;&#9;c-0.032,0.012-0.064,0.02-0.098,0.023c0.139-0.079,0.259-0.188,0.344-0.346c0.17-0.315,0.315-0.602,0.394-0.911&#10;&#9;&#9;c0.204-0.821,0.003-1.461-0.581-1.853c-0.303-0.201-0.691-0.276-1.033-0.324c-0.139-0.02-0.275-0.026-0.412-0.026&#10;&#9;&#9;c-0.511,0-1.011,0.12-1.493,0.234l-0.245,0.059c-0.457,0.105-0.862,0.158-1.251,0.159c-0.332,0-0.677-0.064-1.011-0.126&#10;&#9;&#9;l-0.155-0.028c-2.533-0.456-4.81-0.677-6.959-0.677L14.113-50.012z"/>
+    <path opacity="0.2" fill="#430A1D" enable-background="new    " d="M34.73-20.451c0,0-3.735-4.456-10.078-1.903&#10;&#9;&#9;c-5.81,2.341-3.692,8.784-3.692,8.784s1.03-3.996,4.036-5.51C29.348-21.273,34.73-20.451,34.73-20.451z"/>
+    <path opacity="0.2" fill="#430A1D" enable-background="new    " d="M16.327-22.359c0.809-0.822,0.824-1.663,1.078-2.688&#10;&#9;&#9;c0.479-1.928,1.068-3.602,2.296-5.188c1.181-1.524,2.594-2.602,4.419-3.303c1.581-0.606,3.614-0.427,3.311-2.781l-0.53-1.982&#10;&#9;&#9;c-4.04,0-7.825,1.844-9.367,5.854c-1.352,3.518,0.241,7.769-3.857,13.717C14.005-19.132,15.908-21.931,16.327-22.359z"/>
+    <g opacity="0.2">
+      <path fill="#2B2B2B" d="M14.727-20.611c0.062-0.25,0.118-0.504,0.175-0.757C14.751-21.183,14.673-20.947,14.727-20.611z"/>
+    </g>
+    <path fill="url(#SVGID_20_)" d="M-32.349-35.983c-15.241,1.506-17.035,16.677-17.035,16.677s-0.828,7.032,1.104,13.93&#10;&#9;&#9;c1.241-12.55,11.309-21.239,11.309-21.239S-34.759-33.766-32.349-35.983z"/>
+    <path opacity="0.2" fill="#2B2B2B" enable-background="new    " d="M-36.15-30.205c0,0-3.196-0.304-7.461,4.873&#10;&#9;&#9;c4.112-7.461,9.441-7.613,9.441-7.613L-36.15-30.205z"/>
+    <path fill="url(#SVGID_21_)" d="M-27.912-38.917c-0.799,14.03,7.438,7.52,11.69,14.96c1.195,6.51,4.782,10.628,4.782,10.628&#10;&#9;&#9;s-25.506,4.782-25.907-13.817c0.888-4.027,4.792-7.921,7.236-10.028c-0.478,1.078-6.567,17.833,13.711,16.467&#10;&#9;&#9;c-6.999,0.596-17.105-6.716-12.288-17.67C-28.205-38.729-27.912-38.917-27.912-38.917z"/>
+    <path opacity="0.2" fill="#FFFFFF" enable-background="new    " d="M-21.017-18.684c-5.272-1.982-14.225-1.973-11.677-15.426&#10;&#9;&#9;c-0.408-0.306-2.446,2.854-1.937,2.547C-36.975-19.535-26.447-20.23-21.017-18.684z"/>
+    <path opacity="0.6" fill="#8B4FBA" enable-background="new    " d="M-14.341-13.865c5.127,2.028,0.964-3.722,0.236-4.642&#10;&#9;&#9;c-1.683-2.128-5.941-1.436-8.21-2.146c-1.305-0.408-6.536-1.175-8.269-6.128c-0.77-2.194-1.06-5.781,0.581-10.146&#10;&#9;&#9;c-0.407-0.308-3.104,2.646-2.594,2.342C-36.925-15.255-16.511-22.193-14.341-13.865z"/>
+    <path fill="#F9E0E7" d="M36.631-5.972c0.139,0.384,0.378,0.875,0.679,1.165c0.07-0.033,0.145-0.037,0.202-0.073&#10;&#9;&#9;c0.5,0.324,1.29,0.281,1.918,0.281c0.376,0,0.924,0.104,1.287-0.037c0.528-0.205,0.468-0.761,0.689-1.182&#10;&#9;&#9;c0.414-0.786,1.69-0.796,1.695-1.907c0.004-0.523,0.135-1.232,0.001-1.744c-0.1-0.38-0.525-0.264-0.891-0.264&#10;&#9;&#9;c-1.109,0-2.215-0.031-3.326-0.031l-1.536,1.145c-0.41-0.131-0.731,0.729-0.787,1.021C36.47-7.116,36.458-6.449,36.631-5.972z"/>
+    <path fill="#FFFFFF" d="M41.756-7.494c0.188,0.077,0.465,0.378,0.581,0.555c0.084,0.127,0.06,0.208,0.24,0.203&#10;&#9;&#9;c0.469-0.013,0.473-0.646,0.449-0.973c-0.028-0.418-0.197-0.802-0.258-1.213c-0.152,0.038-0.236,0.229-0.407,0.277&#10;&#9;&#9;c-0.136,0.04-0.331,0.021-0.473,0.015c-0.208-0.009-0.496-0.149-0.684-0.069L41.756-7.494z"/>
+    <path fill="url(#SVGID_22_)" d="M-18.99,13.068c0.07,0.081,0.088,0.105,0.11,0.128c2.035,1.9,3.114,4.298,3.694,6.979&#10;&#9;&#9;c0.381,1.755-0.105,3.303-0.895,4.816c-0.014,0.025-0.039,0.05-0.066,0.084c-0.158-0.494-0.302-0.979-0.47-1.456&#10;&#9;&#9;c-0.413-1.176-0.913-2.314-1.707-3.288c-0.317-0.388-13.613-7.753-12.244-24.064c0.009-0.101,0.026-0.197,0.04-0.31&#10;&#9;&#9;c0.246,0.229,0.461,0.466,0.708,0.661c0.885,0.692,1.907,1.133,2.973,1.431c1.951,0.544,3.915,1.044,5.881,1.525&#10;&#9;&#9;c2.237,0.548,4.487,1.056,6.645,1.882c1.22,0.466,2.354,1.08,3.437,1.82c1.614,1.104,3.007,2.426,4.207,3.956&#10;&#9;&#9;c0.699,0.891,1.025,1.571,1.34,2.618c0.199-0.539,0.095-2.041-0.205-2.999c-0.31-0.99-0.837-1.854-1.524-2.647&#10;&#9;&#9;c0.165,0.053,0.345,0.08,0.492,0.164c1.902,1.084,3.587,2.419,4.831,4.249c0.834,1.226,1.342,2.568,1.413,4.062&#10;&#9;&#9;c0.001,0.021,0.01,0.042,0.017,0.075c0.396-1.832,0.339-4.952-1.727-7.17c0.73,0.258,1.39,0.517,2.066,0.718&#10;&#9;&#9;c0.559,0.166,0.928,0.493,1.237,0.984c1.356,2.146,2.48,4.396,3.088,6.877c0.47,1.916,0.587,3.84,0.06,5.765&#10;&#9;&#9;c-0.598,2.176-1.912,3.851-3.7,5.182c-1.242,0.925-2.612,1.611-4.05,2.173c-0.087,0.034-0.174,0.065-0.259,0.103&#10;&#9;&#9;c-0.014,0.005-0.021,0.021-0.076,0.081c0.498-0.137,0.945-0.253,1.386-0.384c2.06-0.612,4.034-1.41,5.782-2.688&#10;&#9;&#9;c1.56-1.14,2.754-2.562,3.351-4.432c0.533-1.674,0.487-3.366,0.104-5.058C6.389,12.438,5.24,10.24,3.84,8.159&#10;&#9;&#9;C3.797,8.094,3.755,8.03,3.714,7.966c-0.006-0.01-0.005-0.026-0.013-0.062c0.058,0.021,0.104,0.036,0.146,0.059&#10;&#9;&#9;c2.931,1.499,5.537,3.416,7.613,5.992c2.016,2.5,3.483,5.284,4.18,8.438c0.877,3.98-0.085,7.514-2.663,10.631&#10;&#9;&#9;c-1.629,1.973-3.643,3.465-5.873,4.681c-2.877,1.566-5.938,2.59-9.177,3.061c-1.842,0.269-3.686,0.32-5.527-0.034&#10;&#9;&#9;c-1.012-0.192-1.668-0.458-2.79-1.106c0.142,0.121,0.277,0.249,0.426,0.358c1.007,0.765,2.168,1.16,3.387,1.407&#10;&#9;&#9;c2.016,0.408,4.049,0.403,6.082,0.166c3.148-0.368,6.149-1.24,8.991-2.646c0.278-0.14,0.553-0.283,0.86-0.441&#10;&#9;&#9;c0,0.258-0.015,0.483,0.004,0.706c0.026,0.344,0.199,0.541,0.47,0.573c0.258,0.032,0.41-0.065,0.46-0.319&#10;&#9;&#9;c0.041-0.215,0.052-0.436,0.083-0.652c0.07-0.492,0.298-0.909,0.636-1.271c0.033-0.037,0.074-0.069,0.115-0.097&#10;&#9;&#9;c0.019-0.015,0.046-0.014,0.118-0.028c0,0.177,0.001,0.34,0,0.502c-0.005,0.329-0.018,0.659-0.011,0.988&#10;&#9;&#9;c0.003,0.081,0.06,0.211,0.116,0.227c0.077,0.021,0.217-0.018,0.265-0.079c0.129-0.17,0.268-0.354,0.327-0.556&#10;&#9;&#9;c0.129-0.428,0.187-0.876,0.321-1.301c0.088-0.275,0.228-0.547,0.403-0.775c0.192-0.25,0.386-0.195,0.459,0.111&#10;&#9;&#9;c0.068,0.286,0.093,0.583,0.136,0.875c0.015,0.101,0.018,0.205,0.049,0.299c0.025,0.081,0.084,0.148,0.128,0.223&#10;&#9;&#9;c0.066-0.061,0.163-0.106,0.192-0.182c0.067-0.17,0.133-0.353,0.141-0.532c0.021-0.396-0.016-0.795,0.013-1.189&#10;&#9;&#9;c0.015-0.21,0.085-0.434,0.188-0.616c0.114-0.203,0.297-0.179,0.36,0.048c0.091,0.324,0.136,0.659,0.202,0.99&#10;&#9;&#9;c0.045,0.224,0.092,0.447,0.147,0.721c0.265-0.226,0.329-0.477,0.355-0.72c0.068-0.647,0.101-1.297,0.158-1.945&#10;&#9;&#9;c0.044-0.486,0.211-0.913,0.498-1.328c0.521-0.755,0.982-1.554,1.448-2.346c0.24-0.406,0.462-0.443,0.686-0.025&#10;&#9;&#9;c0.254,0.475,0.443,0.982,0.658,1.479c0.094,0.217,0.173,0.438,0.272,0.652c0.046,0.104,0.124,0.192,0.195,0.3&#10;&#9;&#9;c0.255-0.185,0.316-0.427,0.267-0.667c-0.073-0.361-0.206-0.712-0.3-1.069c-0.101-0.39-0.209-0.779-0.27-1.177&#10;&#9;&#9;c-0.023-0.16,0.049-0.352,0.122-0.507c0.103-0.225,0.267-0.252,0.443-0.076c0.179,0.178,0.318,0.395,0.492,0.576&#10;&#9;&#9;c0.099,0.104,0.235,0.167,0.354,0.249c0.067-0.146,0.203-0.298,0.191-0.438c-0.025-0.297-0.096-0.6-0.205-0.878&#10;&#9;&#9;c-0.222-0.565-0.521-1.103-0.712-1.676c-0.138-0.416-0.164-0.871-0.209-1.312c-0.012-0.108,0.078-0.299,0.163-0.33&#10;&#9;&#9;c0.089-0.031,0.265,0.057,0.344,0.144c0.363,0.398,0.704,0.819,1.06,1.228c0.087,0.102,0.203,0.174,0.305,0.262&#10;&#9;&#9;c0.035-0.018,0.068-0.032,0.103-0.051c-0.034-0.231-0.025-0.481-0.109-0.696c-0.143-0.357-0.32-0.708-0.524-1.033&#10;&#9;&#9;c-0.323-0.517-0.692-1.002-1.023-1.512c-0.612-0.943-1.017-1.973-1.271-3.069c-0.183-0.788-0.443-1.559-0.671-2.334&#10;&#9;&#9;c-0.027-0.096-0.061-0.189-0.065-0.296c0.199,0.317,0.393,0.641,0.599,0.957c0.431,0.664,0.928,1.274,1.596,1.714&#10;&#9;&#9;c0.336,0.22,0.697,0.418,1.073,0.556c1.933,0.711,3.887,1.372,5.73,2.299c0.524,0.267,1.025,0.588,1.502,0.936&#10;&#9;&#9;c0.603,0.438,0.826,1.049,0.646,1.789c-0.126,0.514-0.252,1.027-0.383,1.562c-0.312-0.498-0.587-0.978-0.902-1.428&#10;&#9;&#9;s-0.704-0.832-1.283-1.089c0.052,0.099,0.067,0.142,0.093,0.177c0.812,1.119,1.28,2.391,1.642,3.708&#10;&#9;&#9;c0.037,0.136-0.005,0.3-0.029,0.447c-0.166,0.96-0.086,1.922-0.043,2.885c0.01,0.191,0.01,0.39-0.017,0.58&#10;&#9;&#9;c-0.011,0.088-0.083,0.198-0.158,0.231c-0.051,0.023-0.184-0.047-0.229-0.108c-0.186-0.262-0.394-0.519-0.519-0.808&#10;&#9;&#9;c-0.503-1.169-0.985-2.348-1.465-3.524c-0.598-1.469-1.272-2.895-2.299-4.121c-0.464-0.555-0.993-1.038-1.642-1.375&#10;&#9;&#9;c-0.124-0.063-0.256-0.114-0.395-0.158c1.005,1.039,1.231,2.354,1.276,3.699c0.059,1.722,0.025,3.448,0.042,5.172&#10;&#9;&#9;c0.018,1.864,0.172,3.712,0.728,5.508c0.021,0.071-0.014,0.175-0.053,0.246c-0.157,0.306-0.356,0.592-0.486,0.908&#10;&#9;&#9;c-0.273,0.663-0.501,1.343-0.768,2.01c-0.156,0.392-0.209,0.421-0.629,0.391c-0.452-0.032-0.722,0.227-0.962,0.548&#10;&#9;&#9;c-0.183,0.243-0.258,0.237-0.384-0.048c-0.137-0.31-0.245-0.629-0.393-0.934c-0.051-0.104-0.181-0.172-0.275-0.256&#10;&#9;&#9;c-0.072,0.106-0.192,0.21-0.204,0.323c-0.039,0.369-0.029,0.741-0.055,1.111c-0.012,0.184-0.037,0.37-0.099,0.542&#10;&#9;&#9;c-0.03,0.081-0.154,0.169-0.243,0.176c-0.064,0.005-0.175-0.104-0.202-0.186c-0.091-0.263-0.145-0.537-0.228-0.802&#10;&#9;&#9;c-0.067-0.213-0.162-0.236-0.289-0.062c-0.925,1.26-2.159,2.153-3.478,2.947c-0.389,0.234-0.772,0.479-1.159,0.715&#10;&#9;&#9;c-0.027-0.009-0.054-0.019-0.079-0.026c0.049-0.429,0.1-0.857,0.149-1.285c-0.035-0.019-0.07-0.035-0.104-0.053&#10;&#9;&#9;c-0.122,0.104-0.262,0.19-0.364,0.312c-0.257,0.303-0.489,0.625-0.749,0.927c-0.514,0.604-1.162,1.036-1.785,1.179&#10;&#9;&#9;c0.197-0.675,0.385-1.314,0.571-1.955c-0.029-0.015-0.061-0.027-0.09-0.04c-0.065,0.08-0.14,0.154-0.193,0.241&#10;&#9;&#9;c-0.151,0.245-0.3,0.489-0.438,0.741c-0.594,1.075-1.51,1.695-2.712,1.868c-0.818,0.118-1.645,0.196-2.469,0.252&#10;&#9;&#9;c-0.605,0.042-1.184,0.131-1.738,0.396c-0.388,0.175-0.804,0.295-1.212,0.431c-0.069,0.024-0.159-0.005-0.239-0.01&#10;&#9;&#9;c0.006-0.087-0.012-0.188,0.023-0.26c0.192-0.376,0.401-0.743,0.594-1.119c0.071-0.135,0.117-0.284,0.173-0.427&#10;&#9;&#9;c-0.019-0.021-0.037-0.04-0.055-0.061c-0.123,0.041-0.251,0.069-0.366,0.125c-0.532,0.258-1.072,0.501-1.586,0.791&#10;&#9;&#9;c-0.524,0.296-1.1,0.32-1.668,0.368c-1.775,0.149-3.528,0.03-5.243-0.489c-1.043-0.314-2.007-0.788-2.855-1.521&#10;&#9;&#9;c0.107,0.011,0.217,0.011,0.321,0.03c1.036,0.213,2.072,0.413,3.138,0.378c0.725-0.023,1.432-0.139,2.07-0.507&#10;&#9;&#9;c0.101-0.058,0.166-0.18,0.248-0.271c-0.143-0.05-0.293-0.146-0.43-0.128c-0.331,0.039-0.655,0.162-0.988,0.189&#10;&#9;&#9;c-1.062,0.095-2.084-0.15-3.095-0.429c-2.448-0.672-4.665-1.815-6.724-3.286c-0.502-0.357-1.023-0.688-1.544-1.02&#10;&#9;&#9;c-1.016-0.646-1.839-1.481-2.489-2.492c-0.076-0.12-0.147-0.249-0.195-0.382c-0.133-0.37-0.035-0.679,0.315-0.863&#10;&#9;&#9;c0.249-0.132,0.527-0.226,0.803-0.293c3.659-0.892,6.384-3.908,6.806-7.639c0.159-1.399,0.354-2.802,0.284-4.221&#10;&#9;&#9;c-0.161-3.257-1.328-6.095-3.502-8.519c-1.293-1.442-2.822-2.589-4.495-3.554C-18.856,13.134-18.892,13.119-18.99,13.068z"/>
+    <path opacity="0.2" fill="#8B4FBA" enable-background="new    " d="M27.897,34.689c-1.554-12.138-6.941-9.391-10.465-16.167&#10;&#9;&#9;c-0.193,0.256-0.637-1.816,0.251,2.031c0.889,3.851,3.436,2.112,5.847,6.516C26.583,32.636,25.973,33.135,27.897,34.689z"/>
+    <path opacity="0.3" fill="#FFFFFF" enable-background="new    " d="M11.804,34.461c-0.578-3.474-5.49-3.317-9.693-1.843&#10;&#9;&#9;c-4.568,1.602-14.057,2.116-14.821,0.205c-0.381-0.438-1.146,1.363-1.146,1.363s7.207,7.863,19.272-0.436&#10;&#9;&#9;c-0.491,0.764,4.336,3,4.336,3S11.204,37.191,11.804,34.461z"/>
+    <path opacity="0.2" fill="#8B4FBA" enable-background="new    " d="M-13.195,1.104c0.262-0.65,2.396-0.212,2.596,0.803&#10;&#9;&#9;c-3.148,3.566,5.14,10.119-2.504,18.672C-8.1,7.384-18.75,6.847-13.195,1.104z"/>
+    <path opacity="0.6" fill="#8B4FBA" enable-background="new    " d="M-13.195,1.104c0.262-0.65,0.215-0.464,0.415,0.551&#10;&#9;&#9;c-3.148,3.567,5.237,8.768-0.323,18.924C-8.1,7.384-18.75,6.847-13.195,1.104z"/>
+    <path fill="url(#SVGID_23_)" d="M-1.723,3.708c15.128,15.919-3.997,13.253-10.23,24.058c0.011,0.186,0.024,0.366,0.024,0.557&#10;&#9;&#9;c0,1.502-0.364,2.916-0.998,4.17c5.834-8.653,20.624-1.023,17.751-18.712C4.565,12.871,2.507,3.907-1.723,3.708z"/>
+    <path fill="url(#SVGID_24_)" d="M-1.723,3.708c-6.229-3.057-11.674-3.146-11.416-2.239c12.375,8.397,2.385,17.05,0.056,25.201&#10;&#9;&#9;c0.159,0.658,1.154,0.903,1.154,1.65c0,0.08-0.009,0.156-0.011,0.235c0.18-0.809,0.606-1.09,1.014-1.5&#10;&#9;&#9;C-5.174,21.253,13.11,19.314-1.723,3.708z"/>
+    <path fill="#E65271" d="M-3.674,3.945c9.58,14.308-8.304,17.026-8.174,21.562c-1.425-9.33,15.717-13.324-0.389-24.491&#10;&#9;&#9;C-12.495,0.11-9.903,0.888-3.674,3.945z"/>
+    <path fill="url(#SVGID_25_)" d="M23.094,28.8c0.761-1.271-0.084-2.771-0.97-4.176c-0.818-1.298-2.793-0.873-4.133-4.002&#10;&#9;&#9;l0.115,2.438c1.485,2.587-1.027,6.148-1.726,8.555c-1.19,4.1-2.484,7.883-0.907,12.043c0.107,0.279,0.198,0.585,0.306,0.872&#10;&#9;&#9;c0.786-0.581,1.38-1.16,2.057-2.043c0.447-0.586,0.291,1.512,0.879,1.071c0.432-0.319-0.021-1.803,0.391-2.146&#10;&#9;&#9;c0.462-0.39,0.74,1.868,1.075,1.368c0.781-1.174,1.229-0.429,1.562-0.781c0.301-0.319,1.005-2.778,1.289-3.111&#10;&#9;&#9;c0.278-0.323,0.543-0.656,0.805-0.991c-0.158-1.79-0.506-3.802-1.082-5.417C22.212,30.954,22.186,30.318,23.094,28.8z"/>
+    <path fill="#E65271" d="M1.8,47.49c0.046-0.017,0.086-0.024,0.11-0.023c0.419,0.007-1.129,1.954-0.684,1.954&#10;&#9;&#9;c0.751,0,1.812-0.776,2.547-0.833c1.552-0.119,3.161-0.084,4.536-0.713c1.318-0.604,1.904-2.479,2.199-2.558&#10;&#9;&#9;c0.297-0.082-0.717,2.167-0.426,2.067c0.493-0.166,0.887-0.41,1.212-0.68c1.3-1.861,1.722-11.084-0.185-10.846&#10;&#9;&#9;c-2.004,0.25,3.161-0.708,3.182-0.631c1.727,6.521-2.121,10.531-1.947,10.305c0.227-0.3,0.411-0.533,0.606-0.608&#10;&#9;&#9;c0.411-0.158-0.255,1.572,0.12,1.343c1.193-0.729,2.039-1.243,2.734-1.761c0.021-0.03,0.027-0.102,0.061-0.088&#10;&#9;&#9;c0.512,0.213,3.672,0.956,1.267-10.396c3.652,7.391,0.793,10.291,1.073,9.988c1.297-1.4,1.562-4.818,1.729-6.845&#10;&#9;&#9;c0.158-1.901-1.038-6.235-2.588-7.668c-1.091-1.008-1.069,0.24-1.479,1.204c-0.673,1.583-1.907,2.859-3.027,4.163&#10;&#9;&#9;c-0.834,0.97-1.846,1.679-2.763,2.547c-0.999,0.946-1.525,2.268-2.418,3.306c-0.798,0.928-1.78,1.667-2.539,2.635&#10;&#9;&#9;c-0.851,1.084-1.421,2.324-2.361,3.322C2.46,46.994,2.126,47.234,1.8,47.49z"/>
+    <path fill="url(#SVGID_26_)" d="M8.803,48.526c2.232,0.007,3.633-1.062,5.48-2.084c1.531-0.851,3.412-0.859,4.705-2.031&#10;&#9;&#9;c1.717-1.559,2.46-3.104,2.783-5.386c0.369-2.598,0.413-5.91-0.078-8.499c-0.252-1.328-1.196-4.05-2.191-5.021l-1.194,0.76&#10;&#9;&#9;c-2.355,6.081-9.453,8.576-12.139,14.553c-0.792,1.759-1.09,4.045-1.109,5.967C5.039,48.797,7.177,48.521,8.803,48.526z"/>
+    <path fill="#F6E8A0" d="M-13.406,33.33c-1.298,2.017-3.353,3.5-5.767,4.039c-0.614,0.137-1.714,0.519-0.625,1.83&#10;&#9;&#9;c1.165,1.818,2.839,2.516,3.74,3.184c3.623,2.69,2.125,2.965,4.239,3.209c0.826,0.096,0.608,0.168,1.027,0&#10;&#9;&#9;s-0.322,0.118-0.587,0.293c-2.358,1.561-2.188-1.553-1.174-0.88c3.018,2.334,9.97,3.972,11.919,3.638&#10;&#9;&#9;c0.284-0.048,2.243-1.18,2.543-1.175c0.419,0.007-1.129,1.954-0.684,1.954c0.751,0,1.812-0.776,2.547-0.833&#10;&#9;&#9;c1.521-0.117,6.146-2.238,6.113-7.822c-0.01-1.706,0.095-2.902-0.135-4.015C8.064,28.584-9.009,40.047-13.406,33.33z"/>
+    <path fill="#FFFFFF" d="M7.03,38.365c-0.791,0.988-5.933,2.769-5.933,2.769s-8.54,2.943-16.415-5.438&#10;&#9;&#9;c4.025,3.195,11.098,1.855,16.213,1.265c0.676-0.079-1.461,0.603-0.901,0.81c1.9,0.703,3.659-1.267,5.553-0.887&#10;&#9;&#9;C6.43,37.061,6.961,37.54,7.03,38.365z"/>
+    <path fill="#F6E8A0" d="M0.48,39.748c-3.136,0.826-6.271-0.383-6.875-0.42c0.284,0.427,0.747,1.412,3.07,1.752&#10;&#9;&#9;c0.534,0.079,1.604-0.007,2.165-0.006c1.004,0.002,1.627-0.24,2.513-0.667c0.565-0.272,1.931-0.562,2.365-0.494&#10;&#9;&#9;c0,0,4.806-0.362,3.214-1.992c-1.59-1.629-3.912,2.101-9.006,0.908C-2.073,38.995-0.909,39.826,0.48,39.748z"/>
+    <g>
+      <path fill="#F8D285" d="M-4.274,46.507c-1.982,1.312-5.447,0.187-5.897,0.193c-0.01,0.046,0.017,0.097,0.098,0.148&#10;&#9;&#9;&#9;c3.019,2.334,7.492,2.126,9.441,1.792c0.015-0.002,0.036-0.009,0.058-0.017c0.009-0.003,0.023-0.008,0.035-0.013&#10;&#9;&#9;&#9;c0.422-0.162,1.801-0.939,2.303-1.11c2.938-1.665,7.58-5.181,7.989-10.751c-1.669,0.742-2.869,1.465-3.791,2.169&#10;&#9;&#9;&#9;c-0.31,0.237-7.332,7.576-25.917-1.242c0,0-0.517,0.284-0.222,0.948c4.197,6.744,11.86,8.681,24.063,2.294&#10;&#9;&#9;&#9;C2.156,42.98,1.317,44.849-4.274,46.507z"/>
+    </g>
+    <path fill="url(#SVGID_27_)" d="M7.606,8.604c6.884,7.039,9.689,12.298,6.357,17.961C8.567,35.743-8.051,26.17-15.278,35.43&#10;&#9;&#9;c0.766-0.875,2.394-2.608,3.969-3.46c5.357-3.5,15.44-2.374,18.653-5.08C11.477,23.41,12.533,16.393,7.606,8.604z"/>
+    <path fill="url(#SVGID_28_)" d="M-14.819,23.316c-0.008-0.472,1.072-3.195,0.903-3.822c-1.45-5.353-7.734-7.979-7.734-7.979&#10;&#9;&#9;s-7.037-2.832-8.155-15.776c-1.284-0.924-1.106,1.043-1.066,1.917C-30.072,14.632-15.949,12.734-14.819,23.316z"/>
+    <path fill="url(#SVGID_29_)" d="M9.123-4.735C9.007-4.682,8.896-4.612,8.775-4.577c-0.617,0.172-1.238,0.33-1.856,0.506&#10;&#9;&#9;C6.724-4.016,6.538-3.927,6.347-3.854C6.348-3.812,6.35-3.771,6.351-3.73c0.222,0.04,0.441,0.11,0.663,0.113&#10;&#9;&#9;c0.887,0.01,1.775-0.002,2.663-0.004c1.253-0.003,2.512,0.003,3.721,0.369c0.59,0.18,1.165,0.45,1.706,0.751&#10;&#9;&#9;c5.713,3.18,9.75,7.834,12.179,13.895c0.497,1.239,0.878,2.52,1.172,3.82c0.018,0.072,0.026,0.147,0.048,0.272&#10;&#9;&#9;c-0.095-0.058-0.156-0.086-0.213-0.123c-3.496-2.395-7.314-4.019-11.481-4.808c-1.489-0.281-2.994-0.422-4.509-0.466&#10;&#9;&#9;c-0.114-0.003-0.258-0.046-0.333-0.124c-2.266-2.311-4.942-4.019-7.83-5.439C1.834,3.393-0.599,2.707-3.1,2.221&#10;&#9;&#9;c-3.207-0.623-6.422-1.215-9.63-1.832c-3.939-0.757-7.858-1.598-11.666-2.886c-2.415-0.816-4.756-1.797-6.896-3.202&#10;&#9;&#9;c-1.611-1.06-3.045-2.312-4.059-3.979c-0.356-0.588-0.609-1.239-0.915-1.858c-0.056-0.111-0.116-0.227-0.202-0.312&#10;&#9;&#9;c-2.124-2.077-2.96-4.604-2.634-7.536c0.242-2.169,1.018-4.153,2.127-6.02c0.131-0.219,0.242-0.447,0.344-0.64&#10;&#9;&#9;c0.053,0.473,0.095,1.003,0.169,1.528c0.469,3.341,2.19,5.829,5.117,7.491c1.703,0.97,3.537,1.611,5.438,2.031&#10;&#9;&#9;c2.084,0.46,4.186,0.847,6.287,1.228c2.551,0.461,5.116,0.846,7.596,1.628c0.482,0.151,0.959,0.326,1.432,0.506&#10;&#9;&#9;c0.61,0.229,1.18,0.524,1.711,0.918c1.758,1.295,3.684,2.287,5.715,3.081c0.055,0.021,0.109,0.045,0.163,0.066&#10;&#9;&#9;C-3-7.559-2.999-7.548-2.991-7.525c-0.033,0.003-0.062,0.007-0.092,0.007C-5.355-7.52-7.63-7.532-9.902-7.52&#10;&#9;&#9;c-2.032,0.013-4.058-0.05-6.074-0.315c-2.791-0.37-5.492-1.093-8.122-2.094c-3.103-1.184-6.04-2.699-8.887-4.399&#10;&#9;&#9;c-0.076-0.046-0.155-0.09-0.257-0.108c0.053,0.043,0.103,0.091,0.155,0.131c3.117,2.363,6.436,4.381,10.097,5.796&#10;&#9;&#9;c2.549,0.983,5.181,1.629,7.901,1.917c2.396,0.253,4.793,0.229,7.191,0.055c2.074-0.151,4.147-0.302,6.222-0.444&#10;&#9;&#9;c0.18-0.015,0.373,0.011,0.547,0.062c2.051,0.624,4.15,0.991,6.269,1.292c1.251,0.179,2.486,0.479,3.726,0.726&#10;&#9;&#9;C8.951-4.884,9.031-4.84,9.111-4.807C9.115-4.784,9.119-4.76,9.123-4.735z"/>
+    <path opacity="0.2" fill="#FFFFFF" enable-background="new    " d="M-29.061-11.728c8.124,9.705,29.202,4.618,38.184,6.992&#10;&#9;&#9;C3.436-8.003-1.19-7.438-1.19-7.438S-20.599-5.295-29.061-11.728z"/>
+    <path fill="#E65271" d="M33.056,25.101c-0.275-0.047-0.478-0.06-0.664-0.12c-0.732-0.229-1.495-0.399-2.181-0.729&#10;&#9;&#9;c-0.653-0.315-1.258-0.762-1.824-1.222c-1.097-0.892-2.144-1.841-3.226-2.744c-0.886-0.739-1.827-1.4-2.947-1.743&#10;&#9;&#9;c-0.361-0.11-0.736-0.173-1.114-0.235c1.46,0.735,2.277,2.045,3.124,3.389c-0.072-0.013-0.098-0.01-0.117-0.019&#10;&#9;&#9;c-2.226-1.089-4.407-2.252-6.388-3.759c-0.529-0.403-0.946-0.861-1.244-1.486c-0.476-0.994-1.079-1.929-1.627-2.887&#10;&#9;&#9;c-0.024-0.043-0.05-0.085-0.117-0.2c0.48,0.101,0.9,0.168,1.312,0.273c1.744,0.446,3.366,1.201,4.958,2.021&#10;&#9;&#9;c2.487,1.287,4.853,2.775,7.151,4.372c0.069,0.048,0.14,0.094,0.232,0.122c-0.021-0.029-0.038-0.061-0.063-0.085&#10;&#9;&#9;c-2.725-2.717-5.781-4.955-9.353-6.438c-1.545-0.644-3.146-1.073-4.813-1.246c-0.062-0.009-0.143-0.028-0.178-0.071&#10;&#9;&#9;c-0.371-0.449-0.733-0.903-1.143-1.41c1.016,0.218,1.973,0.409,2.924,0.63c2.66,0.618,5.268,1.403,7.759,2.535&#10;&#9;&#9;c1.84,0.836,3.593,1.819,5.07,3.217c1.948,1.846,3.382,4.03,4.218,6.588C32.928,24.229,32.966,24.637,33.056,25.101z"/>
+    <path opacity="0.6" fill="#8B4FBA" enable-background="new    " d="M-12.963,0.399c0.789,0.265,1.688,0.593,2.647,0.961&#10;&#9;&#9;C0.99,4.886,4.726,7.825,4.726,7.825l11.357,8.408c0,0,1.856-1.421,4.258,0.437c-1.637-1.965-6.66-3.494-6.66-3.494&#10;&#9;&#9;s-0.232-1.546-1.87-2.747c4.47,1.519,11.979,1.084,17.189,5.775c-3.94-11.144-13.725-2.649-23.182-9.58&#10;&#9;&#9;C4.726,5.969-9.698,2.282-2.53,2.535C4.637,2.787,9.36-2.104,15.347-0.501C9.727-2.539,4.761,0.727-3.067,1.276&#10;&#9;&#9;c1.218-0.244,2.887-0.915,3.598-1.832C-2.307,1.47-7.861,1.563-9.18,1.1C-10.379,0.948-11.638,0.72-12.963,0.399z"/>
+    <path opacity="0.2" fill="#2B2B2B" enable-background="new    " d="M14.155-3.038c-8.237-3.272-37.35,6.206-50.421-8.498&#10;&#9;&#9;c0,0-0.979,0.438,4.226,6.273C-11.572,4.521,3.661-4.731,14.155-3.038z"/>
+    <path opacity="0.7" fill="url(#SVGID_30_)" enable-background="new    " d="M26.891,9.996c2.437,1.371,0.457-1.98-1.979-3.959&#10;&#9;&#9;c-9.594-6.7-13.933,0.924-23.448-2.745C16.023,11.317,17.449,1.316,26.891,9.996z"/>
+    <path opacity="0.2" fill="#8B4FBA" enable-background="new    " d="M26.146,8.094c2.438,1.371,1.202-0.078-1.234-2.058&#10;&#9;&#9;c-9.594-6.7-13.933,0.924-23.448-2.745C10.831,8.503,16.705-0.585,26.146,8.094z"/>
+    <g>
+      <path opacity="0.7" fill="url(#SVGID_31_)" enable-background="new    " d="M-21.22,11.687&#10;&#9;&#9;&#9;c-4.438-4.062-0.958-12.957-0.958-12.957l-3.159-0.677C-25.337-1.947-28.525,6.652-21.22,11.687z"/>
+      <path opacity="0.7" fill="url(#SVGID_32_)" enable-background="new    " d="M-13.56,18.501c3.345-5.953-5.526-14.142-0.762-17.041&#10;&#9;&#9;&#9;c-0.076-0.391-2.724-1.719-2.6-1.335c-5.879,9.021,3.817,11.172,2.544,16.812c-6.799-9.275-6.872-11.111-3.569-16.983&#10;&#9;&#9;&#9;c-0.041-0.032-0.404-0.506-0.765-0.236C-23.877,3.591-25.331,7.942-13.56,18.501z"/>
+    </g>
+    <path opacity="0.2" fill="#8B4FBA" enable-background="new    " d="M-2.629,6.403c0.212-2.788,2.159,1.741,2.454,4.867&#10;&#9;&#9;c0.254,11.698-11.607,8.869-12.149,18.333C-13.478,18.837-0.643,19.073-2.629,6.403z"/>
+    <path opacity="0.3" fill="#FFFFFF" enable-background="new    " d="M8.871,11.043c0.21-2.788,5.808,4.388,6.104,7.513&#10;&#9;&#9;C13.097,38.627-7.561,26.42-12.962,33.814C-8.501,25.715,20.374,36.984,8.871,11.043z"/>
+    <path fill="url(#SVGID_33_)" d="M46.669-28.038c-0.303-0.266-0.552-0.508-0.826-0.718c-0.22-0.167-0.461-0.315-0.709-0.438&#10;&#9;&#9;c-0.604-0.292-1.212-0.33-1.823-0.006c-0.951,0.504-1.971,0.542-3.012,0.428c-0.303-0.032-0.501-0.176-0.64-0.459&#10;&#9;&#9;c-1.043-2.146-2.781-3.524-4.958-4.396c-0.249-0.1-0.366-0.216-0.41-0.487c-0.111-0.683-0.157-1.355,0.005-2.036&#10;&#9;&#9;c0.263-1.089,0.941-1.87,1.853-2.471c0.956-0.63,2.021-1.001,3.122-1.277c1.323-0.327,2.662-0.548,4.029-0.544&#10;&#9;&#9;c0.695,0.001,1.382,0.082,2.05,0.284c1.493,0.451,2.414,1.448,2.753,2.955c0.219,0.979,0.426,1.968,0.526,2.963&#10;&#9;&#9;c0.229,2.281-0.382,4.328-1.889,6.084C46.713-28.122,46.695-28.081,46.669-28.038z"/>
+    <g>
+      <path opacity="0.3" fill="#F6E8A0" enable-background="new    " d="M42.355-28.207c0.113-0.685,1.399-0.871,1.996-0.851&#10;&#9;&#9;&#9;c1.051,0.035,1.731,0.648,2.414,1.444c0.11,0.13,0.196,0.258,0.271,0.389c1.19-0.949,1.855-2.234,1.672-3.545&#10;&#9;&#9;&#9;c-0.324-2.31-3.169-3.817-6.352-3.37c-2.201,0.31-3.988,1.475-4.772,2.928c0.582,0.744,0.81,1.689,1.577,2.333&#10;&#9;&#9;&#9;C39.908-28.255,41.384-28.165,42.355-28.207z"/>
+    </g>
+    <path fill="url(#SVGID_34_)" d="M-35.045-6.486c0.689-0.34,1.169-0.414,1.596-0.26c-0.491,2.5-0.748,5.021-0.661,7.558&#10;&#9;&#9;c0.098,2.808,0.584,5.542,1.816,8.102c0.156,0.325,0.337,0.64,0.549,0.94c-0.013-0.05-0.021-0.101-0.04-0.147&#10;&#9;&#9;c-0.663-1.665-0.969-3.403-1.07-5.187c-0.157-2.78,0.17-5.516,0.771-8.225c0.014-0.066,0.034-0.13,0.061-0.226&#10;&#9;&#9;c0.393,0.264,0.776,0.516,1.149,0.781c0.045,0.033,0.046,0.154,0.036,0.231c-0.191,1.645-0.177,3.289,0,4.934&#10;&#9;&#9;c0.254,2.35,0.834,4.615,1.661,6.821c1.153,3.08,2.714,5.94,4.622,8.613c0.044,0.062,0.089,0.124,0.131,0.187&#10;&#9;&#9;c0.009,0.014,0.008,0.031,0.021,0.082c-0.278-0.098-0.538-0.187-0.798-0.281c-1.756-0.636-3.476-1.354-5.132-2.222&#10;&#9;&#9;c-0.259-0.134-0.509-0.303-0.728-0.496c-2.331-2.064-3.705-4.674-4.326-7.701c-0.093-0.45-0.159-0.908-0.284-1.36&#10;&#9;&#9;c0.028,0.502,0.041,1.006,0.085,1.508c0.208,2.389,0.655,4.734,1.46,6.997c0.205,0.575,0.062,1.094-0.025,1.634&#10;&#9;&#9;c-0.027,0.168-0.146,0.322-0.224,0.483c-0.129-0.125-0.288-0.23-0.381-0.378c-0.662-1.053-1.088-2.209-1.438-3.395&#10;&#9;&#9;c-0.535-1.814-0.854-3.68-1.117-5.554c-0.244-1.75-0.4-3.51-0.392-5.279c0.009-1.789,0.146-3.562,0.741-5.27&#10;&#9;&#9;c0.283-0.812,0.664-1.573,1.213-2.238c0.196-0.238,0.437-0.441,0.656-0.661C-35.076-6.491-35.061-6.489-35.045-6.486z"/>
+    <path opacity="0.2" fill="#2B2B2B" enable-background="new    " d="M-26.935,17.654c0,0-4.446-0.625-6.321-3.683&#10;&#9;&#9;c-1.876-3.056-2.415-8.312-2.415-8.312s-0.96-7.839,2.222-12.404C-35.465,9.995-26.935,17.654-26.935,17.654z"/>
+    <path fill="url(#SVGID_35_)" d="M-35.045-6.486c-0.016-0.003-0.031-0.005-0.047-0.007c-0.917,0.358-1.634,0.975-2.219,1.75&#10;&#9;&#9;c-0.853,1.13-1.302,2.437-1.578,3.804C-39.3,1.099-39.335,3.159-39.16,5.22c0.1,1.177,0.273,2.35,0.415,3.521&#10;&#9;&#9;c0.005,0.042,0.006,0.083,0.01,0.168c-0.072-0.062-0.123-0.097-0.164-0.14C-42.3,5.244-44.856,1.185-46.53-3.422&#10;&#9;&#9;c-0.044-0.12-0.03-0.282,0.008-0.408c0.999-3.194,2.445-6.183,4.216-9.013c0.748-1.194,1.573-2.34,2.364-3.507&#10;&#9;&#9;c0.062-0.092,0.134-0.175,0.248-0.323c0.028,0.587,0.341,1.062,0.1,1.637c-0.309,0.733-0.508,1.504-0.467,2.316&#10;&#9;&#9;c0.016,0.3,0.088,0.58,0.296,0.858c0.207-0.588,0.367-1.167,0.828-1.61c0.135,0.241,0.162,0.451,0.077,0.709&#10;&#9;&#9;c-0.321,0.958-0.544,1.937-0.483,2.956c0.019,0.312,0.09,0.619,0.175,0.933c0.279-0.765,0.74-1.391,1.273-1.992&#10;&#9;&#9;c0.031,0.046,0.059,0.076,0.076,0.112c0.711,1.47,1.622,2.805,2.707,4.023C-35.063-6.673-35.066-6.568-35.045-6.486z"/>
+    <path opacity="0.2" fill="#2B2B2B" enable-background="new    " d="M-38.485-10.406c0,0-5,9.785-2.66,18.188&#10;&#9;&#9;c0.291,0.23-0.469-0.363-1.374-1.404c-0.138-0.158-1.815-11.254,1.588-16.146c-4.574,5.426-2.408,15.121-2.601,14.838&#10;&#9;&#9;c-0.409-0.604-0.776-1.271-1.018-1.968c-2.339-10.956,5.745-17.55,5.745-17.55L-38.485-10.406z"/>
+    <path fill="#E65270" d="M38.031-45.635c-0.207-0.314-0.446-0.63-0.636-0.978c-0.175-0.316-0.21-0.676-0.094-1.032&#10;&#9;&#9;c0.143-0.44,0.438-0.609,0.895-0.545c0.367,0.056,0.735,0.112,1.104,0.124c0.392,0.013,0.42-0.04,0.464-0.421&#10;&#9;&#9;c0.011-0.101,0.024-0.205,0.061-0.297c0.148-0.377,0.367-0.702,0.805-0.76c0.425-0.056,0.724,0.182,0.954,0.509&#10;&#9;&#9;c0.685,0.97,0.117,2.281-1.073,2.439c-0.369,0.049-0.754-0.011-1.132-0.021c-0.073-0.003-0.145-0.016-0.218-0.022&#10;&#9;&#9;c-0.018,0.021-0.036,0.045-0.055,0.066c0.102,0.119,0.181,0.277,0.309,0.352c0.272,0.153,0.562,0.216,0.896,0.178&#10;&#9;&#9;c2.037-0.233,3.98,0.008,5.708,1.229c0.959,0.679,1.667,1.57,2.209,2.604c0.003,0.007,0.01,0.014,0.013,0.021&#10;&#9;&#9;c0.068,0.188,0.207,0.417,0.022,0.56c-0.108,0.084-0.354,0.047-0.517-0.006c-0.761-0.25-1.5-0.567-2.27-0.777&#10;&#9;&#9;c-1.126-0.308-2.292-0.318-3.45-0.255c-1.565,0.084-3.103,0.333-4.581,0.888c-1.657,0.622-3.152,1.5-4.449,2.709&#10;&#9;&#9;c-0.149,0.14-0.3,0.277-0.467,0.39c-0.283,0.188-0.476,0.095-0.487-0.247c-0.008-0.242,0.016-0.491,0.071-0.729&#10;&#9;&#9;c0.554-2.417,2.021-4.117,4.188-5.24C36.868-45.193,37.478-45.402,38.031-45.635z"/>
+    <path fill="url(#SVGID_36_)" d="M-48.025-0.646c-0.087-8.721,2.718-16.289,8.558-22.715c-0.082,0.592-0.191,1.184-0.241,1.775&#10;&#9;&#9;c-0.083,1.009-0.136,2.021-0.185,3.035c-0.01,0.206-0.062,0.369-0.178,0.534c-2.187,3.155-4.193,6.419-5.793,9.918&#10;&#9;&#9;c-0.812,1.775-1.506,3.598-1.878,5.522C-47.863-1.955-47.928-1.324-48.025-0.646z"/>
+    <path fill="url(#SVGID_37_)" d="M23.298,28.031c1.046,1.809,2.125,3.55,2.508,5.601c0.064,0.343,0.044,0.708,0.023,1.062&#10;&#9;&#9;c-0.114,1.978,0.091,3.909,0.732,5.793c0.057,0.167,0.126,0.343,0.122,0.513c-0.003,0.141-0.076,0.304-0.17,0.415&#10;&#9;&#9;c-0.12,0.141-0.283,0.091-0.437,0.003c-0.493-0.279-0.851-0.689-1.138-1.166c-0.584-0.959-0.895-2.021-1.112-3.106&#10;&#9;&#9;c-0.595-2.975-0.685-5.983-0.568-9.007C23.259,28.123,23.269,28.109,23.298,28.031z"/>
+    <path opacity="0.4" fill="#8B4FBA" enable-background="new    " d="M23.914,39.555c0.19,0.404,0.972,1.288,1.286,1.543l0.707,0.451&#10;&#9;&#9;c-0.71-1.812-0.965-3.656-0.965-5.586c0-1.626,0.501-3.136,0.58-4.754c0.064-1.333-0.517-2.003-1.209-3.088&#10;&#9;&#9;c-0.312-0.488-0.738-1.545-1.416-1.549c-0.314,0.771-0.263,1.737-0.271,2.562c-0.009,0.987-0.167,1.95-0.128,2.947&#10;&#9;&#9;C22.572,33.963,23.588,38.861,23.914,39.555z"/>
+    <path fill="#E65270" d="M48.256-38.39c-0.03-0.024-0.04-0.028-0.043-0.034c-0.769-1.581-2.136-2.271-3.788-2.41&#10;&#9;&#9;c-2.729-0.232-5.347,0.279-7.831,1.421c-1.047,0.482-1.943,1.182-2.447,2.258c-0.218,0.465-0.324,0.983-0.487,1.494&#10;&#9;&#9;c-0.542,0.003-1.187-0.533-1.23-1.111c-0.014-0.188,0.065-0.398,0.15-0.574c0.343-0.709,0.894-1.246,1.495-1.732&#10;&#9;&#9;c1.545-1.247,3.314-2.034,5.232-2.498c2.519-0.61,5.038-0.628,7.53,0.127c0.59,0.179,1.149,0.479,1.697,0.771&#10;&#9;&#9;c0.424,0.227,0.64,0.615,0.577,1.12C49.043-39.014,48.761-38.624,48.256-38.39z"/>
+    <path opacity="0.4" fill="#2B2B2B" enable-background="new    " d="M48.256-38.39c-0.03-0.024-0.04-0.028-0.043-0.034&#10;&#9;&#9;c-0.769-1.581-2.136-2.271-3.788-2.41c-2.729-0.232-5.347,0.279-7.831,1.421c-1.047,0.482-1.943,1.182-2.447,2.258&#10;&#9;&#9;c-0.218,0.465-0.324,0.983-0.487,1.494c-0.542,0.003-1.187-0.533-1.23-1.111c-0.014-0.188,0.065-0.398,0.15-0.574&#10;&#9;&#9;c0.343-0.709,0.894-1.246,1.495-1.732c1.545-1.247,3.314-2.034,5.232-2.498c2.519-0.61,5.038-0.628,7.53,0.127&#10;&#9;&#9;c0.59,0.179,1.149,0.479,1.697,0.771c0.424,0.227,0.64,0.615,0.577,1.12C49.043-39.014,48.761-38.624,48.256-38.39z"/>
+    <g>
+      <path fill="#0D0D0D" d="M20.855-13.299c-0.019-0.977,0.185-1.896,0.606-2.768c0.852-1.751,2.257-2.896,4.017-3.647&#10;&#9;&#9;&#9;c1.535-0.656,3.146-0.879,4.806-0.793c0.021,0.001,0.042,0.01,0.113,0.032c-1.161,0.179-2.242,0.468-3.286,0.885&#10;&#9;&#9;&#9;c-1.81,0.723-3.406,1.751-4.645,3.284c-0.665,0.82-1.166,1.733-1.508,2.735C20.928-13.479,20.89-13.389,20.855-13.299z"/>
+      <path fill="#0D0D0D" d="M34.411,0.682c1.787,1.091,2.173,3.654,1.028,5.119C35.708,3.971,35.338,2.271,34.411,0.682z"/>
+      <path fill="#0D0D0D" d="M37.358-9.376c0.874-0.716,1.925-0.914,3.022-0.895c0.438,0.011,0.874,0.083,1.312,0.104&#10;&#9;&#9;&#9;c0.237,0.011,0.485-0.004,0.718-0.055c0.442-0.101,0.639-0.033,0.79,0.391c0.342,0.967,0.503,1.969,0.388,2.99&#10;&#9;&#9;&#9;C43.532-6.351,43.43-5.849,43.236-5.4c-0.763,1.783-3.073,2.516-4.784,1.542c-0.22-0.125-0.428-0.271-0.625-0.433&#10;&#9;&#9;&#9;c-0.208-0.169-0.396-0.365-0.612-0.567c0.096-0.111,0.176-0.218,0.266-0.311c0.207-0.212,0.285-0.463,0.222-0.745&#10;&#9;&#9;&#9;C37.507-6.8,37.89-7.429,38.629-7.832c0.528-0.288,1.106-0.495,1.681-0.687c0.296-0.101,0.601-0.173,0.911-0.235&#10;&#9;&#9;&#9;c0.095,0.003,0.135,0.019,0.209,0.078c0.461,0.298,0.791,0.689,0.995,1.201c0.11-0.302,0.088-0.804-0.009-1.177&#10;&#9;&#9;&#9;c-0.06-0.23-0.021-0.794,0.096-0.958c-0.009-0.01-0.018-0.021-0.024-0.03c-0.055,0.026-0.109,0.054-0.161,0.085&#10;&#9;&#9;&#9;c-0.592,0.363-1.254,0.478-1.929,0.562c-0.835,0.106-1.647,0.297-2.358,0.778c-0.856,0.579-1.315,1.384-1.364,2.419&#10;&#9;&#9;&#9;c-0.002,0.032-0.007,0.062-0.018,0.147C35.884-7.162,36.121-8.361,37.358-9.376z"/>
+    </g>
+    <path fill="url(#SVGID_38_)" d="M38.491-6.119c0-0.941,0.763-1.704,1.702-1.704c0.942,0,1.705,0.763,1.705,1.704&#10;&#9;&#9;s-0.763,1.704-1.705,1.704C39.254-4.415,38.491-5.178,38.491-6.119z"/>
+    <use width="6" height="7" x="-3" y="-3.5" transform="matrix(-0.2012 0 0 0.2012 39.0508 -5.1309)" overflow="visible" xlink:href="#New_Symbol_2"/>
+    <path fill="#FFFFFF" d="M46.108-34.83c0.302-0.188,0.773-0.108,0.948,0.224c0.726,1.382,0.66,2.992-0.051,4.366&#10;&#9;&#9;c-0.408,0.788-1.63,0.152-1.223-0.633c0.485-0.939,0.584-2.093,0.101-3.014C45.71-34.217,45.772-34.623,46.108-34.83z"/>
+    <g>
+      <path opacity="0.2" fill="#430A1D" enable-background="new    " d="M-27.877-38.809c-0.43,12.319,7.165,8.312,10.544,13.513&#10;&#9;&#9;&#9;c0.276,0.324,0.437,0.688,0.563,0.97C-20.563-26.414-31.194-25.019-27.877-38.809z"/>
+    </g>
+    <g>
+      <path opacity="0.2" fill="#2B2B2B" enable-background="new    " d="M-33.661-14.793c10.431,8.98,31.025,8,32.532,7.873&#10;&#9;&#9;&#9;c-8.638-6.161-34.552-0.369-35.502-19.122C-38.314-20.716-36.147-16.934-33.661-14.793z"/>
+    </g>
+    <path opacity="0.2" fill="#430A1D" enable-background="new    " d="M-16.988-24.815c0,0-0.001-2.722,0-4.645&#10;&#9;&#9;c0.001-1.922-2.416-0.874-3.348,1.765C-18.007-26.782-16.988-24.815-16.988-24.815z"/>
+    <path opacity="0.2" fill="#430A1D" enable-background="new    " d="M-18.28-25.728c1.747,3.083-0.048,5.75-0.327,5.864&#10;&#9;&#9;c0.993,0.052,2.9,1.914,3.354,2.534c0.71,0.971,0.753,2.381,0.813,3.534c1.409,0.063,2.4,0.926,3.682,1.232&#10;&#9;&#9;c-1.09-1.021-2.569-2.229-3.231-3.605c-0.589-1.222-1.087-2.629-1.483-3.929c-0.323-1.065-0.624-2.123-0.824-3.222&#10;&#9;&#9;c-0.148-0.818-0.631-1.919-0.543-2.716c0,0-0.18-7.171,1.258-10.712c-2.722,0.927-4.151,3.149-4.647,4.009&#10;&#9;&#9;c-0.561,0.973-1.618,3.392-0.309,4.933C-19.691-27.497-18.765-26.583-18.28-25.728z"/>
+    <path fill="#0D0D0D" d="M-43.785-35.043c5.482-7.553,12.814-12.407,21.927-14.516c3.036-0.703,6.123-0.896,9.237-0.884&#10;&#9;&#9;c7.618,0.033,15.235,0.014,22.852,0.015c5.124,0.002,10.248,0,15.371,0.013c1.219,0.002,2.435,0.083,3.601,0.489&#10;&#9;&#9;c1.144,0.396,2.027,1.097,2.518,2.232c0.705,1.639,0.103,3.701-1.417,4.812c-1.116,0.814-2.396,1.051-3.745,0.991&#10;&#9;&#9;c-0.362-0.018-0.724-0.074-1.085-0.111c-0.083-0.009-0.172-0.028-0.251-0.01c-0.116,0.025-0.226,0.083-0.338,0.125&#10;&#9;&#9;c0.064,0.094,0.11,0.208,0.194,0.277c1.393,1.185,2.352,2.645,2.811,4.417c0.167,0.645,0.216,1.3,0.156,1.961&#10;&#9;&#9;c-0.004,0.052-0.008,0.103-0.01,0.152c-0.013,0.342,0.103,0.448,0.441,0.464c0.996,0.046,1.992,0.085,2.985,0.163&#10;&#9;&#9;c0.475,0.038,0.944,0.154,1.479,0.188c-0.063-0.082-0.109-0.203-0.192-0.241c-0.794-0.367-1.313-0.979-1.573-1.795&#10;&#9;&#9;c-0.305-0.961-0.519-1.943-0.475-2.962c0.068-1.646,0.708-3.062,1.75-4.311c0.937-1.12,2.091-1.963,3.396-2.603&#10;&#9;&#9;c0.168-0.082,0.212-0.154,0.154-0.344c-0.167-0.538-0.147-1.082,0.043-1.62c0.115-0.328,0.326-0.566,0.627-0.735&#10;&#9;&#9;c0.686-0.382,1.476-0.437,2.224-0.123c0.021-0.107,0.039-0.228,0.066-0.332c0.216-0.82,0.745-1.146,1.544-1.626&#10;&#9;&#9;c0.186,0,0.372,0,0.558,0c0.023,0,0.044,0.059,0.067,0.063c1.407,0.237,1.998,1.523,1.835,2.741&#10;&#9;&#9;c-0.042,0.314-0.133,0.623-0.194,0.906c0.637,0.168,1.294,0.298,1.921,0.517c2.895,1.008,4.806,2.962,5.616,5.938&#10;&#9;&#9;c0.323,1.191,0.123,2.258-0.801,3.142c-0.058,0.058-0.063,0.198-0.049,0.293c0.179,1.125,0.457,2.242,0.53,3.374&#10;&#9;&#9;c0.173,2.686-0.671,5.041-2.538,7.004c-0.11,0.115-0.117,0.213-0.088,0.354c0.123,0.602,0.264,1.203,0.338,1.812&#10;&#9;&#9;c0.153,1.229-0.316,2.247-1.135,3.134c-0.072,0.079-0.153,0.164-0.187,0.262c-0.229,0.683-0.702,1.148-1.327,1.462&#10;&#9;&#9;c-1.26,0.635-2.596,0.764-3.973,0.535c-0.902-0.151-1.725-0.531-2.54-0.917c-0.36-0.17-0.689-0.255-1.022,0.036&#10;&#9;&#9;c-0.056,0.049-0.145,0.061-0.198,0.107c-0.092,0.087-0.247,0.208-0.229,0.281c0.024,0.112,0.156,0.239,0.272,0.285&#10;&#9;&#9;c0.634,0.25,1.289,0.385,1.976,0.385c0.515,0,1.033,0.014,1.543,0.075c1.627,0.197,3.119,0.784,4.52,1.62&#10;&#9;&#9;c0.093,0.056,0.197,0.104,0.302,0.121c1.811,0.277,3.266,1.7,3.582,3.502c0.032,0.182,0.028,0.391,0.122,0.536&#10;&#9;&#9;c0.767,1.186,0.83,2.446,0.386,3.741c-0.281,0.819-0.671,1.604-0.98,2.413C48.648-6.8,48.479-6.352,48.437-5.9&#10;&#9;&#9;c-0.112,1.283-0.282,2.554-0.626,3.793c-0.735,2.646-2.045,4.939-4.148,6.738c-2.123,1.815-4.612,2.771-7.369,3.064&#10;&#9;&#9;c-0.243,0.025-0.371,0.103-0.478,0.343c-0.602,1.365-1.592,2.324-3.017,2.822c-0.37,0.129-0.739,0.158-1.087,0.001&#10;&#9;&#9;c-0.496-0.229-1.001-0.457-1.446-0.771c-1.164-0.812-2.085-1.867-2.85-3.06c-0.059-0.09-0.126-0.208-0.215-0.238&#10;&#9;&#9;c-0.12-0.039-0.297-0.053-0.389,0.011c-0.071,0.048-0.087,0.242-0.059,0.355c0.032,0.133,0.134,0.251,0.214,0.368&#10;&#9;&#9;c2.026,2.93,3.315,6.153,3.908,9.666c0.02,0.11,0.098,0.229,0.181,0.312c0.497,0.507,1.012,0.996,1.505,1.507&#10;&#9;&#9;c0.79,0.815,1.274,1.801,1.532,2.897c0.067,0.287,0.099,0.582,0.119,0.875c0.006,0.089-0.081,0.183-0.125,0.275&#10;&#9;&#9;c-0.095-0.055-0.219-0.088-0.277-0.167c-0.135-0.184-0.23-0.395-0.354-0.585c-0.082-0.126-0.189-0.233-0.286-0.354&#10;&#9;&#9;c-0.03,0.071-0.023,0.111-0.008,0.148c0.531,1.35,0.899,2.741,1.077,4.183c0.05,0.401,0.084,0.808,0.094,1.212&#10;&#9;&#9;c0.008,0.294-0.187,0.48-0.384,0.401c-0.105-0.043-0.196-0.131-0.277-0.212c-0.788-0.78-1.717-1.359-2.669-1.907&#10;&#9;&#9;c-0.021,0.029-0.037,0.042-0.038,0.057c-0.026,0.142-0.052,0.282-0.073,0.424c-0.255,1.665-0.694,3.284-1.201,4.89&#10;&#9;&#9;c-0.388,1.226-0.607,2.479-0.393,3.771c0.128,0.769,0.401,1.467,1.054,1.957c0.05,0.037,0.083,0.096,0.14,0.162&#10;&#9;&#9;c-0.076,0.039-0.123,0.077-0.176,0.088c-0.944,0.208-1.919,0.086-2.448-0.997c-0.06-0.121-0.14-0.23-0.25-0.412&#10;&#9;&#9;c-0.119,0.238-0.237,0.394-0.275,0.564c-0.188,0.854-0.234,1.723-0.154,2.596c0.101,1.078,0.482,2.065,0.951,3.027&#10;&#9;&#9;c0.121,0.25,0.236,0.507,0.314,0.771c0.139,0.479-0.128,0.833-0.629,0.825c-0.249-0.005-0.511-0.044-0.741-0.131&#10;&#9;&#9;c-1.234-0.464-2.172-1.279-2.796-2.446c-0.051-0.095-0.097-0.189-0.153-0.303c-0.495,0.481-0.946,0.95-1.181,1.592&#10;&#9;&#9;c-0.151,0.411-0.349,0.807-0.554,1.192c-0.148,0.276-0.258,0.27-0.438,0.019c-0.049-0.068-0.092-0.142-0.145-0.207&#10;&#9;&#9;c-0.138-0.167-0.245-0.168-0.354,0.021c-0.097,0.166-0.17,0.349-0.236,0.528c-0.322,0.87-0.848,1.592-1.572,2.169&#10;&#9;&#9;c-0.049,0.037-0.105,0.066-0.22,0.137c0.042-0.275,0.077-0.488,0.105-0.702c0.03-0.219,0.055-0.438,0.083-0.669&#10;&#9;&#9;c-0.066,0.008-0.085,0.006-0.098,0.014c-0.071,0.045-0.142,0.092-0.211,0.141c-2.924,2.021-6.121,3.425-9.577,4.245&#10;&#9;&#9;c-1.053,0.25-2.157,0.338-3.108,0.936c-0.021,0.014-0.048,0.021-0.071,0.032c-0.188,0.074-0.326,0.033-0.472-0.113&#10;&#9;&#9;c-0.093-0.092-0.259-0.133-0.391-0.131c-0.423,0.01-0.844,0.103-1.265,0.138c-0.386,0.032-0.784,0.12-1.156,0.213&#10;&#9;&#9;c-0.636,0.161-1.255,0.78-1.881,0.78c-0.152,0-0.306,0-0.457,0c-0.146,0-0.319-0.42-0.437-0.567&#10;&#9;&#9;c-0.207-0.259-0.461-0.562-0.786-0.583c-2.154-0.134-4.283-0.446-6.379-0.969c-3.192-0.792-6.191-2.021-8.877-3.953&#10;&#9;&#9;c-1.963-1.413-3.647-3.091-4.841-5.218c-0.244-0.432-0.437-0.896-0.63-1.353c-0.147-0.352-0.182-0.724-0.06-1.093&#10;&#9;&#9;c0.102-0.303,0.331-0.471,0.639-0.423c1.755,0.276,3.24-0.365,4.61-1.36c1.362-0.991,2.4-2.261,2.992-3.849&#10;&#9;&#9;c0.872-2.346,0.4-4.446-1.244-6.305c-0.166-0.188-0.354-0.358-0.556-0.562c-0.076,0.285-0.139,0.544-0.214,0.803&#10;&#9;&#9;c-0.372,1.27-0.903,2.455-1.807,3.445c-0.525,0.577-0.733-0.106-0.601-1.151c0.284-2.222-0.398-4.133-1.945-5.739&#10;&#9;&#9;c-0.094-0.099-0.236-0.16-0.369-0.207c-1.63-0.578-3.271-1.126-4.892-1.729c-2.894-1.076-5.688-2.371-8.336-3.965&#10;&#9;&#9;c-0.036-0.021-0.074-0.041-0.113-0.062c-0.251,0.162-0.354,0.404-0.343,0.674c0.014,0.36,0.073,0.72,0.115,1.079&#10;&#9;&#9;c0.004,0.043,0.018,0.083,0.022,0.125c0.086,0.635-0.162,0.842-0.747,0.558c-0.293-0.143-0.562-0.38-0.773-0.631&#10;&#9;&#9;c-0.674-0.807-1.092-1.763-1.493-2.721c-0.212-0.506-0.38-1.03-0.594-1.535c-0.078-0.185-0.201-0.371-0.353-0.5&#10;&#9;&#9;c-2.293-1.95-4.429-4.048-6.24-6.464c-1.551-2.07-2.875-4.271-3.95-6.625c-0.027-0.062-0.058-0.122-0.088-0.182&#10;&#9;&#9;c-0.008-0.014-0.024-0.021-0.058-0.052c-0.352,2.063-0.422,4.117-0.215,6.192c-0.165-0.616-0.348-1.229-0.492-1.85&#10;&#9;&#9;c-0.588-2.504-0.771-5.039-0.596-7.604c0.009-0.13-0.024-0.27-0.064-0.396c-0.763-2.398-1.291-4.849-1.515-7.354&#10;&#9;&#9;C-51.077-19.923-48.95-27.925-43.785-35.043z M-45.864-8.099c1.6-3.499,3.606-6.763,5.793-9.918&#10;&#9;&#9;c0.115-0.166,0.168-0.329,0.178-0.534c0.049-1.014,0.102-2.025,0.185-3.035c0.05-0.594,0.159-1.186,0.241-1.775&#10;&#9;&#9;c-5.84,6.426-8.645,13.994-8.558,22.715c0.098-0.677,0.162-1.309,0.283-1.929C-47.37-4.501-46.676-6.322-45.864-8.099z&#10;&#9;&#9; M-24.403,17.72c-0.013-0.051-0.012-0.068-0.021-0.082c-0.042-0.062-0.087-0.124-0.131-0.187c-1.908-2.673-3.469-5.534-4.622-8.613&#10;&#9;&#9;c-0.827-2.206-1.407-4.473-1.661-6.821c-0.177-1.645-0.191-3.289,0-4.934c0.01-0.077,0.009-0.198-0.036-0.231&#10;&#9;&#9;c-0.373-0.267-0.757-0.519-1.149-0.781c-0.026,0.095-0.047,0.158-0.061,0.226c-0.602,2.709-0.929,5.443-0.771,8.225&#10;&#9;&#9;c0.102,1.782,0.407,3.521,1.07,5.187c0.019,0.048,0.027,0.099,0.04,0.147c-0.212-0.303-0.393-0.615-0.549-0.94&#10;&#9;&#9;c-1.232-2.561-1.719-5.294-1.816-8.102c-0.087-2.536,0.17-5.058,0.661-7.558c-0.427-0.153-0.906-0.08-1.596,0.26&#10;&#9;&#9;c-0.021-0.083-0.019-0.188-0.067-0.244c-1.085-1.22-1.996-2.555-2.707-4.023c-0.018-0.037-0.045-0.066-0.076-0.112&#10;&#9;&#9;c-0.533,0.604-0.994,1.229-1.273,1.992c-0.085-0.312-0.156-0.62-0.175-0.933c-0.061-1.021,0.162-1.998,0.483-2.956&#10;&#9;&#9;c0.085-0.258,0.058-0.468-0.077-0.709c-0.461,0.442-0.621,1.022-0.828,1.61c-0.208-0.278-0.28-0.56-0.296-0.858&#10;&#9;&#9;c-0.041-0.812,0.158-1.583,0.467-2.316c0.241-0.573-0.071-1.05-0.1-1.637c-0.114,0.148-0.187,0.23-0.248,0.323&#10;&#9;&#9;c-0.791,1.167-1.616,2.312-2.364,3.507c-1.771,2.831-3.217,5.817-4.216,9.013c-0.038,0.126-0.052,0.288-0.008,0.408&#10;&#9;&#9;c1.674,4.605,4.229,8.666,7.631,12.191c0.041,0.043,0.092,0.078,0.164,0.14c-0.004-0.084-0.005-0.126-0.01-0.168&#10;&#9;&#9;c-0.142-1.173-0.315-2.346-0.415-3.521c-0.175-2.062-0.14-4.121,0.271-6.159c0.276-1.367,0.726-2.673,1.578-3.804&#10;&#9;&#9;c0.585-0.774,1.302-1.392,2.22-1.75c-0.221,0.22-0.461,0.422-0.657,0.661c-0.549,0.665-0.93,1.427-1.213,2.238&#10;&#9;&#9;c-0.596,1.707-0.732,3.479-0.741,5.27c-0.009,1.771,0.147,3.528,0.392,5.279c0.263,1.874,0.582,3.737,1.117,5.554&#10;&#9;&#9;c0.35,1.186,0.775,2.342,1.438,3.395c0.093,0.146,0.252,0.253,0.381,0.378c0.077-0.161,0.196-0.315,0.224-0.483&#10;&#9;&#9;c0.088-0.541,0.23-1.06,0.025-1.634c-0.805-2.264-1.252-4.607-1.46-6.997c-0.044-0.502-0.057-1.006-0.085-1.508&#10;&#9;&#9;c0.125,0.452,0.191,0.91,0.284,1.36c0.621,3.027,1.995,5.637,4.326,7.701c0.219,0.193,0.469,0.362,0.728,0.496&#10;&#9;&#9;c1.656,0.866,3.376,1.586,5.132,2.222C-24.941,17.533-24.682,17.623-24.403,17.72z M26.684,40.999&#10;&#9;&#9;c0.004-0.17-0.065-0.346-0.122-0.513c-0.642-1.884-0.847-3.816-0.732-5.793c0.021-0.354,0.041-0.72-0.023-1.062&#10;&#9;&#9;c-0.383-2.05-1.462-3.792-2.508-5.601c-0.029,0.078-0.039,0.092-0.039,0.104c-0.116,3.021-0.026,6.032,0.568,9.007&#10;&#9;&#9;c0.218,1.087,0.528,2.147,1.112,3.106c0.287,0.476,0.645,0.886,1.138,1.166c0.153,0.087,0.316,0.138,0.437-0.003&#10;&#9;&#9;C26.607,41.303,26.681,41.14,26.684,40.999z M27.933,24.981c-0.477-0.345-0.978-0.669-1.502-0.934&#10;&#9;&#9;c-1.844-0.927-3.798-1.587-5.73-2.299c-0.376-0.138-0.737-0.336-1.073-0.556c-0.668-0.438-1.165-1.052-1.596-1.716&#10;&#9;&#9;c-0.206-0.314-0.399-0.638-0.599-0.957c0.005,0.107,0.038,0.201,0.065,0.298c0.228,0.776,0.488,1.546,0.671,2.334&#10;&#9;&#9;c0.255,1.099,0.659,2.126,1.271,3.068c0.331,0.509,0.7,0.996,1.023,1.513c0.204,0.324,0.382,0.676,0.524,1.032&#10;&#9;&#9;c0.084,0.214,0.075,0.464,0.109,0.697c-0.034,0.017-0.067,0.034-0.103,0.05c-0.102-0.086-0.218-0.161-0.305-0.261&#10;&#9;&#9;c-0.355-0.407-0.696-0.828-1.06-1.228c-0.079-0.089-0.255-0.176-0.344-0.144c-0.085,0.031-0.175,0.22-0.163,0.33&#10;&#9;&#9;c0.045,0.441,0.071,0.896,0.209,1.312c0.19,0.573,0.49,1.11,0.712,1.677c0.109,0.276,0.18,0.582,0.205,0.878&#10;&#9;&#9;c0.012,0.14-0.124,0.292-0.191,0.437c-0.119-0.081-0.256-0.146-0.354-0.249c-0.174-0.183-0.313-0.397-0.492-0.577&#10;&#9;&#9;c-0.177-0.175-0.341-0.146-0.443,0.077c-0.073,0.156-0.146,0.348-0.122,0.506c0.061,0.397,0.169,0.787,0.27,1.179&#10;&#9;&#9;c0.094,0.356,0.227,0.708,0.3,1.067c0.05,0.243-0.012,0.484-0.267,0.667c-0.071-0.104-0.149-0.193-0.195-0.298&#10;&#9;&#9;c-0.1-0.214-0.179-0.438-0.272-0.652c-0.215-0.494-0.404-1.005-0.658-1.479c-0.224-0.417-0.445-0.38-0.686,0.025&#10;&#9;&#9;c-0.466,0.792-0.927,1.59-1.448,2.346c-0.287,0.415-0.454,0.842-0.498,1.328c-0.058,0.646-0.09,1.298-0.158,1.945&#10;&#9;&#9;c-0.026,0.241-0.091,0.492-0.355,0.72c-0.056-0.273-0.103-0.497-0.147-0.722c-0.066-0.33-0.111-0.666-0.202-0.989&#10;&#9;&#9;c-0.063-0.228-0.246-0.251-0.36-0.048c-0.103,0.184-0.173,0.404-0.188,0.614c-0.028,0.396,0.008,0.794-0.013,1.191&#10;&#9;&#9;c-0.008,0.18-0.073,0.361-0.141,0.532c-0.029,0.073-0.126,0.122-0.192,0.182c-0.044-0.074-0.103-0.142-0.128-0.223&#10;&#9;&#9;c-0.031-0.095-0.034-0.198-0.049-0.299c-0.043-0.292-0.067-0.591-0.136-0.875c-0.073-0.309-0.267-0.361-0.459-0.111&#10;&#9;&#9;c-0.176,0.229-0.315,0.5-0.403,0.774c-0.135,0.426-0.192,0.872-0.321,1.302c-0.06,0.201-0.198,0.385-0.327,0.556&#10;&#9;&#9;c-0.048,0.062-0.188,0.102-0.265,0.079c-0.057-0.015-0.113-0.146-0.116-0.228c-0.007-0.328,0.006-0.658,0.011-0.987&#10;&#9;&#9;c0.001-0.163,0-0.326,0-0.502c-0.072,0.016-0.1,0.015-0.118,0.026c-0.041,0.028-0.082,0.062-0.115,0.099&#10;&#9;&#9;c-0.338,0.359-0.565,0.776-0.636,1.271c-0.031,0.219-0.042,0.438-0.083,0.653c-0.05,0.254-0.202,0.351-0.46,0.319&#10;&#9;&#9;c-0.271-0.032-0.443-0.229-0.47-0.573c-0.019-0.224-0.004-0.448-0.004-0.706c-0.308,0.158-0.582,0.303-0.86,0.44&#10;&#9;&#9;c-2.842,1.407-5.843,2.279-8.991,2.647c-2.033,0.237-4.066,0.243-6.082-0.166c-1.219-0.247-2.38-0.644-3.387-1.407&#10;&#9;&#9;c-0.148-0.11-0.284-0.238-0.426-0.358c1.122,0.649,1.778,0.914,2.79,1.106c1.842,0.354,3.686,0.301,5.527,0.034&#10;&#9;&#9;c3.239-0.471,6.3-1.492,9.177-3.062c2.23-1.216,4.244-2.707,5.873-4.68c0.123-0.146,0.239-0.299,0.354-0.449&#10;&#9;&#9;c-3.335,1.593-7.102-1.404-10.87-0.074c5.164-2.662,8.222,0.767,11.134-1.452c0.741-0.564,0.873-2.019-0.821-1.775&#10;&#9;&#9;c-1.616,0.231,2.434-0.569,3.16-4.778c-0.041-0.687-0.137-1.386-0.294-2.101c-0.696-3.153-2.164-5.938-4.18-8.438&#10;&#9;&#9;C9.384,11.367,6.777,9.45,3.847,7.951c-0.042-0.01-0.088-0.025-0.146-0.049c0.008,0.035,0.007,0.053,0.013,0.062&#10;&#9;&#9;c0.041,0.065,0.083,0.129,0.125,0.192c1.4,2.081,2.55,4.278,3.109,6.746c0.384,1.69,0.43,3.384-0.104,5.058&#10;&#9;&#9;c-0.597,1.869-1.791,3.292-3.351,4.432C1.745,25.67-0.23,26.468-2.289,27.08c-0.44,0.131-0.888,0.247-1.386,0.384&#10;&#9;&#9;c0.056-0.06,0.062-0.076,0.076-0.081c0.085-0.036,0.172-0.069,0.259-0.103c1.438-0.562,2.808-1.248,4.05-2.175&#10;&#9;&#9;c1.788-1.329,3.103-3.003,3.7-5.18c0.527-1.925,0.41-3.85-0.06-5.765C3.743,11.68,2.619,9.433,1.262,7.285&#10;&#9;&#9;c-0.31-0.491-0.679-0.818-1.237-0.984C-0.65,6.102-1.31,5.843-2.04,5.585c2.066,2.218,2.123,5.338,1.727,7.169&#10;&#9;&#9;c-0.007-0.032-0.016-0.053-0.017-0.075c-0.071-1.492-0.579-2.836-1.413-4.062c-1.244-1.83-2.929-3.164-4.831-4.249&#10;&#9;&#9;c-0.147-0.084-0.327-0.111-0.492-0.164c0.688,0.793,1.215,1.657,1.524,2.647c0.3,0.958,0.404,2.46,0.205,2.999&#10;&#9;&#9;c-0.314-1.047-0.641-1.729-1.34-2.62c-1.2-1.528-2.593-2.851-4.208-3.951c-1.083-0.741-2.217-1.354-3.437-1.82&#10;&#9;&#9;c-2.157-0.827-4.407-1.334-6.645-1.882c-1.966-0.481-3.93-0.98-5.881-1.525c-1.065-0.298-2.088-0.737-2.973-1.431&#10;&#9;&#9;c-0.158,0.352-0.455,1.596-0.466,2.584c-0.129,11.646,9.138,17.871,11.962,21.129c0.822,0.949,1.294,2.112,1.707,3.288&#10;&#9;&#9;c0.168,0.477,0.312,0.961,0.47,1.456c0.027-0.035,0.053-0.059,0.066-0.084c0.789-1.515,1.275-3.062,0.895-4.816&#10;&#9;&#9;c-0.58-2.683-1.659-5.079-3.694-6.979c-0.022-0.021-0.04-0.048-0.11-0.128c0.099,0.051,0.134,0.064,0.167,0.086&#10;&#9;&#9;c1.673,0.964,3.202,2.11,4.495,3.554c2.174,2.424,3.341,5.261,3.502,8.519c0.07,1.419-0.125,2.82-0.284,4.221&#10;&#9;&#9;c-0.422,3.729-3.146,6.748-6.806,7.639c-0.275,0.067-0.554,0.162-0.803,0.293c-0.351,0.187-0.448,0.493-0.315,0.863&#10;&#9;&#9;c0.048,0.133,0.119,0.262,0.195,0.382c0.65,1.01,1.474,1.845,2.489,2.492c0.521,0.331,1.042,0.661,1.544,1.02&#10;&#9;&#9;c2.059,1.472,4.275,2.614,6.724,3.286c1.011,0.277,2.033,0.522,3.095,0.429c0.333-0.027,0.657-0.15,0.988-0.189&#10;&#9;&#9;c0.137-0.018,0.287,0.079,0.432,0.123C-3.65,45.878-3.715,46-3.816,46.057c-0.639,0.368-1.346,0.482-2.07,0.506&#10;&#9;&#9;c-1.065,0.036-2.102-0.166-3.138-0.377c-0.104-0.021-0.214-0.021-0.321-0.03c0.849,0.734,1.812,1.208,2.855,1.521&#10;&#9;&#9;c1.715,0.521,3.468,0.638,5.243,0.489c0.568-0.048,1.144-0.071,1.668-0.368c0.514-0.29,1.054-0.533,1.586-0.791&#10;&#9;&#9;c0.115-0.056,0.243-0.084,0.366-0.125c0.018,0.021,0.036,0.039,0.055,0.06c-0.056,0.144-0.102,0.292-0.173,0.428&#10;&#9;&#9;c-0.192,0.376-0.401,0.743-0.594,1.119c-0.035,0.071-0.018,0.173-0.023,0.26c0.08,0.004,0.17,0.034,0.239,0.01&#10;&#9;&#9;c0.408-0.136,0.824-0.256,1.212-0.438c0.555-0.264,1.133-0.354,1.738-0.395c0.824-0.057,1.65-0.135,2.469-0.252&#10;&#9;&#9;c1.202-0.173,2.118-0.793,2.712-1.868c0.139-0.251,0.287-0.497,0.438-0.742c0.054-0.087,0.128-0.161,0.193-0.24&#10;&#9;&#9;c0.029,0.013,0.061,0.024,0.09,0.04c-0.187,0.64-0.374,1.279-0.571,1.954c0.623-0.142,1.271-0.573,1.785-1.178&#10;&#9;&#9;c0.26-0.302,0.492-0.625,0.749-0.927c0.103-0.12,0.242-0.208,0.364-0.312c0.034,0.019,0.069,0.034,0.104,0.054&#10;&#9;&#9;c-0.05,0.428-0.101,0.855-0.149,1.285c0.025,0.009,0.052,0.019,0.079,0.026c0.387-0.236,0.771-0.479,1.159-0.715&#10;&#9;&#9;c1.318-0.794,2.553-1.688,3.478-2.948c0.127-0.174,0.222-0.149,0.289,0.062c0.083,0.265,0.137,0.539,0.228,0.802&#10;&#9;&#9;c0.027,0.08,0.138,0.189,0.202,0.185c0.089-0.007,0.213-0.095,0.243-0.176c0.062-0.17,0.087-0.357,0.099-0.542&#10;&#9;&#9;c0.025-0.37,0.016-0.742,0.055-1.11c0.012-0.113,0.132-0.218,0.204-0.323c0.095,0.084,0.225,0.15,0.275,0.256&#10;&#9;&#9;c0.147,0.303,0.256,0.624,0.393,0.933c0.126,0.286,0.201,0.291,0.384,0.048c0.24-0.321,0.51-0.58,0.962-0.548&#10;&#9;&#9;c0.42,0.032,0.473,0.001,0.629-0.39c0.267-0.667,0.494-1.347,0.768-2.01c0.13-0.316,0.329-0.604,0.486-0.908&#10;&#9;&#9;c0.039-0.072,0.073-0.175,0.053-0.246c-0.556-1.795-0.71-3.644-0.728-5.508c-0.017-1.725,0.017-3.45-0.042-5.172&#10;&#9;&#9;c-0.045-1.347-0.271-2.661-1.276-3.699c0.139,0.044,0.271,0.094,0.395,0.158c0.648,0.336,1.178,0.819,1.642,1.375&#10;&#9;&#9;c1.026,1.228,1.701,2.65,2.299,4.121c0.479,1.178,0.962,2.355,1.465,3.523c0.125,0.29,0.333,0.546,0.519,0.809&#10;&#9;&#9;c0.045,0.062,0.178,0.133,0.229,0.107c0.075-0.033,0.147-0.145,0.158-0.23c0.026-0.19,0.026-0.39,0.017-0.58&#10;&#9;&#9;c-0.043-0.963-0.123-1.925,0.043-2.885c0.024-0.147,0.066-0.312,0.029-0.447c-0.361-1.317-0.83-2.589-1.642-3.708&#10;&#9;&#9;c-0.025-0.035-0.041-0.078-0.093-0.177c0.579,0.258,0.968,0.64,1.283,1.089c0.315,0.451,0.591,0.93,0.902,1.428&#10;&#9;&#9;c0.131-0.534,0.257-1.048,0.383-1.562C28.759,26.031,28.535,25.42,27.933,24.981z M28.587,17.264&#10;&#9;&#9;c-1.478-1.396-3.23-2.381-5.07-3.217c-2.491-1.132-5.099-1.917-7.759-2.535c-0.951-0.221-1.908-0.412-2.924-0.63&#10;&#9;&#9;c0.409,0.507,0.771,0.961,1.143,1.41c0.035,0.043,0.115,0.062,0.178,0.071c1.667,0.173,3.269,0.604,4.813,1.246&#10;&#9;&#9;c3.571,1.482,6.628,3.722,9.353,6.438c0.025,0.025,0.043,0.057,0.063,0.085c-0.093-0.028-0.163-0.074-0.232-0.122&#10;&#9;&#9;c-2.299-1.596-4.664-3.084-7.151-4.372c-1.592-0.82-3.214-1.575-4.958-2.021c-0.411-0.105-0.831-0.175-1.312-0.273&#10;&#9;&#9;c0.067,0.114,0.093,0.156,0.117,0.2c0.548,0.958,1.151,1.893,1.627,2.887c0.298,0.625,0.715,1.083,1.244,1.486&#10;&#9;&#9;c1.98,1.507,4.162,2.67,6.388,3.759c0.02,0.009,0.045,0.006,0.117,0.019c-0.847-1.344-1.664-2.652-3.124-3.389&#10;&#9;&#9;c0.378,0.062,0.753,0.125,1.114,0.235c1.12,0.343,2.062,1.003,2.947,1.743c1.082,0.903,2.129,1.854,3.226,2.744&#10;&#9;&#9;c0.566,0.46,1.171,0.904,1.824,1.222c0.686,0.331,1.448,0.502,2.181,0.729c0.187,0.062,0.389,0.072,0.664,0.12&#10;&#9;&#9;c-0.09-0.464-0.128-0.871-0.251-1.249C31.969,21.294,30.535,19.108,28.587,17.264z M15.104-2.501&#10;&#9;&#9;c-0.541-0.301-1.116-0.571-1.706-0.751c-1.209-0.366-2.468-0.372-3.721-0.369C8.789-3.619,7.901-3.607,7.014-3.617&#10;&#9;&#9;C6.792-3.62,6.572-3.69,6.351-3.73C6.35-3.771,6.348-3.812,6.347-3.854c0.191-0.073,0.377-0.162,0.572-0.218&#10;&#9;&#9;c0.618-0.176,1.239-0.334,1.856-0.506c0.12-0.035,0.231-0.104,0.348-0.158C9.119-4.76,9.115-4.784,9.111-4.808&#10;&#9;&#9;c-0.08-0.032-0.16-0.077-0.245-0.096C7.626-5.149,6.391-5.449,5.14-5.627C3.022-5.929,0.922-6.296-1.129-6.92&#10;&#9;&#9;c-0.174-0.052-0.367-0.077-0.547-0.065C-3.75-6.842-5.823-6.692-7.898-6.541c-2.398,0.175-4.796,0.198-7.191-0.055&#10;&#9;&#9;c-2.721-0.287-5.353-0.933-7.901-1.917c-3.661-1.415-6.979-3.433-10.097-5.796c-0.053-0.04-0.103-0.088-0.155-0.131&#10;&#9;&#9;c0.102,0.02,0.181,0.062,0.257,0.108c2.847,1.7,5.784,3.217,8.887,4.399c2.63,1.001,5.331,1.724,8.122,2.094&#10;&#9;&#9;c2.017,0.267,4.042,0.328,6.074,0.315c2.272-0.012,4.547,0,6.819,0.001c0.03,0,0.059-0.004,0.092-0.007&#10;&#9;&#9;C-2.999-7.548-3-7.559-3.004-7.562c-0.054-0.022-0.108-0.046-0.163-0.067c-2.031-0.794-3.957-1.786-5.715-3.081&#10;&#9;&#9;c-0.531-0.394-1.101-0.689-1.711-0.918c-0.473-0.179-0.949-0.354-1.432-0.506c-2.479-0.783-5.045-1.167-7.596-1.628&#10;&#9;&#9;c-2.102-0.379-4.203-0.768-6.287-1.228c-1.9-0.419-3.734-1.062-5.438-2.031c-2.927-1.662-4.648-4.15-5.117-7.491&#10;&#9;&#9;c-0.074-0.525-0.116-1.057-0.169-1.528c-0.102,0.19-0.213,0.42-0.344,0.64c-1.109,1.865-1.885,3.851-2.127,6.02&#10;&#9;&#9;c-0.326,2.931,0.51,5.459,2.634,7.536c0.086,0.085,0.146,0.199,0.202,0.312c0.306,0.62,0.559,1.271,0.915,1.858&#10;&#9;&#9;c1.014,1.665,2.447,2.919,4.059,3.979c2.141,1.405,4.481,2.386,6.896,3.202c3.808,1.288,7.727,2.129,11.666,2.886&#10;&#9;&#9;c3.208,0.617,6.423,1.209,9.63,1.832c2.502,0.484,4.935,1.17,7.238,2.305c2.889,1.422,5.564,3.13,7.829,5.439&#10;&#9;&#9;c0.075,0.078,0.219,0.12,0.333,0.124c1.515,0.043,3.02,0.185,4.509,0.466c4.167,0.79,7.985,2.413,11.481,4.808&#10;&#9;&#9;c0.057,0.037,0.118,0.065,0.213,0.123c-0.021-0.125-0.03-0.2-0.048-0.272c-0.294-1.303-0.675-2.581-1.172-3.82&#10;&#9;&#9;C24.854,5.333,20.816,0.679,15.104-2.501z M48.629-34.238c-0.101-0.996-0.308-1.983-0.526-2.963&#10;&#9;&#9;c-0.339-1.507-1.26-2.504-2.753-2.955c-0.668-0.202-1.354-0.282-2.05-0.284c-1.367-0.003-2.706,0.217-4.029,0.544&#10;&#9;&#9;c-1.102,0.276-2.166,0.647-3.122,1.277c-0.911,0.601-1.59,1.382-1.853,2.471c-0.162,0.681-0.116,1.354-0.005,2.036&#10;&#9;&#9;c0.044,0.271,0.161,0.39,0.41,0.487c2.177,0.869,3.915,2.248,4.958,4.396c0.139,0.284,0.337,0.428,0.64,0.459&#10;&#9;&#9;c1.041,0.115,2.061,0.077,3.012-0.428c0.611-0.324,1.22-0.287,1.823,0.006c0.248,0.121,0.489,0.271,0.709,0.438&#10;&#9;&#9;c0.274,0.209,0.523,0.452,0.826,0.718c0.026-0.044,0.044-0.084,0.071-0.116C48.247-29.91,48.857-31.957,48.629-34.238z&#10;&#9;&#9; M32.529-38.686c0.167-0.109,0.317-0.25,0.467-0.388c1.297-1.209,2.792-2.087,4.449-2.709c1.479-0.555,3.016-0.804,4.581-0.888&#10;&#9;&#9;c1.158-0.062,2.324-0.052,3.45,0.255c0.77,0.21,1.509,0.527,2.27,0.777c0.162,0.053,0.408,0.09,0.517,0.006&#10;&#9;&#9;c0.185-0.143,0.046-0.37-0.022-0.56c-0.003-0.008-0.01-0.015-0.013-0.021c-0.542-1.033-1.25-1.926-2.209-2.604&#10;&#9;&#9;c-1.728-1.221-3.671-1.462-5.708-1.229c-0.334,0.038-0.623-0.023-0.896-0.178c-0.128-0.073-0.207-0.231-0.309-0.352&#10;&#9;&#9;c0.019-0.021,0.037-0.045,0.055-0.066c0.073,0.008,0.145,0.021,0.218,0.022c0.378,0.012,0.763,0.07,1.132,0.021&#10;&#9;&#9;c1.19-0.158,1.758-1.471,1.073-2.439c-0.23-0.327-0.529-0.562-0.954-0.509c-0.438,0.058-0.656,0.383-0.805,0.76&#10;&#9;&#9;c-0.036,0.092-0.05,0.196-0.061,0.297c-0.044,0.381-0.072,0.434-0.464,0.421c-0.369-0.011-0.737-0.068-1.104-0.124&#10;&#9;&#9;c-0.456-0.064-0.752,0.104-0.895,0.545c-0.116,0.356-0.081,0.716,0.094,1.032c0.189,0.346,0.429,0.661,0.636,0.978&#10;&#9;&#9;c-0.554,0.231-1.163,0.44-1.729,0.734c-2.167,1.123-3.635,2.823-4.188,5.24c-0.056,0.236-0.079,0.486-0.071,0.729&#10;&#9;&#9;C32.054-38.59,32.246-38.497,32.529-38.686z M33.659-35.661c0.163-0.511,0.27-1.029,0.487-1.494c0.504-1.076,1.4-1.774,2.447-2.258&#10;&#9;&#9;c2.484-1.142,5.103-1.653,7.831-1.421c1.652,0.14,3.02,0.83,3.788,2.41c0.003,0.006,0.013,0.01,0.043,0.034&#10;&#9;&#9;c0.505-0.234,0.787-0.624,0.855-1.172c0.062-0.504-0.153-0.894-0.577-1.119c-0.548-0.292-1.107-0.593-1.697-0.771&#10;&#9;&#9;c-2.492-0.755-5.012-0.737-7.53-0.127c-1.918,0.464-3.688,1.251-5.232,2.498c-0.602,0.486-1.152,1.022-1.495,1.732&#10;&#9;&#9;c-0.085,0.176-0.164,0.388-0.15,0.574C32.473-36.194,33.117-35.658,33.659-35.661z M-45.488-22.973&#10;&#9;&#9;c-2.023,3.519-3.076,7.254-3.077,7.827c-0.006,1.791,0.132,3.576,0.401,5.354c0.062,0.412,0.144,0.821,0.215,1.232&#10;&#9;&#9;c0.076-0.075,0.101-0.151,0.124-0.229c0.299-0.993,0.559-2,0.901-2.978c1.798-5.125,4.533-9.722,7.92-13.945&#10;&#9;&#9;c0.123-0.154,0.229-0.336,0.29-0.523c0.736-2.267,1.792-4.324,3.146-6.188c-1.518,0.647-3.248,0.88-5.308,3.251&#10;&#9;&#9;c2.531-4.881,8.527-6.815,8.527-6.815c3.337-2.985,7.219-4.958,11.52-6.139c0.347-0.095,0.698-0.171,1.049-0.255&#10;&#9;&#9;c-0.077,0.074-0.163,0.104-0.249,0.138c-3.2,1.145-6.15,2.741-8.82,4.846c-3.323,2.62-5.835,5.848-7.337,9.828&#10;&#9;&#9;c-0.161,0.428-0.237,0.827-0.072,1.269c0.112,0.3,0.17,0.619,0.263,0.926c0.706,2.307,1.811,4.381,3.588,6.055&#10;&#9;&#9;c1.7,1.604,3.743,2.573,5.959,3.227c2.654,0.778,5.396,1.065,8.125,1.423c1.583,0.206,3.158,0.456,4.736,0.697&#10;&#9;&#9;c0.424,0.063,0.843,0.168,1.294,0.261c-0.034-0.056-0.044-0.081-0.061-0.101c-1.233-1.383-2.259-2.902-3.075-4.568&#10;&#9;&#9;c-0.049-0.103-0.162-0.205-0.27-0.239c-0.729-0.23-1.453-0.503-2.201-0.653c-1.109-0.221-2.243-0.306-3.352-0.524&#10;&#9;&#9;c-5.947-1.181-7.78-4.367-7.753-4.338c1.806,1.918,4.696,2.459,5.459,2.725c1.78,0.619,3.624,0.787,5.493,0.769&#10;&#9;&#9;c0.546-0.008,1.091-0.04,1.653-0.062c-1.676-5.474-1.456-10.81,0.816-16.037c0.002,0.098-0.02,0.193-0.044,0.287&#10;&#9;&#9;c-0.889,3.376-1.249,6.791-0.741,10.267c0.613,4.221,2.448,7.817,5.513,10.78c2.297,2.22,4.998,3.818,7.896,5.106&#10;&#9;&#9;c2.753,1.224,5.647,1.981,8.565,2.685c2.196,0.529,4.401,1.048,6.569,1.687c2.904,0.851,5.533,2.249,7.773,4.315&#10;&#9;&#9;c0.347,0.32,0.697,0.647,0.983,1.021c1.887,2.442,4.188,4.354,7.019,5.6c0.179,0.599,0.492,1.231,0.979,1.891&#10;&#9;&#9;c0.692,0.926,1.548,1.689,2.47,2.374c0.261,0.193,0.608,0.304,0.933,0.368c0.354,0.073,0.567-0.098,0.688-0.441&#10;&#9;&#9;c0.032-0.097,0.054-0.194,0.073-0.293c0.189-0.065,0.377-0.167,0.562-0.311c0.127-0.098,0.249-0.204,0.361-0.315&#10;&#9;&#9;c0.521-0.524,0.886-1.148,1.182-1.817c0.064-0.145,0.15-0.202,0.299-0.221c0.351-0.046,0.703-0.095,1.05-0.162&#10;&#9;&#9;c5.632-1.114,9.733-5.394,10.448-11.548c0.064-0.555,0.06-1.13,0.226-1.65c0.212-0.661,0.564-1.277,0.856-1.913&#10;&#9;&#9;c0.257-0.559,0.539-1.107,0.761-1.681c0.228-0.587,0.257-1.199,0.079-1.816c-0.061-0.212-0.185-0.268-0.35-0.165&#10;&#9;&#9;c-0.232,0.146-0.441,0.329-0.662,0.494c-0.269,0.201-0.52,0.431-0.811,0.59c-0.237,0.131-0.506,0.104-0.718-0.139&#10;&#9;&#9;c0.049-0.037,0.09-0.066,0.126-0.1c0.58-0.517,1.162-1.029,1.733-1.556c0.068-0.062,0.117-0.188,0.111-0.285&#10;&#9;&#9;c-0.051-0.817-0.322-1.558-0.903-2.146c-0.747-0.757-1.626-1.161-2.718-0.905c-0.028-0.407-0.056-0.477-0.29-0.603&#10;&#9;&#9;c-1.519-0.823-3.129-1.308-4.87-1.275c-1.281,0.022-2.436-0.384-3.538-1c-0.342-0.191-0.709-0.363-1.086-0.463&#10;&#9;&#9;c-1.19-0.316-2.412-0.407-3.64-0.439c-0.101-0.002-0.2-0.008-0.3-0.013c0.063-0.071,0.126-0.093,0.189-0.108&#10;&#9;&#9;c0.98-0.231,1.973-0.261,2.974-0.188c0.324,0.023,0.689,0.093,0.971-0.021c0.826-0.336,1.627-0.738,2.422-1.147&#10;&#9;&#9;c0.223-0.115,0.419-0.17,0.645-0.086c0.505,0.189,1.012,0.376,1.504,0.595c1.046,0.465,2.117,0.745,3.272,0.586&#10;&#9;&#9;c0.632-0.086,1.248-0.225,1.799-0.562c0.357-0.22,0.639-0.5,0.667-0.956c0.005-0.064,0.063-0.135,0.115-0.183&#10;&#9;&#9;c0.148-0.137,0.312-0.26,0.461-0.396c0.44-0.406,0.626-0.91,0.572-1.505c-0.047-0.5-0.195-0.583-0.63-0.362&#10;&#9;&#9;c-0.21,0.106-0.429,0.193-0.649,0.025c0.279-0.178,0.552-0.338,0.813-0.518c0.391-0.268,0.53-0.654,0.516-1.119&#10;&#9;&#9;c-0.041-1.294-1.567-2.439-2.877-2.15c-0.432,0.095-0.818,0.266-1.054,0.675c-0.031,0.054-0.12,0.111-0.18,0.107&#10;&#9;&#9;c-0.342-0.019-0.691-0.017-1.021-0.091c-0.605-0.137-1.204-0.282-1.827-0.164c-0.287,0.055-0.57,0.134-0.867,0.202&#10;&#9;&#9;c-0.232-0.808-0.614-1.526-1.124-2.177c-1.185-1.506-2.743-2.46-4.54-3.049c-2.33-0.765-4.724-0.849-7.121-0.505&#10;&#9;&#9;c-3.465,0.495-5.921,2.376-7.246,5.639c-0.328,0.807-0.497,1.678-0.744,2.521c-0.397,1.356-0.927,2.66-1.631,3.892&#10;&#9;&#9;c-1.133,1.978-2.62,3.606-4.657,4.68c-2.288,1.206-4.72,1.447-7.239,0.999c-0.478-0.085-0.948-0.208-1.477-0.327&#10;&#9;&#9;c0.921-0.055,1.768-0.074,2.607-0.159c2.337-0.235,4.527-0.937,6.517-2.197c2.367-1.501,4.137-3.469,4.877-6.261&#10;&#9;&#9;c0.395-1.491,0.95-2.938,1.643-4.324c0.461-0.928,0.971-1.817,1.683-2.58c1.183-1.268,2.669-1.983,4.307-2.444&#10;&#9;&#9;c0.504-0.141,1.004-0.297,1.501-0.457c0.246-0.08,0.4-0.254,0.497-0.503c0.274-0.712,0.353-1.439,0.205-2.188&#10;&#9;&#9;c-0.229-1.178-0.805-2.178-1.58-3.072c-0.666-0.771-1.5-1.334-2.334-1.897c-0.406-0.271-0.8-0.566-1.17-0.885&#10;&#9;&#9;c-0.32-0.272-0.515-0.646-0.495-1.073c0.035-0.763,0.08-0.884,0.84-0.631c0.119,0.04,0.237,0.087,0.353,0.138&#10;&#9;&#9;c0.621,0.267,1.239,0.539,1.863,0.8c1.198,0.501,2.441,0.686,3.717,0.379c1.415-0.338,2.413-1.169,2.862-2.589&#10;&#9;&#9;c0.092-0.291,0.114-0.6-0.042-0.861c-0.075-0.129-0.268-0.256-0.411-0.26c-0.129-0.004-0.281,0.143-0.387,0.258&#10;&#9;&#9;c-0.065,0.072-0.063,0.206-0.092,0.312c-0.146,0.548-0.385,1.032-0.923,1.298c-0.102,0.051-0.218,0.064-0.328,0.097&#10;&#9;&#9;c0.717-0.744,1.105-1.586,1.053-2.601c-0.039-0.771-0.643-1.273-1.42-1.229c-0.226,0.013-0.385,0.119-0.41,0.339&#10;&#9;&#9;c-0.031,0.267-0.019,0.537-0.024,0.806c-0.009,0.32,0.015,0.646-0.03,0.96c-0.071,0.515-0.388,0.85-0.883,1.009&#10;&#9;&#9;c-0.239,0.076-0.469,0.035-0.691-0.078c0.312-0.064,0.61-0.158,0.767-0.45c0.151-0.28,0.305-0.572,0.381-0.877&#10;&#9;&#9;c0.163-0.658,0.084-1.293-0.521-1.697c-0.272-0.181-0.64-0.256-0.974-0.302c-0.717-0.1-1.405,0.103-2.098,0.263&#10;&#9;&#9;c-0.416,0.097-0.847,0.161-1.271,0.162c-0.401,0.001-0.806-0.084-1.203-0.155c-2.418-0.436-4.848-0.251-7.31-0.222&#10;&#9;&#9;c-2.663,0.033-5.326,0.017-7.989,0.019c-4.767,0-9.535,0.002-14.305,0.002c-1.969,0-3.939-0.02-5.908-0.007&#10;&#9;&#9;c-2.715,0.017-5.401,0.323-8.027,1.012c-10.003,2.616-17.489,8.031-22.423,17.108c-2.175,4.004-3.417,8.287-3.854,12.784&#10;&#9;&#9;C-48.447-17.957-45.459-23.519-45.488-22.973z"/>
+    <path fill="#E65270" d="M32.721,0.608c-0.839,1.789-0.849,2.545,0.079,4.238c0.7,1.278,2.56,0.141,2.308,1.568&#10;&#9;&#9;c-0.106,1.24-1.405,2.602-1.646,2.898c-0.296,0.351-0.461,0.696-0.898,0.607c-0.4-0.082-0.779-0.275-1.101-0.514&#10;&#9;&#9;c-1.137-0.845-2.191-1.787-3.045-2.928c-1.543-2.059-0.907-3.308,0.9-4.95C30.083,0.835,32.811,0.417,32.721,0.608z"/>
+    <path opacity="0.2" fill="#2B2B2B" enable-background="new    " d="M31.048,7.399c0.445,0.486,1.138,0.956,1.861,1.438&#10;&#9;&#9;c0.384,0.254-0.759-2.867-1.092-3.7c-1.092-2.729,0.339-4.42-0.055-4.211c-0.866,0.46-2.103,2.067-2.189,3.06&#10;&#9;&#9;C29.477,5.061,30.312,6.594,31.048,7.399z"/>
+    <g>
+      <path fill="#0D0D0D" d="M32.375,0.775c-0.84,1.788-0.849,2.544,0.08,4.237c0.699,1.277,1.023,2.564,0.771,3.993&#10;&#9;&#9;&#9;c-0.028,0.159-0.059,0.321-0.111,0.475c-0.149,0.429-0.412,0.639-0.849,0.549c-0.4-0.082-0.83-0.217-1.15-0.455&#10;&#9;&#9;&#9;c-1.137-0.845-2.191-1.787-3.045-2.928c-1.184-1.579-1.054-2.657-0.157-3.854c0.257-0.342,0.415-0.332,0.746-0.394&#10;&#9;&#9;&#9;c0.428-0.081,0.515,0.515,0.379,0.756c-0.313,0.554-0.519,1.111-0.558,1.549c-0.095,1.076,0.507,2.244,1.243,3.049&#10;&#9;&#9;&#9;c0.682,0.746,2.061,1.904,3.002,2.185c0.227-0.871-0.257-2.609-0.564-3.453c-0.374-1.031-1.506-2.912-1.222-4.138&#10;&#9;&#9;&#9;c0,0,0.399-1.134,0.822-1.422C32.185,0.638,32.375,0.775,32.375,0.775z"/>
+    </g>
+    <path fill="url(#SVGID_39_)" d="M27.897,34.689"/>
+    <g opacity="0.2">
+      <path fill="#8B4FBA" d="M-18.607-19.863c-0.115-0.006-0.221,0.006-0.308,0.053C-18.806-19.804-18.703-19.824-18.607-19.863z"/>
+    </g>
+    <path opacity="0.2" fill="#430A1D" enable-background="new    " d="M33.088-34.854c0.981,1.49,2.084,1.994,3.33,3.167&#10;&#9;&#9;c1.185,1.113,2.095,2.456,3.275,3.549c0.924-0.193,1.963-0.037,2.911-0.085c0.678-1.674,3.97-0.081,4.271,0.999l0.437-0.655&#10;&#9;&#9;c0.949-1.869-2.455-1.994-4.393-1.8c-1.36,0.135-7.23-1.408-7.037-8.979c-0.661-1.015-2.218-0.024-2.22-1.347&#10;&#9;&#9;c-0.001-1.354,0.021-3.742,1.191-4.604c-0.335-1.181-1.498,0.068-1.819,0.541c-0.718,1.059-1.744,2.934-1.977,4.189&#10;&#9;&#9;C30.663-37.735,32.015-36.483,33.088-34.854z"/>
+  </symbol>
+  <symbol id="New_Symbol_2" viewBox="-3 -3.5 6 7">
+    <path fill="#FFFFFF" d="M0-3.5c-0.184,0-0.368,0.051-0.53,0.152l-2,1.25C-2.822-1.915-3-1.595-3-1.25v2.5&#10;&#9;&#9;c0,0.345,0.178,0.666,0.47,0.848l2,1.25C-0.368,3.449-0.184,3.5,0,3.5s0.368-0.051,0.53-0.152l2-1.25C2.822,1.916,3,1.595,3,1.25&#10;&#9;&#9;v-2.5c0-0.345-0.178-0.665-0.47-0.848l-2-1.25C0.368-3.449,0.184-3.5,0-3.5z"/>
+    <polygon display="none" fill="none" points="-3,3 3,3 3,-3 -3,-3 &#9;"/>
+  </symbol>
+  <g transform="matrix(0.609758, 0, 0, 0.573533, -690.608643, 73.553665)">
+    <use width="100.904" height="101.91" x="-50.452" y="-50.955" transform="matrix(3.5035 0 0 -3.5035 1370.3418 277.1992)" overflow="visible" xlink:href="#New_Symbol_3"/>
+    <g>
+      <path d="M1566.941,352.545h67.404v16.225h-48.82v28.613h46.019v15.635h-46.019v43.954h-18.584V352.545L1566.941,352.545z"/>
+      <path d="M1650.865,345.465h17.699v111.507h-17.699V345.465z"/>
+      <path d="M1687.885,362.132c0-2.851,1.057-5.333,3.172-7.448c2.113-2.112,4.793-3.172,8.039-3.172c3.244,0,5.975,1.012,8.188,3.024&#10;&#9;&#9;&#9;c2.213,2.017,3.318,4.549,3.318,7.596c0,3.05-1.105,5.582-3.318,7.597c-2.213,2.017-4.94,3.023-8.188,3.023&#10;&#9;&#9;&#9;s-5.926-1.056-8.039-3.172C1688.941,367.467,1687.885,364.985,1687.885,362.132z M1690.393,386.174h17.699v70.798h-17.699V386.174&#10;&#9;&#9;&#9;z"/>
+      <path d="M1729.625,386.174h16.814v11.356h0.295c1.57-3.539,4.301-6.659,8.186-9.365c3.885-2.704,8.48-4.057,13.791-4.057&#10;&#9;&#9;&#9;c4.621,0,8.578,0.812,11.873,2.434c3.294,1.623,5.997,3.762,8.113,6.416c2.113,2.655,3.662,5.704,4.646,9.145&#10;&#9;&#9;&#9;c0.98,3.443,1.477,6.983,1.477,10.62v44.249h-17.7v-39.232c0-2.065-0.146-4.229-0.44-6.49c-0.295-2.261-0.938-4.301-1.918-6.121&#10;&#9;&#9;&#9;c-0.983-1.818-2.336-3.318-4.058-4.499c-1.722-1.18-4.007-1.77-6.856-1.77c-2.854,0-5.312,0.566-7.375,1.695&#10;&#9;&#9;&#9;c-2.064,1.131-3.763,2.581-5.088,4.353c-1.328,1.77-2.339,3.812-3.023,6.12c-0.688,2.312-1.033,4.646-1.033,7.006v38.938h-17.697&#10;&#9;&#9;&#9;v-70.798H1729.625L1729.625,386.174z"/>
+      <path d="M1815.76,345.465h17.699v70.503h0.443l26.844-29.794h22.714l-30.679,32.007l32.597,38.791h-23.452l-28.021-36.284h-0.443&#10;&#9;&#9;&#9;v36.284h-17.697V345.465H1815.76z"/>
+    </g>
+  </g>
+</svg>
diff --git a/docs/page/font-awesome/css/font-awesome.css b/docs/static/font-awesome/css/font-awesome.css
similarity index 100%
rename from docs/page/font-awesome/css/font-awesome.css
rename to docs/static/font-awesome/css/font-awesome.css
diff --git a/docs/page/font-awesome/css/font-awesome.min.css b/docs/static/font-awesome/css/font-awesome.min.css
similarity index 100%
rename from docs/page/font-awesome/css/font-awesome.min.css
rename to docs/static/font-awesome/css/font-awesome.min.css
diff --git a/docs/page/font-awesome/fonts/FontAwesome.otf b/docs/static/font-awesome/fonts/FontAwesome.otf
similarity index 100%
rename from docs/page/font-awesome/fonts/FontAwesome.otf
rename to docs/static/font-awesome/fonts/FontAwesome.otf
Binary files differ
diff --git a/docs/page/font-awesome/fonts/fontawesome-webfont.eot b/docs/static/font-awesome/fonts/fontawesome-webfont.eot
similarity index 100%
rename from docs/page/font-awesome/fonts/fontawesome-webfont.eot
rename to docs/static/font-awesome/fonts/fontawesome-webfont.eot
Binary files differ
diff --git a/docs/page/font-awesome/fonts/fontawesome-webfont.svg b/docs/static/font-awesome/fonts/fontawesome-webfont.svg
similarity index 100%
rename from docs/page/font-awesome/fonts/fontawesome-webfont.svg
rename to docs/static/font-awesome/fonts/fontawesome-webfont.svg
diff --git a/docs/page/font-awesome/fonts/fontawesome-webfont.ttf b/docs/static/font-awesome/fonts/fontawesome-webfont.ttf
similarity index 100%
rename from docs/page/font-awesome/fonts/fontawesome-webfont.ttf
rename to docs/static/font-awesome/fonts/fontawesome-webfont.ttf
Binary files differ
diff --git a/docs/page/font-awesome/fonts/fontawesome-webfont.woff b/docs/static/font-awesome/fonts/fontawesome-webfont.woff
similarity index 100%
rename from docs/page/font-awesome/fonts/fontawesome-webfont.woff
rename to docs/static/font-awesome/fonts/fontawesome-webfont.woff
Binary files differ
diff --git a/docs/page/font-awesome/fonts/fontawesome-webfont.woff2 b/docs/static/font-awesome/fonts/fontawesome-webfont.woff2
similarity index 100%
rename from docs/page/font-awesome/fonts/fontawesome-webfont.woff2
rename to docs/static/font-awesome/fonts/fontawesome-webfont.woff2
Binary files differ
diff --git a/docs/static/js/anchor.min.js b/docs/static/js/anchor.min.js
new file mode 100644
index 0000000..12ad14b
--- /dev/null
+++ b/docs/static/js/anchor.min.js
@@ -0,0 +1,6 @@
+/**
+ * AnchorJS - v3.1.0 - 2016-02-12
+ * https://github.com/bryanbraun/anchorjs
+ * Copyright (c) 2016 Bryan Braun; Licensed MIT
+ */
+function AnchorJS(A){"use strict";function e(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.class=A.hasOwnProperty("class")?A.class:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64}function t(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}function n(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style"),t=" .anchorjs-link {   opacity: 0;   text-decoration: none;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale; }",n=" *:hover > .anchorjs-link, .anchorjs-link:focus  {   opacity: 1; }",o=' @font-face {   font-family: "anchorjs-icons";   font-style: normal;   font-weight: normal;   src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',i=" [data-anchorjs-icon]::after {   content: attr(data-anchorjs-icon); }";e.className="anchorjs",e.appendChild(document.createTextNode("")),A=document.head.querySelector('[rel="stylesheet"], style'),void 0===A?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(t,e.sheet.cssRules.length),e.sheet.insertRule(n,e.sheet.cssRules.length),e.sheet.insertRule(i,e.sheet.cssRules.length),e.sheet.insertRule(o,e.sheet.cssRules.length)}}this.options=A||{},this.elements=[],e(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var o,i,s,a,r,c,l,h,g,u,B,Q,f=[];if(e(this.options),Q=this.options.visible,"touch"===Q&&(Q=this.isTouchDevice()?"always":"hover"),A||(A="h1, h2, h3, h4, h5, h6"),o=t(A),0===o.length)return!1;for(n(),i=document.querySelectorAll("[id]"),s=[].map.call(i,function(A){return A.id}),r=0;r<o.length;r++)if(this.hasAnchorJSLink(o[r]))f.push(r);else{if(o[r].hasAttribute("id"))a=o[r].getAttribute("id");else{h=this.urlify(o[r].textContent),g=h,l=0;do void 0!==c&&(g=h+"-"+l),c=s.indexOf(g),l+=1;while(-1!==c);c=void 0,s.push(g),o[r].setAttribute("id",g),a=g}u=a.replace(/-/g," "),B=document.createElement("a"),B.className="anchorjs-link "+this.options.class,B.href="#"+a,B.setAttribute("aria-label","Anchor link for: "+u),B.setAttribute("data-anchorjs-icon",this.options.icon),"always"===Q&&(B.style.opacity="1"),""===this.options.icon&&(B.style.fontFamily="anchorjs-icons",B.style.fontStyle="normal",B.style.fontVariant="normal",B.style.fontWeight="normal",B.style.lineHeight=1,"left"===this.options.placement&&(B.style.lineHeight="inherit")),"left"===this.options.placement?(B.style.position="absolute",B.style.marginLeft="-1em",B.style.paddingRight="0.5em",o[r].insertBefore(B,o[r].firstChild)):(B.style.paddingLeft="0.375em",o[r].appendChild(B))}for(r=0;r<f.length;r++)o.splice(f[r]-r,1);return this.elements=this.elements.concat(o),this},this.remove=function(A){for(var e,n,o=t(A),i=0;i<o.length;i++)n=o[i].querySelector(".anchorjs-link"),n&&(e=this.elements.indexOf(o[i]),-1!==e&&this.elements.splice(e,1),o[i].removeChild(n));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){var t,n=/[& +$,:;=?@"#{}|^~[`%!'\]\.\/\(\)\*\\]/g;return this.options.truncate||e(this.options),t=A.trim().replace(/\'/gi,"").replace(n,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=(" "+A.firstChild.className+" ").indexOf(" anchorjs-link ")>-1,t=(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ")>-1;return e||t}}var anchors=new AnchorJS;
\ No newline at end of file
diff --git a/docs/static/js/flink.js b/docs/static/js/flink.js
new file mode 100644
index 0000000..6bb2434
--- /dev/null
+++ b/docs/static/js/flink.js
@@ -0,0 +1,178 @@
+/** 
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements.  See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership.  The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License.  You may obtain a copy of the License at
+* 
+*   http://www.apache.org/licenses/LICENSE-2.0
+* 
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied.  See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+
+/**
+ * Function to synchronize all tabs on a page to a given user selection. 
+ * 
+ * The selection of a tab group should only change if it contains an 
+ * input with the given tabId. Otherwise, its current seletion should
+ * remain unchanged.
+ * 
+ * See layouts/shortcodes/tabs.html
+ */
+function onSwitch(tabId) {
+    var selectorForId = "[data-tab-group='flink-tabs'][data-tab-item='" + tabId + "']";
+
+    Array
+        // find all tab group elements on the page
+        .from(document.getElementsByClassName("book-tabs"))
+        // filter out any elements that do not contain 
+        // the specific tab the user wants to switch to.
+        // these tabs should remain on their current selection
+        .filter(div => div.querySelectorAll(selectorForId).length > 0)
+        // extract the input elements for all tab groups
+        // that do contain the target tab id
+        .flatMap(div => Array.from(div.querySelectorAll("[data-tab-group='flink-tabs']")))
+        // check input elements that contain the selected tabId
+        // and uncheck all others
+        .forEach(input => {
+            if (input.matches(selectorForId)) {
+                input.setAttribute("checked", "checked")
+            } else {
+                input.removeAttribute("checked")
+            }
+        });
+}
+
+/**
+ * Function to collapse the ToC in desktop mode.
+ */
+function collapseToc() {
+    document.querySelector(".book-toc").style["display"] = "none";
+    document.querySelector(".expand-toc").style["display"] = "block";
+
+    sessionStorage.setItem("collapse-toc", "true");
+}
+
+/**
+ * Function to expand the ToC in desktop mode.
+ */
+function expandToc() {
+    document.querySelector(".book-toc").style["display"] = "block";
+    document.querySelector(".expand-toc").style["display"] = "none";
+
+    sessionStorage.removeItem("collapse-toc");
+}
+
+
+
+/**
+ * Selects all text within the given container and copies it
+ * to the users clipboard. If any actions are not supported
+ * by a users browser this function will do nothing.
+ */
+function selectTextAndCopy(containerId) {
+    if (wasLastCopied(containerId)) {
+        return;
+    }
+
+    try {
+        if (highlightContent(containerId)) {
+            if (document.queryCommandSupported("copy")) {
+                document.execCommand("copy") && showCurrentCopyAlert(containerId);
+            }
+        }  
+    } catch (e) {}
+}
+
+/**
+ * Checks if this container was the most recent one copied
+ * to the clipboard. This was users can double click and
+ * highlight specific portions of the dep. 
+ */
+function wasLastCopied(containerId) {
+    return document
+        .querySelector("[copyable='flink-module'][copyattribute='" + containerId + "'")
+        .style["display"] == "block";
+}
+
+/**
+ * Highlights the content of the given container.
+ * Returns true on success, false otherwise.
+ */
+function highlightContent(containerId) {
+    try {
+        if (document.selection) {
+            var range = document.body.createTextRange();
+            range.moveToElementText(document.getElementById(containerId));
+            range.select().createTextRange();
+            return true;
+        } else if (window.getSelection) {
+            var range = document.createRange();
+            range.selectNode(document.getElementById(containerId));
+            window.getSelection().removeAllRanges();
+            window.getSelection().addRange(range);
+            return true;
+        } else {
+            return false;
+        }
+    } catch (err) {
+        // Text highlighting is not supported by this browser
+        return false;
+    }
+}
+
+
+/**
+ * Makes the copy alert for the given container
+ * visible while hiding all others.
+ */
+function showCurrentCopyAlert(containerId) {
+    document
+        .querySelectorAll("[copyable='flink-module']")
+        .forEach(function (alert) {
+            alert.style["display"] = "none";
+        });
+
+    var alert = document.querySelector("[copyable='flink-module'][copyattribute='" + containerId + "'");
+
+    alert.style["text-align"] = "center";
+    alert.style["display"] = "block";
+}
+
+/**
+ * Adds forEach to NodeList for old versions
+ * of microsoft IE and Edge.
+ */
+if (window.NodeList && !NodeList.prototype.forEach) {
+    NodeList.prototype.forEach = Array.prototype.forEach;
+}
+
+/**
+ * Adds forEach to Element for old versions
+ * of microsoft IE and Edge.
+ */
+if (!Element.prototype.matches) {
+  Element.prototype.matches = Element.prototype.msMatchesSelector ||
+                              Element.prototype.webkitMatchesSelector;
+}
+
+
+document.addEventListener("DOMContentLoaded", function(event) { 
+    if (sessionStorage.getItem("collapse-toc") === "true") {
+        collapseToc();
+    }
+
+    // Display anchor links when hovering over headers. For documentation of the
+    // configuration options, see the AnchorJS documentation.
+    anchors.options = {
+        placement: 'right'
+    };
+    anchors.add();
+});
\ No newline at end of file
diff --git a/docs/fig/stateful_functions_logo.png b/docs/static/navbar-brand-logo.jpg
similarity index 100%
rename from docs/fig/stateful_functions_logo.png
rename to docs/static/navbar-brand-logo.jpg
Binary files differ
diff --git a/docs/themes/book b/docs/themes/book
new file mode 160000
index 0000000..a486adf
--- /dev/null
+++ b/docs/themes/book
@@ -0,0 +1 @@
+Subproject commit a486adf8462c0abfc9034436ddd72927d6656809
diff --git a/licenses/LICENSE.anchorjs b/licenses/LICENSE.anchorjs
new file mode 100644
index 0000000..37b90cf
--- /dev/null
+++ b/licenses/LICENSE.anchorjs
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Bryan Braun
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/licenses/LICENSE.jquery-1.11.2 b/licenses/LICENSE.jquery-1.11.2
deleted file mode 100644
index 6a62c1d..0000000
--- a/licenses/LICENSE.jquery-1.11.2
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2014 jQuery Foundation and other contributors
-http://jquery.com/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 8a23d49..9c2381d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -228,11 +228,12 @@
                         <!-- Generated content -->
                         <exclude>**/target/**</exclude>
                         <exclude>**/_build/**</exclude>
-                        <exclude>docs/page/font-awesome/**</exclude>
-                        <exclude>docs/page/js/**</exclude>
-                        <exclude>docs/content/page/js/**</exclude>
-                        <exclude>docs/content/page/font-awesome/**</exclude>
-                        <exclude>docs/Gemfile.lock</exclude>
+						<exclude>docs/static/font-awesome/**</exclude>
+						<exclude>docs/resources/**</exclude>
+						<exclude>docs/public/**</exclude>
+						<exclude>docs/themes/book/**</exclude>
+						<exclude>docs/assets/github.css</exclude>		
+						<exclude>docs/static/js/anchor.min.js</exclude>
                         <!-- Generated code  -->
                         <exclude>**/generated/**</exclude>
                         <!-- Quickstart archetype test configuration -->