Update asf-site branch
diff --git a/.asf.yaml b/.asf.yaml
index cd1fd40..bc09de5 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -1,6 +1,3 @@
-# publish:
-#   whoami: asf-site
-
 github:
   description: Apache Pinot Website
   homepage: https://pinot.apache.org/
diff --git a/.github/workflows/fail-on-pull-request.yml b/.github/workflows/fail-on-pull-request.yml
deleted file mode 100644
index d0f393b..0000000
--- a/.github/workflows/fail-on-pull-request.yml
+++ /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.
-#
-
-name: Fail Pull Request
-on:
-  pull_request:
-    branches:
-      - asf-site
-jobs:
-  fail-pull-request:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-      - name: Fail Pull Request
-        run: |
-          echo "Please develop and create PR on 'dev' branch, 'asf-site' branch is auto built from 'dev' branch."
-          exit 1
diff --git a/.github/workflows/scripts/publish-site.sh b/.github/workflows/scripts/publish-site.sh
deleted file mode 100755
index b5e99e8..0000000
--- a/.github/workflows/scripts/publish-site.sh
+++ /dev/null
@@ -1,61 +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 -x -e
-ls -lrth
-ROOT_DIR=$(git rev-parse --show-toplevel)
-SITE_DIR=${ROOT_DIR}
-git branch
-
-# Build website
-ORIGIN_REPO="https://github.com/apache/incubator-pinot-site"
-echo "ORIGIN_REPO: $ORIGIN_REPO"
-
-DEV_TMP=/tmp/pinot-site-dev
-rm -rf $DEV_TMP
-mkdir $DEV_TMP
-cd $DEV_TMP
-
-git clone "$ORIGIN_REPO" .
-git checkout dev
-COMMIT_ID=`git rev-parse HEAD`
-GIT_MSG=`git rev-list --pretty --max-count=2 ${COMMIT_ID}`
-cd ${DEV_TMP}/website
-npm install yarn
-yarn install
-yarn run build
-
-cd ${ROOT_DIR}
-
-git status
-
-rm -rf ${SITE_DIR}/assets
-## copy generated site
-cp -r ${DEV_TMP}/website/build/* ${SITE_DIR}/
-
-git status
-git add .
-git status
-
-git config user.name "Pinot Site Updater"
-git config user.email "dev@pinot.apache.org"
-git commit -m "Update Pinot Site from dev branch ${COMMIT_ID}" -m "$GIT_MSG"
-git log -2
-git push origin asf-site
diff --git a/404.html b/404.html
deleted file mode 100644
index b5af83e..0000000
--- a/404.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!doctype html>
-<html lang="en" dir="ltr">
-<head>
-<meta charset="UTF-8">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-<meta name="generator" content="Docusaurus v2.0.0-beta.1">
-<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Pinot™ Blog RSS Feed">
-<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Pinot™ Blog Atom Feed">
-<link rel="preconnect" href="https://www.google-analytics.com">
-<link rel="preconnect" href="https://www.googletagmanager.com">
-<script async src="https://www.googletagmanager.com/gtag/js?id=G-ZXG79NJEBY"></script>
-<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-ZXG79NJEBY",{})</script>
-<link rel="search" type="application/opensearchdescription+xml" title="Apache Pinot™" href="/opensearch.xml">
-<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Ubuntu|Roboto|Source+Code+Pro">
-<link rel="stylesheet" href="https://at-ui.github.io/feather-font/css/iconfont.css"><title data-react-helmet="true">Page Not Found | Apache Pinot™</title><meta data-react-helmet="true" property="og:title" content="Page Not Found | Apache Pinot™"><meta data-react-helmet="true" property="og:url" content="https://pinot.apache.org/404.html"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="default"><link data-react-helmet="true" rel="shortcut icon" href="/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://pinot.apache.org/404.html"><link data-react-helmet="true" rel="alternate" href="https://pinot.apache.org/404.html" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://pinot.apache.org/404.html" hreflang="x-default"><link data-react-helmet="true" rel="preconnect" href="https://BH4D9OD16A-dsn.algolia.net" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.d071271f.css">
-<link rel="preload" href="/assets/js/runtime~main.fa80698b.js" as="script">
-<link rel="preload" href="/assets/js/main.271ac9bf.js" as="script">
-</head>
-<body>
-<script>!function(){function e(e){document.documentElement.setAttribute("data-theme",e)}var t=function(){var e=null;try{e=localStorage.getItem("theme")}catch(e){}return e}();null!==t?e(t):window.matchMedia("(prefers-color-scheme: dark)").matches?e("dark"):window.matchMedia("(prefers-color-scheme: light)").matches?e("light"):e("dark")}()</script><div id="__docusaurus">
-<div><a href="#main" class="skipToContent_OuoZ shadow--md">Skip to main content</a></div><nav class="navbar navbar--fixed-top navbarHideable_RReh"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><img src="/img/pinot-navbar-logo-722f37.svg" alt="Pinot" class="themedImage_TMUO themedImage--light_4Vu1 navbar__logo"><img src="/img/pinot-navbar-logo-722f37.svg" alt="Pinot" class="themedImage_TMUO themedImage--dark_uzRr navbar__logo"></a></div><div class="navbar__items navbar__items--right"><a href="https://docs.pinot.apache.org/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Docs</a><a class="navbar__item navbar__link" href="/download">Download</a><a class="navbar__item navbar__link" href="/blog">Blog</a><a href="https://github.com/apache/pinot" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link"><span>GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a><div class="react-toggle displayOnlyInLargeViewport_cxYs react-toggle--checked react-toggle--disabled"><div class="react-toggle-track" role="button" tabindex="-1"><div class="react-toggle-track-check"><span class="toggle_iYfV" style="margin-left:2px">🌙</span></div><div class="react-toggle-track-x"><span class="toggle_iYfV" style="margin-left:2px">☀️</span></div><div class="react-toggle-thumb"></div></div><input type="checkbox" checked="" class="react-toggle-screenreader-only" aria-label="Switch between dark and light mode"></div><div class="searchBox_NKBi"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/pinot-navbar-logo-722f37.svg" alt="Pinot" class="themedImage_TMUO themedImage--light_4Vu1 navbar__logo"><img src="/img/pinot-navbar-logo-722f37.svg" alt="Pinot" class="themedImage_TMUO themedImage--dark_uzRr navbar__logo"></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a href="https://docs.pinot.apache.org/" target="_blank" rel="noopener noreferrer" class="menu__link">Docs</a></li><li class="menu__list-item"><a class="menu__link" href="/download">Download</a></li><li class="menu__list-item"><a class="menu__link" href="/blog">Blog</a></li><li class="menu__list-item"><a href="https://github.com/apache/pinot" target="_blank" rel="noopener noreferrer" class="menu__link"><span>GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_wgqa"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li></ul></div></div></div></nav><div class="main-wrapper"><main class="container margin-vert--xl"><div class="row"><div class="col col--6 col--offset-3"><h1 class="hero__title">Page Not Found</h1><p>We could not find what you were looking for.</p><p>Please contact the owner of the site that linked you to the original URL and let them know their link is broken.</p></div></div></main></div><footer class="footer"><div class="container"><div class="row footer__links"><div class="col footer__col"><h4 class="footer__title">About</h4><ul class="footer__items"><li class="footer__item"><a href="https://docs.pinot.apache.org/" target="_blank" rel="noopener noreferrer" class="footer__link-item">What is Apache Pinot?</a></li><li class="footer__item"><a class="footer__link-item" href="/who_uses">Who uses Apache Pinot?</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/pinot-components" target="_blank" rel="noopener noreferrer" class="footer__link-item">Components</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/basics/architecture" target="_blank" rel="noopener noreferrer" class="footer__link-item">Architecture</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/plugins/plugin-architecture" target="_blank" rel="noopener noreferrer" class="footer__link-item">Plugins Architecture</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Integrations</h4><ul class="footer__items"><li class="footer__item"><a href="https://docs.pinot.apache.org/integrations/trino" target="_blank" rel="noopener noreferrer" class="footer__link-item">Trino</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/integrations/presto" target="_blank" rel="noopener noreferrer" class="footer__link-item">Presto</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/integrations/superset" target="_blank" rel="noopener noreferrer" class="footer__link-item">Superset</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/integrations/thirdeye" target="_blank" rel="noopener noreferrer" class="footer__link-item">ThirdEye</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Docs</h4><ul class="footer__items"><li class="footer__item"><a href="https://docs.pinot.apache.org/getting-started" target="_blank" rel="noopener noreferrer" class="footer__link-item">Getting Started</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/pinot-components" target="_blank" rel="noopener noreferrer" class="footer__link-item">Pinot Components</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/users" target="_blank" rel="noopener noreferrer" class="footer__link-item">User Guide</a></li><li class="footer__item"><a href="https://docs.pinot.apache.org/operators/operating-pinot" target="_blank" rel="noopener noreferrer" class="footer__link-item">Administration</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Community</h4><ul class="footer__items"><li class="footer__item"><a href="https://join.slack.com/t/apache-pinot/shared_invite/zt-5z7pav2f-yYtjZdVA~EDmrGkho87Vzw" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack</a></li><li class="footer__item"><a href="https://github.com/apache/pinot" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github</a></li><li class="footer__item"><a href="https://twitter.com/ApachePinot" target="_blank" rel="noopener noreferrer" class="footer__link-item">Twitter</a></li><li class="footer__item"><a href="mailto:dev-subscribe@pinot.apache.org?Subject=SubscribeToPinot" target="_blank" rel="noopener noreferrer" class="footer__link-item">Mailing List</a></li></ul></div><div class="col footer__col"><h4 class="footer__title">Apache</h4><ul class="footer__items"><li class="footer__item"><a href="https://www.apache.org/events/current-event" target="_blank" rel="noopener noreferrer" class="footer__link-item">Events</a></li><li class="footer__item"><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Thanks</a></li><li class="footer__item"><a href="https://www.apache.org/licenses" target="_blank" rel="noopener noreferrer" class="footer__link-item">License</a></li><li class="footer__item"><a href="https://www.apache.org/security" target="_blank" rel="noopener noreferrer" class="footer__link-item">Security</a></li><li class="footer__item"><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="footer__link-item">Sponsorship</a></li><li class="footer__item"><a href="https://www.apache.org" target="_blank" rel="noopener noreferrer" class="footer__link-item">Foundation</a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://pinot.apache.org/" target="_blank" rel="noopener noreferrer" class="footerLogoLink_94kH"><img src="/img/logo.svg" alt="Apache Pinot™" class="themedImage_TMUO themedImage--light_4Vu1 footer__logo"><img src="/img/logo.svg" alt="Apache Pinot™" class="themedImage_TMUO themedImage--dark_uzRr footer__logo"></a></div><div class="footerCopyright_-piB">Copyright © 2024 The Apache Software Foundation.<br>Apache Pinot, Pinot, Apache, the Apache feather logo, and the Apache Pinot project logo are registered trademarks of The Apache Software Foundation.<br><br>This page has references to third party software - Presto, PrestoDB, ThirdEye, Trino, TrinoDB, that are not part of the Apache Software Foundation and are not covered under the Apache License.</div></div></div></footer></div>
-<script src="/assets/js/runtime~main.fa80698b.js"></script>
-<script src="/assets/js/main.271ac9bf.js"></script>
-</body>
-</html>
\ No newline at end of file
diff --git a/README.md b/README.md
index 61b7620..94aeb33 100644
--- a/README.md
+++ b/README.md
@@ -12,9 +12,9 @@
 
 Please don't submit PR against this branch.
 
-All development should go under the [`dev`](https://github.com/apache/incubator-pinot-site/tree/dev) branch.
+All development should go under the [`new-dev-site`](https://github.com/apache/pinot-site/tree/new-dev-site) branch.
 
-This [`asf-site`](https://github.com/apache/incubator-pinot-site/tree/asf-site) branch will be automatically updated once a new commit pushed to the [`dev`](https://github.com/apache/incubator-pinot-site/tree/dev) branch.
+The static website is hosted from the [`new-static-prod`](https://github.com/apache/pinot-site/tree/new-static-prod) branch, which will be automatically updated once a new commit pushed to the [`new-dev-site`](https://github.com/apache/pinot-site/tree/new-dev-site) branch.
 
 
 Maintainer
diff --git a/assets/css/styles.d071271f.css b/assets/css/styles.d071271f.css
deleted file mode 100644
index 0e6a793..0000000
--- a/assets/css/styles.d071271f.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.admonition-icon,.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.button,.clean-btn,.close,.menu__link,.navbar__link{cursor:pointer}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.tabs__item,hr,img{box-sizing:initial}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500);--ifm-link-color:var(--ifm-color-primary);--ifm-contents-border-color:var(--ifm-color-emphasis-75)}body,html{-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-text-size-adjust:100%}input[type=email],input[type=text],table.comparison tr td.bar:hover,table.comparison tr td.result{background:var(--ifm-panel-background)}header,section{margin-bottom:calc(var(--ifm-leading)*2)}.admonition,.section-list>.section>h3,.section-list>.section>h4,.section-list>.section>h5,.section-list>.section>h6{margin-bottom:1em}.markdown svg,.row .col,img{max-width:100%}.markdown table,table{border-collapse:collapse}.DocSearch-Hit-content-wrapper,.navbar__title,.table-of-contents ul.contents li,.text--truncate{text-overflow:ellipsis;white-space:nowrap}.react-toggle,html{-webkit-tap-highlight-color:transparent}.container svg [stroke="#000000"],.footer svg [stroke="#000000"],.integrations g.item circle,.markdown svg [stroke="#000000"],.navbar__brand svg [stroke="#000000"],.sidebar__logo svg [stroke="#000000"],html[data-theme=dark] .container svg [stroke="#000000"],html[data-theme=dark] .footer svg [stroke="#000000"],html[data-theme=dark] .markdown svg [stroke="#000000"],html[data-theme=dark] .navbar__brand svg [stroke="#000000"],html[data-theme=dark] .sidebar__logo svg [stroke="#000000"]{stroke:var(--ifm-heading-color)}:root{--ra-admonition-background-color:var(--ifm-alert-background-color);--ra-admonition-border-width:var(--ifm-alert-border-width);--ra-admonition-border-color:var(--ifm-alert-border-color);--ra-admonition-border-radius:var(--ifm-alert-border-radius);--ra-admonition-color:var(--ifm-alert-color);--ra-admonition-padding-vertical:var(--ifm-alert-padding-vertical);--ra-admonition-padding-horizontal:var(--ifm-alert-padding-horizontal);--ra-color-note:var(--ifm-color-secondary);--ra-color-important:var(--ifm-color-info);--ra-color-tip:var(--ifm-color-success);--ra-color-caution:var(--ifm-color-warning);--ra-color-warning:var(--ifm-color-danger);--ra-color-text-dark:var(--ifm-color-gray-900)}.admonition{--ra-admonition-icon-color:var(--ra-admonition-color)}.admonition:not(.alert){--ra-admonition-background-color:var(--ifm-color-primary);background-color:var(--ra-admonition-background-color);border:var(--ra-admonition-border-width) solid var(--ra-admonition-border-color);border-radius:var(--ra-admonition-border-radius);box-sizing:border-box;color:var(--ra-admonition-color);padding:var(--ra-admonition-padding-vertical) var(--ra-admonition-padding-horizontal)}.container,.row .col{padding:0 var(--ifm-spacing-horizontal);width:100%}.admonition h5{margin-bottom:8px;margin-top:0;text-transform:uppercase}.admonition-icon{display:inline-block;margin-right:.2em}.admonition-icon svg{stroke-width:0;fill:var(--ra-admonition-icon-color);stroke:var(--ra-admonition-icon-color);display:inline-block;height:22px;width:22px}.admonition-content>:last-child,blockquote>:last-child{margin-bottom:0}.admonition-note{--ra-admonition-color:var(--ra-color-text-dark)}:root{--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-color-primary:#3578e5;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-secondary:#ebedf0;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-success:#00a400;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-info:#54c7ec;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-warning:#ffba00;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-danger:#fa383e;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:5;--ifm-z-index-fixed:7;--ifm-z-index-overlay:9;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:rgba(0,0,0,.05);--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.3rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-color-emphasis-100);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:inherit;--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:var(--ifm-color-emphasis-100);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-color:#6a737d;--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-padding-horizontal:1rem;--ifm-blockquote-padding-vertical:1rem;--ifm-hr-border-color:var(--ifm-color-emphasis-500);--ifm-hr-border-width:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:#888;--ifm-scrollbar-thumb-hover-background-color:#555;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:var(--ifm-global-border-width);--ifm-alert-color:var(--ifm-font-color-base-inverse);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size-sm:2rem;--ifm-avatar-photo-size-md:3rem;--ifm-avatar-photo-size-lg:4rem;--ifm-avatar-photo-size-xl:6rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.0625rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:1rem;--ifm-breadcrumb-padding-vertical:0.5rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 256 256"><g><g><polygon points="79.093,0 48.907,30.187 146.72,128 48.907,225.813 79.093,256 207.093,128"/></g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g><g></g></svg>');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-margin:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:1rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 24 24"><path fill="rgba(0,0,0,0.5)" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path></svg>');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,<svg fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="16px" width="16px"><path d="M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z" /></svg>');--ifm-navbar-sidebar-width:80vw;--ifm-pagination-border-radius:calc(var(--ifm-global-radius)*var(--ifm-pagination-size-multiplier));--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.0625rem;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-size-multiplier:1;--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.0625rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-tabs-spacing:0.0625rem}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}.navbar--dark,.navbar--primary{--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5)}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}.container{margin:0 auto;max-width:var(--ifm-container-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.container--fluid{max-width:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.markdown>:first-child,.tabItem_vU9c{margin-top:0!important}.row .col{--ifm-col-width:100%;flex:1 0;margin-left:0}.row .col.col--1,.row .col.col--2,.row .col.col--3,.row .col[class*=col--]{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--1{--ifm-col-width:8.33333%}.row .col.col--offset-1{margin-left:8.33333%}.row .col.col--2{--ifm-col-width:16.66667%}.row .col.col--offset-2{margin-left:16.66667%}.row .col.col--3{--ifm-col-width:25%}.row .col.col--offset-3{margin-left:25%}.row .col.col--4{--ifm-col-width:33.33333%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-4{margin-left:33.33333%}.row .col.col--5{--ifm-col-width:41.66667%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--6,.row .col.col--7{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-5{margin-left:41.66667%}.row .col.col--6{--ifm-col-width:50%}.row .col.col--offset-6{margin-left:50%}.row .col.col--7{--ifm-col-width:58.33333%}.row .col.col--offset-7{margin-left:58.33333%}.row .col.col--8{--ifm-col-width:66.66667%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-8{margin-left:66.66667%}.row .col.col--9{--ifm-col-width:75%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--10,.row .col.col--11{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-9{margin-left:75%}.row .col.col--10{--ifm-col-width:83.33333%}.row .col.col--offset-10{margin-left:83.33333%}.row .col.col--11{--ifm-col-width:91.66667%}.row .col.col--offset-11{margin-left:91.66667%}.row .col.col--12{--ifm-col-width:100%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-12{margin-left:100%}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin-horiz--none,.margin-right--none{margin-right:0!important}.container--flush,.row--no-gutters>.col,table.comparison th{padding-left:0;padding-right:0}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit;color:var(--ifm-link-color)}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}.hero h1,header h1{font-size:2.5rem}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size);font-family:var(--ifm-heading-font-family)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{border-style:none}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1;--ifm-h1-h2-vertical-rhythm-top:1;--ifm-h1-h2-vertical-rhythm-bottom:var(--ifm-h1-h2-vertical-rhythm-top);--ifm-h3-vertical-rhythm-top:1.25;--ifm-h3-vertical-rhythm-bottom:calc(var(--ifm-h3-vertical-rhythm-top)/2);--ifm-h4-vertical-rhythm-top:1.25;--ifm-h4-vertical-rhythm-bottom:calc(var(--ifm-h4-vertical-rhythm-top)/2);--ifm-h5-vertical-rhythm-top:1.25;--ifm-h5-vertical-rhythm-bottom:calc(var(--ifm-h5-vertical-rhythm-top)/2);--ifm-h6-vertical-rhythm-top:1.25;--ifm-h6-vertical-rhythm-bottom:calc(var(--ifm-h6-vertical-rhythm-top)/2)}.markdown:after,.markdown:before,hr:after,hr:before{content:"";display:table}.markdown:after,hr:after{clear:both}.markdown>h1{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h1-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.codeBlockContainer_J\+bg,.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{margin-bottom:var(--ifm-spacing-vertical);width:100%;display:table}.avatar__photo,.card,.text--truncate,hr{overflow:hidden}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration);transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.breadcrumbs__link:hover,.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:6px solid var(--ifm-color-emphasis-300);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}hr{border-color:var(--ifm-hr-border-color);border-style:solid;border-width:var(--ifm-hr-border-width);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.installationChecks_XhS6>div:last-child,.markdown table>thead>tr>th:not([align]),.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.indexAnnouncement_jMfS span,.jump-to span.badge.badge--category,.menu .menu__list-title,.table-of-contents .title,.text--upcase,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;padding:0}.alert,.alert a{color:var(--ifm-alert-color)}.alert{background-color:var(--ifm-alert-background-color);border-color:var(--ifm-alert-border-color);border-radius:var(--ifm-alert-border-radius);border-width:var(--ifm-alert-border-width);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary);--ifm-alert-border-color:var(--ifm-color-primary)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary);--ifm-alert-border-color:var(--ifm-color-secondary);--ifm-alert-color:var(--ifm-color-gray-900)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success);--ifm-alert-border-color:var(--ifm-color-success)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info);--ifm-alert-border-color:var(--ifm-color-info)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning);--ifm-alert-border-color:var(--ifm-color-warning)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger);--ifm-alert-border-color:var(--ifm-color-danger)}.alert a{text-decoration:underline}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0}.avatar,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.avatar__photo-link{display:block}.avatar__photo{border-radius:50%;height:var(--ifm-avatar-photo-size-md);width:var(--ifm-avatar-photo-size-md)}.avatar__photo--sm{height:var(--ifm-avatar-photo-size-sm);width:var(--ifm-avatar-photo-size-sm)}.avatar__photo--lg{height:var(--ifm-avatar-photo-size-lg);width:var(--ifm-avatar-photo-size-lg)}.avatar__photo--xl{height:var(--ifm-avatar-photo-size-xl);width:var(--ifm-avatar-photo-size-xl)}.avatar__photo+.avatar__intro{margin-left:var(--ifm-avatar-intro-margin)}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.menu__link--sublist:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.avatar--vertical .avatar__intro{margin-left:0}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:first-child){margin-left:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child){margin-right:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;-webkit-filter:var(--ifm-breadcrumb-separator-filter);filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 .5rem;opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__item--active .breadcrumbs__link,.breadcrumbs__item:not(.breadcrumbs__item--active):hover .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);color:var(--ifm-font-color-base);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border-color:var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);border-style:solid;border-width:var(--ifm-button-border-width);font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg,.input--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}.button.button--secondary.button--outline:not(.button--active):not(:hover),.sidebarItemLink_zyXk{color:var(--ifm-font-color-base)}.button--primary{--ifm-button-border-color:var(--ifm-color-primary)}.button--primary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-primary)}.button--primary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-border-color:var(--ifm-color-primary-darker);--ifm-button-background-color:var(--ifm-color-primary-darker);background-color:var(
-        --ifm-color-primary-darker
-      );border-color:var(
-        --ifm-color-primary-darker
-      )}.button--secondary{--ifm-button-border-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-border-color:var(--ifm-color-secondary-darker);--ifm-button-background-color:var(--ifm-color-secondary-darker);background-color:var(
-        --ifm-color-secondary-darker
-      );border-color:var(
-        --ifm-color-secondary-darker
-      )}.button--success{--ifm-button-border-color:var(--ifm-color-success)}.button--success:not(.button--outline){--ifm-button-background-color:var(--ifm-color-success)}.button--success:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-border-color:var(--ifm-color-success-darker);--ifm-button-background-color:var(--ifm-color-success-darker);background-color:var(
-        --ifm-color-success-darker
-      );border-color:var(
-        --ifm-color-success-darker
-      )}.button--info{--ifm-button-border-color:var(--ifm-color-info)}.button--info:not(.button--outline){--ifm-button-background-color:var(--ifm-color-info)}.button--info:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-border-color:var(--ifm-color-info-darker);--ifm-button-background-color:var(--ifm-color-info-darker);background-color:var(
-        --ifm-color-info-darker
-      );border-color:var(
-        --ifm-color-info-darker
-      )}.button--warning{--ifm-button-border-color:var(--ifm-color-warning)}.button--warning:not(.button--outline){--ifm-button-background-color:var(--ifm-color-warning)}.button--warning:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-border-color:var(--ifm-color-warning-darker);--ifm-button-background-color:var(--ifm-color-warning-darker);background-color:var(
-        --ifm-color-warning-darker
-      );border-color:var(
-        --ifm-color-warning-darker
-      )}.button--danger{--ifm-button-border-color:var(--ifm-color-danger)}.button--danger:not(.button--outline){--ifm-button-background-color:var(--ifm-color-danger)}.button--danger:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-border-color:var(--ifm-color-danger-darker);--ifm-button-background-color:var(--ifm-color-danger-darker);background-color:var(
-        --ifm-color-danger-darker
-      );border-color:var(
-        --ifm-color-danger-darker
-      )}.button-group{display:inline-flex}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:var(--ifm-button-group-margin)}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group>.button--active{z-index:1}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card--full-height{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child),.section-list>.section:last-child{padding-bottom:0}.alert>:last-child,.alert>ul:last-child>li:last-child,.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child,.table-of-contents ul.contents>li>ul>li:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style-type:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color)}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{background:none;border:none;color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__menu,.menu__link,.menu__link:hover{transition-timing-function:var(--ifm-transition-timing-default)}.dropdown__menu,.menu__link,.menu__link:hover,input[type=checkbox]{transition-duration:var(--ifm-transition-fast)}.close:hover{opacity:.7}.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;-webkit-transform:translateY(0);transform:translateY(0);visibility:visible}.awssld__next,.dropdown--right .dropdown__menu{right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);list-style:none;max-height:calc(100vh - var(--ifm-navbar-height));min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px);transition-property:opacity,transform,visibility,-webkit-transform;visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__list-item--collapsed .menu__list,.navbar__title{overflow:hidden}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer__items,.menu__list{padding-left:0;list-style-type:none}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:10rem}.docItemContainer_oiyr header+*,.footer__item,.menu>ul.menu__list>li.menu__list-item:first-child div.title,.pills__item+.pills__item,li+li{margin-top:0}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.footer__items{margin-bottom:0}[type=checkbox]{padding:0}.hero{background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color)}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.blogPostTitle_d4p0,.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu{font-weight:var(--ifm-font-weight-semibold);overflow-x:hidden}.menu__list{margin:0}.menu__list .menu__list{margin-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item{margin-top:.25rem}.menu__list-item--collapsed .menu__link--sublist:after{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.menu__link{border-radius:.25rem;display:flex;justify-content:space-between;line-height:1.25;padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal);position:relative}.menu__link,.menu__link:hover{color:var(--ifm-menu-color);transition-property:color,background}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-timing-function:ease-in-out;top:0;left:0}.menu__link:hover{background:var(--ifm-menu-color-background-hover);text-decoration:none}.menu__link--sublist:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;content:" ";-webkit-filter:var(--ifm-menu-link-sublist-icon-filter);filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;min-width:1.25rem;-webkit-transform:rotate(180deg);transform:rotate(180deg);transition:-webkit-transform var(--ifm-transition-fast) linear;transition:transform var(--ifm-transition-fast) linear;transition:transform var(--ifm-transition-fast) linear,-webkit-transform var(--ifm-transition-fast) linear}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background:var(--ifm-menu-color-background-active)}.menu--responsive .menu__button{bottom:2rem;display:none;position:fixed;right:1rem;z-index:var(--ifm-z-index-fixed)}.menu--show{background:var(--ifm-background-surface-color);bottom:0;left:0;overscroll-behavior:contain;padding:1rem;position:fixed;right:0;top:0;z-index:var(--ifm-z-index-overlay)}.menu--show .menu__list{display:inherit;opacity:1;transition:opacity var(--ifm-transition-fast) linear}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal);width:100%}.navbar--fixed-top{position:-webkit-sticky;position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{align-items:stretch;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;font-weight:700;height:2rem;margin-right:1rem;min-width:0}.navbar__brand:hover{color:inherit;text-decoration:none}.navbar__title{flex:1 1 auto}.table-responsive,.tabs{overflow-x:auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{height:100%;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.markdown table>tbody>tr>td:last-child,.markdown table>thead>tr>th:last-child,.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.codeBlock_rtdJ,.navbar__item.dropdown{padding:0}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link{font-weight:var(--ifm-font-weight-semibold);padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal);position:relative;text-decoration:none}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-color:var(--ifm-color-white);--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-toggle-color:var(--ifm-color-white)}.navbar--dark .navbar__toggle{color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::-webkit-input-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);overflow:auto;position:fixed;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform,-webkit-transform;visibility:hidden;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.awssld--first .awssld__prev,.awssld--last .awssld__next,.awssld__box{visibility:hidden}.navbar-sidebar--show .navbar-sidebar{-webkit-transform:translateZ(0);transform:translateZ(0)}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);position:fixed;right:0;transition-duration:.1s;transition-property:opacity,visibility;visibility:hidden}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.pagination__item,.pagination__link{display:inline-block}.navbar-sidebar__items{padding:.5rem}.pagination{font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item:not(:first-child){margin-left:var(--ifm-pagination-page-spacing)}.pagination__item:not(:last-child){margin-right:var(--ifm-pagination-page-spacing)}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.hero .hero--subtitle a:hover,.link:not(.badge){color:var(--ifm-link-color)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{display:flex}.pagination-nav__item{display:flex;flex:1 50%;max-width:50%}.installationChecks_XhS6>div:first-child,.pagination-nav__item--next{text-align:right}.empty,.hero,table.comparison tr td{text-align:center}.pagination-nav__item+.pagination-nav__item{margin-left:var(--ifm-spacing-horizontal)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);flex-grow:1;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.hero .hero--subtitle a,.link:hover,table.comparison [title]{text-decoration:underline}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;list-style-type:none;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{background:var(--ifm-pills-color-background-active);color:var(--ifm-pills-color-active)}.pills__item:not(.pills__item--active):hover{background-color:var(--ifm-pills-color-background-active)}.react-select-container .react-select__option:hover,table.comparison tr td.result.passed.vector,ul.tabs.rounded li.tab-item.tab-item--active{background:var(--ifm-color-primary);color:var(--ifm-background-color)}.pills__item:not(:first-child){margin-left:var(--ifm-pills-spacing)}.pills__item:not(:last-child){margin-right:var(--ifm-pills-spacing)}.pills--block{display:flex;justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;padding-left:0}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;margin:0;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container,.DocSearch-Container *,.badge,.container--narrow,input[type=email],input[type=text]{box-sizing:border-box}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#18191a;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-background-color:#191927;--ifm-background-color-rgb:25,25,39;--ifm-color-content-secondary:var(--ifm-color-emphasis-400);--ifm-color-emphasis-25:var(--ifm-color-gray-975);--ifm-color-emphasis-40:var(--ifm-color-gray-960);--ifm-color-emphasis-50:var(--ifm-color-gray-950);--ifm-color-emphasis-75:var(--ifm-color-gray-925);--ifm-color-gray-25:rgba(224,235,247,0.975);--ifm-color-gray-40:rgba(224,235,247,0.96);--ifm-color-gray-50:rgba(224,235,247,0.95);--ifm-color-gray-75:rgba(224,235,247,0.925);--ifm-color-gray-100:rgba(224,235,247,0.9);--ifm-color-gray-150:rgba(224,235,247,0.85);--ifm-color-gray-200:rgba(224,235,247,0.8);--ifm-color-gray-300:rgba(224,235,247,0.7);--ifm-color-gray-400:rgba(224,235,247,0.6);--ifm-color-gray-500:rgba(224,235,247,0.5);--ifm-color-gray-600:rgba(224,235,247,0.4);--ifm-color-gray-700:rgba(224,235,247,0.3);--ifm-color-gray-800:rgba(224,235,247,0.2);--ifm-color-gray-900:rgba(224,235,247,0.1);--ifm-color-gray-925:rgba(224,235,247,0.075);--ifm-color-gray-950:rgba(224,235,247,0.05);--ifm-color-gray-960:rgba(224,235,247,0.04);--ifm-color-gray-975:rgba(224,235,247,0.025);--ifm-color-gray-1000:#e0ebf7;--ifm-global-shadow-md:0 3px 8px 0px rgba(0,0,0,.2);--ifm-heading-color:var(--ifm-color-gray-1000);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,<svg fill="rgb(224, 235, 247)" alt="Search" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" height="16px" width="16px"><path d="M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z" /></svg>');--ifm-panel-background:var(--ifm-color-emphasis-50);--ifm-panel-background-rgb:37,37,50;--ifm-panel-background-solid:#252532;--ifm-panel-box-shadow:none;--ifm-panel-box-shadow-active:0 0px 10px 0px rgba(var(--ifm-color-primary-rgb),0.5);--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}:root{--ifm-alert-color:var(--ifm-heading-color);--ifm-background-color:#fff;--ifm-background-color-rgb:255,255,255;--ifm-background-surface-color:var(--ifm-panel-background);--ifm-badge-border-radius:0.25em;--ifm-blockquote-color:var(--ifm-color-primary-lighter);--ifm-code-background:var(--ifm-color-emphasis-50);--ifm-code-font-size:85%;--ifm-color-black:#001b3d;--ifm-color-blue:#438fff;--ifm-color-blue-rgb:67,143,255;--ifm-color-content:var(--ifm-color-emphasis-800);--ifm-color-content-secondary:var(--ifm-color-emphasis-400);--ifm-color-danger:#ff1178;--ifm-color-danger-rgb:255,17,120;--ifm-color-gray-25:rgba(0,27,61,.025);--ifm-color-gray-40:rgba(0,27,61,.04);--ifm-color-gray-50:rgba(0,27,61,.05);--ifm-color-gray-75:rgba(0,27,61,.075);--ifm-color-gray-100:rgba(0,27,61,.1);--ifm-color-gray-150:rgba(0,27,61,.15);--ifm-color-gray-200:rgba(0,27,61,.2);--ifm-color-gray-300:rgba(0,27,61,.3);--ifm-color-gray-400:rgba(0,27,61,.4);--ifm-color-gray-500:rgba(0,27,61,.5);--ifm-color-gray-600:rgba(0,27,61,.6);--ifm-color-gray-700:rgba(0,27,61,.7);--ifm-color-gray-800:rgba(0,27,61,.8);--ifm-color-gray-900:rgba(0,27,61,.9);--ifm-color-emphasis-25:var(--ifm-color-gray-25);--ifm-color-emphasis-40:var(--ifm-color-gray-40);--ifm-color-emphasis-50:var(--ifm-color-gray-50);--ifm-color-emphasis-75:var(--ifm-color-gray-75);--ifm-color-pink:#f44af5;--ifm-color-pink-rgb:244,74,245;--ifm-color-primary:#5170a4;--ifm-color-primary-rgb:40,217,242;--ifm-color-primary-dark:#0fbce1;--ifm-color-primary-darker:#0395c7;--ifm-color-primary-darkest:#006ea6;--ifm-color-primary-light:#51ebfb;--ifm-color-primary-lighter:#6af0fd;--ifm-color-primary-lightest:#83f5ff;--ifm-color-secondary:var(--ifm-color-emphasis-100);--ifm-color-success:#00ff7f;--ifm-color-success-rgb:0,255,127;--ifm-color-warning-rgb:255,186,0;--ifm-contents-padding-left:var(--ifm-spacing-horizontal);--ifm-font-family-base:-apple-system,BlinkMacSystemFont,Roboto,sans-serif;--ifm-font-family-monospace:"Source Code Pro",Menlo,monospace;--ifm-font-size-base:16px;--ifm-footer-background-color:var(--ifm-background-color);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*4);--ifm-global-shadow-md:0 3px 8px 0px var(--ifm-hr-border-color);--ifm-h2-font-size:2em;--ifm-heading-color:#001b3d;--ifm-heading-font-family:Ubuntu,var(--ifm-font-family-base);--ifm-heading-margin-bottom:calc(var(--ifm-spacing-vertical)*3);--ifm-hero-background-color:var(--ifm-background-color);--ifm-hero-text-color:var(--ifm-color-content);--ifm-highlight-gradient:linear-gradient(150deg,var(--ifm-color-primary) 5%,var(--ifm-color-blue) 40%,var(--ifm-color-pink) 90%);--ifm-highlight-gradient-20:linear-gradient(150deg,var(--ifm-color-primary) 5%,var(--ifm-color-blue) 95%);--ifm-hr-border-color:var(--ifm-contents-border-color);--ifm-leading:calc(var(--ifm-leading-desktop)*1em);--ifm-line-height-base:1.7;--ifm-link-color:var(--ifm-color-primary-dark);--ifm-menu-color:var(--ifm-color-emphasis-600);--ifm-navbar-background-color:var(--ifm-background-color);--ifm-navbar-link-color:var(--ifm-heading-color);--ifm-panel-background:var(--ifm-background-color);--ifm-panel-background-rgb:249,249,250;--ifm-panel-background-solid:#f9f9fa;--ifm-panel-background-active:rgba(var(--ifm-color-primary-rgb),0.2);--ifm-panel-border-color:var(--ifm-hr-border-color);--ifm-panel-border-color-active:var(--ifm-color-primary);--ifm-panel-box-shadow:0 0px 10px 0px var(--ifm-color-emphasis-50);--ifm-panel-box-shadow-active:var(--ifm-panel-box-shadow);--ifm-panel-color:var(--ifm-color-emphasis-800);--ifm-panel-color-active:var(--ifm-link-color);--ifm-pre-line-height:var(--ifm-line-height-base);--ifm-sidebar-background:var(--ifm-background-color);--ifm-sidebar-border-color:var(--ifm-hr-border-color);--ifm-sidebar-width:250px;--ifm-table-stripe-background:var(--ifm-table-background);--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-announcement-bar-height:auto;--collapse-button-bg-color-dark:#2e333a;--doc-sidebar-width:300px}@-webkit-keyframes a{0%,to{background-position:0 0}50%{background-position:100% 100%}}@keyframes a{0%,to{background-position:0 0}50%{background-position:100% 100%}}body,html{font-smoothing:antialiased;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%}.componentsCanvas_HmCr circle,.componentsCanvas_HmCr text,.link{cursor:pointer}.DocSearch-Container a,.panel.panel--link:hover,.sidebarItemLink_zyXk:hover{text-decoration:none}a.text--warning:hover,table.comparison tr td.result.warning{color:var(--ifm-color-warning)}article header h1{font-size:2em}.badge{background-clip:padding-box;border-color:transparent}.badge.badge--blue{--ifm-badge-background-color:rgba(var(--ifm-color-blue-rgb),0.25);--ifm-badge-color:var(--ifm-color-blue)}.badge.badge--danger{--ifm-badge-background-color:rgba(var(--ifm-color-danger-rgb),0.2);--ifm-badge-color:var(--ifm-color-danger)}.badge.badge--highlight{-webkit-animation:5s ease-in infinite a;animation:5s ease-in infinite a;background-image:var(--ifm-highlight-gradient);background-size:150% 150%;color:var(--ifm-background-color)}.button.button--highlight,.input--highlight-wrapper{-webkit-animation:5s ease-in infinite a;background-image:var(--ifm-highlight-gradient);background-size:150% 150%}.badge.badge--pink{--ifm-badge-background-color:rgba(var(--ifm-color-pink-rgb),0.2);--ifm-badge-color:var(--ifm-color-pink)}.badge.badge--primary{--ifm-badge-background-color:rgba(var(--ifm-color-primary-rgb),0.2);--ifm-badge-color:var(--ifm-color-primary)}.badge.badge--rounded{border-radius:1em}.badge.badge--secondary{color:var(--ifm-color-emphasis-800)}.badge.badge--success{--ifm-badge-background-color:rgba(var(--ifm-color-success-rgb),0.5);--ifm-badge-color:var(--ifm-color-success)}.badge.badge--warning{--ifm-badge-background-color:rgba(var(--ifm-color-warning-rgb),0.2);--ifm-badge-color:var(--ifm-color-warning)}.badge a,.table-of-contents ul.contents code{color:inherit}a.badge:hover{color:var(--ifm-badge-color)}blockquote{border-left:4px solid var(--ifm-hr-border-color);color:var(--ifm-color-emphasis-400);padding:0 0 0 1.5rem}.button.button--primary{--ifm-button-color:var(--ifm-background-color)}.button.button--highlight{animation:5s ease-in infinite a;color:var(--ifm-background-color)}ul.checks{list-style:none}ul.checks li>i.feather:first-child{margin-left:-1.8em;margin-right:.5em}table.comparison{width:100%}table.comparison [title]{text-decoration-style:dotted}table.comparison td,table.comparison th,table.comparison tr{border:0;white-space:nowrap}.sidebarItemLinkActive_wcJs,table.comparison tr td.bar.vector,table.comparison tr td.result.passed,table.comparison tr th.vector,ul.tabs.mini li.tab-item.tab-item--active{color:var(--ifm-color-primary)}.empty,ul.tabs li.tab-item{color:var(--ifm-color-emphasis-400)}table.comparison tr td{border-left:10px solid var(--ifm-background-color);min-width:90px}table.comparison tr td:first-child{font-weight:700;padding-left:0;text-align:left;white-space:nowrap;width:25%}table.comparison tr td.description{font-weight:400;min-width:250px;padding-top:0;vertical-align:top;white-space:normal}table.comparison tr td.description .label{color:var(--ifm-heading-color);font-weight:700}table.comparison tr td.description .text{color:var(--ifm-color-emphasis-600)}table.comparison tr td.description .links{font-size:.9em;margin-top:var(--ifm-spacing-vertical)}.markdown table>tbody>tr:hover,table.comparison tr:hover td.result,table.comparison tr:hover td.row-label{background:var(--ifm-color-emphasis-25)}.table-of-contents ul.contents li a.text--danger,table.comparison tr td.result.failed{color:var(--ifm-color-danger)}table.comparison tr td.result.lost{background:var(--ifm-color-emphasis-1000);color:var(--ifm-background-color)}table.comparison tr td.result.not-applicable{background:var(--ifm-color-emphasis-1000);color:rgba(var(--ifm-background-color-rgb),.5)}table.comparison tr:hover td.result.passed.vector{background:rgba(var(--ifm-color-primary-rgb),.8)}table.comparison tr td.bar{padding:0;vertical-align:bottom}table.comparison tr td.bar .place{font-size:.9em}.sidebar .menu,table.comparison tr td.bar .measurement{font-weight:700}table.comparison tr td.bar .bar{background:var(--ifm-color-emphasis-1000);margin:0 auto}.indexAnnouncement_jMfS:hover span,table.comparison tr td.bar.vector .bar{background:var(--ifm-color-primary)}.container--narrow{max-width:760px}.container--bleed>.bleed,.container--bleed>section>.code-header,.container--bleed>section>p>img,.container--bleed>section>pre{left:calc((((var(--ifm-container-width) - 760px)/2) + var(--ifm-spacing-vertical))*-1);max-width:none;position:relative;width:var(--ifm-container-width)}.domain-bg--hover:not(:hover),.domain-bg.domain-bg--networking,.domain-bg.domain-bg--sinks,.domain-bg.domain-bg--sources{background-image:none!important}.empty{padding:calc(var(--ifm-spacing-vertical)*3)}.empty .icon{font-size:4rem;font-weight:700;line-height:1}.feather{font-size:inherit!important}.filters{color:var(--ifm-menu-color);margin-bottom:var(--ifm-spacing-vertical)}.filters .search{margin-bottom:calc(var(--ifm-spacing-vertical)/2)}.filters .search--result-count{float:right;font-size:.9em;line-height:1;margin-bottom:-1em;margin-right:var(--ifm-spacing-horizontal);position:relative;top:.75em}.hero .hero--buttons,.hero .hero--subtitle,.panel,.section-list.section-list--compact>.section:last-child>h4{margin-bottom:var(--ifm-spacing-vertical)}.filters .search input{width:100%}.filters .filter{display:flex;font-size:.9em;overflow:auto;white-space:nowrap;width:100%}.filters .filter--label{border-right:1px solid var(--ifm-hr-border-color);flex:0 0 150px;min-width:120px;padding-right:1.2em;text-align:right}.filters .filter--label a{border-bottom:1px solid var(--ifm-hr-border-color);color:inherit}.filters .filter--choices{white-space:nowrap}.filters .filter--choices label{margin-left:.75em;margin-top:calc(var(--ifm-spacing-vertical)/4);white-space:nowrap}.filters .filter--choices label input{margin-right:.5em}.footer{--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);border-top:1px solid var(--ifm-hr-border-color)}h2>.hash-link,h3>.hash-link,h4>.hash-link,h5>.hash-link,h6>.hash-link{margin-right:.25em;padding-left:.25em}header{border-bottom:2px solid var(--ifm-hr-border-color)}header .badges{float:right;font-family:monospace;margin-top:.5rem}header .badges .badge{margin-left:2px}header h1{font-family:Ubuntu,var(--ifm-font-family-base);margin-bottom:.5rem}.hero{align-items:center;display:block;min-height:200px;padding:3em 0;position:relative}.hero .hero--subtitle{font-size:1.1rem;margin-top:.3rem}.hero .hero--subtitle a{color:var(--ifm-color-content)}.hero .hero--subsubtitle{color:var(--ifm-hero-text-color);font-size:.9rem;margin-top:.3rem}.hero .hero--buttons{--ifm-button-padding-vertical:0.5rem;--ifm-button-padding-horizontal:4rem}.hero .hero--buttons .button{border-radius:2rem;margin-right:1rem;min-width:240px}.hero .hero--buttons .button:last-child{margin-right:0}.hero.hero--full-height{display:flex;flex-direction:column;justify-content:center;min-height:calc(100vh - var(--ifm-navbar-height))}input[type=checkbox]{-webkit-appearance:none;-o-appearance:none;appearance:none;background:var(--ifm-background-color);background-clip:padding-box;border:1px solid var(--ifm-color-emphasis-200);border-radius:4px;cursor:pointer;height:1rem;margin-bottom:.5rem;outline:0;vertical-align:middle;width:1rem}input[type=checkbox]:checked{background-color:var(--ifm-color-primary);border:1px solid var(--ifm-color-primary)}input[type=email],input[type=text]{border:1px solid var(--ifm-panel-border-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-panel-box-shadow);color:var(--ifm-font-base-color);display:inline-block;font-size:calc(.8rem*var(--ifm-button-size-multiplier));line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) .8em;transition:var(--ifm-transition-slow) ease;vertical-align:middle}input[type=email]:focus,input[type=text]:focus{background:var(--ifm-panel-background-active);border-color:var(--ifm-color-primary);box-shadow:var(--ifm-panel-box-shadow-active)}.input--highlight-wrapper{animation:5s ease-in infinite a;border:0;font-weight:600;padding:1px}.label.label--warning{border-bottom:1px solid var(--ifm-color-warning);color:var(--ifm-color-warning);font-size:.8rem;padding-bottom:5px}div.list--warnings>ul,ul.list--warnings{list-style:none;margin-left:1em;padding-left:1em}div.list--warnings>ul>li:before,ul.list--warnings>li:before{content:"⚠";display:block;float:left;font-size:1.25em;font-weight:700;margin-left:-1.6em;margin-top:-.2em}div.list--warnings>ul>li,ul.list--warnings>li{margin:0 0 1em;padding:0}.menu>ul.menu__list li{margin-bottom:0;margin-top:0}.menu>ul.menu__list li>a{padding-left:0;padding-right:0}#docusaurus-base-url-issue-banner-container,.menu .menu__list-item-hidden,.navbar .search-icon-hidden{display:none}.menu>ul.menu__list>li.menu__list-item div.title{color:var(--ifm-color-emphasis-300);cursor:text;display:flex;font-size:.9rem;font-weight:700;justify-content:space-between;line-height:calc(var(--ifm-spacing-vertical)*1.25);margin-top:calc(var(--ifm-spacing-vertical)*1.5);padding:var(--ifm-menu-link-padding-vertical) 0;text-transform:uppercase}.menu>ul.menu__list ul.menu__list{border-left:1px solid var(--ifm-hr-border-color);margin-left:0;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu>ul.menu__list ul.menu__list .menu__link{border-radius:0;font-size:.85rem;margin-left:calc(var(--ifm-menu-link-padding-horizontal)*-1);padding-left:var(--ifm-menu-link-padding-horizontal)}.menu>ul.menu__list>li>ul.menu__list{border-left:0;padding-left:0}.menu .menu__list-title{color:var(--ifm-color-emphasis-300);font-size:.9em}.panel,.react-select-container .react-select__single-value{color:var(--ifm-font-base-color)}.menu .menu__link,.menu .menu__link.menu__link--active:not(.menu__link--sublist),.menu .menu__link:hover{background:none;line-height:calc(var(--ifm-spacing-vertical)*1.25)}.menu .menu__link small{font-weight:400;opacity:.75}.menu .menu__link.menu__link--sublist:after{background-image:url('data:image/svg+xml;utf8,<svg alt="Arrow" xmlns="http://www.w3.org/2000/svg" width="14px" height="14px" viewBox="-6 -6 38 38"><path fill="rgba(0,0,0,0.3)" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path></svg>');-webkit-transform:rotate(180deg);transform:rotate(180deg);transition:var(--ifm-transition-fast) ease}.menu .menu__link.menu__link--sublist.menu__link--active:after,.menu .menu__link.menu__link--sublist:hover:after{background-image:url('data:image/svg+xml;utf8,<svg alt="Arrow" xmlns="http://www.w3.org/2000/svg" width="14px" height="14px" viewBox="-6 -6 38 38"><path fill="#28d9f2" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path></svg>')}.menu .menu__list-item.menu__list-item--collapsed .menu__link--sublist:after{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.menu .menu__link:hover{color:var(--ifm-menu-color-active)}.menu .menu__link .badges{margin-top:-1px;vertical-align:top}.menu .menu__link .badges .badge{background-clip:padding-box;border:1px solid var(--ifm-color-emphasis-50);border-radius:.25em;display:inline-block;font-family:monospace;font-size:.5rem;font-weight:700;height:1rem;line-height:1rem;margin-right:2px;padding:0 .25rem;vertical-align:middle}.pagination-nav .pagination-nav__link,.panel,.section-list.section-list--hover>.section:hover,section.shade{background:var(--ifm-panel-background)}.menu.menu--responsive .menu__button{background:var(--ifm-panel-background-solid);border-color:var(--ifm-color-content-secondary);bottom:1rem;right:1rem}.navbar .navbar__brand{min-width:100px}.navbar .navbar__logo{margin-right:0;max-width:155px}.navbar .navbar__items--right{flex:0 0 40%}.navbar .navbar__items--right .react-toggle{margin-left:var(--ifm-navbar-item-padding-horizontal)}.navbar .navbar__item .badge{border-color:var(--ifm-background-color)!important;border-radius:1em;display:block;float:right;font-size:.6em;line-height:1;margin-left:-.5em;margin-right:-1.5em;margin-top:-.7em;padding:.3em .5em;position:relative;z-index:1}.panel.panel--link:hover,.react-select-container:hover .react-select__control{background:var(--ifm-panel-background-active);border-color:var(--ifm-panel-border-color-active);box-shadow:var(--ifm-panel-box-shadow-active)}.section-list>.section,.section-list>.section .info,section.shade{padding-left:var(--ifm-spacing-horizontal)}.navbar-sidebar__brand .navbar__brand{flex:1 0}.navbar-sidebar__brand .react-toggle{flex:0;text-align:right}.navbar-sidebar__items .menu .menu__link{color:var(--ifm-heading-color);display:block}.navbar-sidebar__items .menu .menu__link .badge{border-color:var(--ifm-background-color);border-radius:1em;font-size:.6em;margin-left:.25em;margin-top:-1em}.pagination-nav .pagination-nav__link{border-color:var(--ifm-panel-border-color);box-shadow:var(--ifm-panel-box-shadow);transition:border .25s}.pagination-nav .pagination-nav__link:hover{background:var(--ifm-panel-background-active);box-shadow:var(--ifm-panel-box-shadow-active);color:var(--ifm-panel-color-active)}.pagination-nav .pagination-nav__link:hover *{color:var(--ifm-panel-color-active)}.panel{border:1px solid var(--ifm-panel-border-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-panel-box-shadow);display:block;padding:calc(var(--ifm-spacing-vertical)*1.5) calc(var(--ifm-spacing-horizontal)*2)}.panel.panel--link{transition:var(--ifm-transition-fast) ease}.panel .panel--icon{font-size:4em;line-height:1;margin:0 0 var(--ifm-spacing-vertical) 0}.panel .panel--title{font-size:1.2em;font-weight:600}.panel .panel--description{font-size:.95em;opacity:.5}.press--color{background:#10e7ff;color:#000;padding:var(--ifm-spacing-vertical) var(--ifm-spacing-horizontal)}.react-select-container .react-select__control{background:var(--ifm-panel-background);border-color:var(--ifm-panel-border-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-panel-box-shadow);box-sizing:border-box;color:var(--ifm-font-base-color)}.react-select-container .react-select__indicator-separator{background-color:var(--ifm-color-emphasis-200)}.section-list,.section-list>.section .info,.table-of-contents ul.contents>li ul{border-left:1px solid var(--ifm-hr-border-color)}.react-select-container .react-select__menu{background:var(--ifm-panel-background-solid);border-radius:var(--ifm-global-radius);color:var(--ifm-color-content)}.react-select-container .react-select__option--is-selected{background:var(--ifm-panel-background-active)}.react-select-container .react-select__option--is-focused{background:var(--ifm-panel-background-active);color:var(--ifm-color-content)}section{border-bottom:1px solid var(--ifm-hr-border-color);padding-bottom:calc(var(--ifm-leading)*2 - var(--ifm-spacing-vertical))}section .sub-title{color:var(--ifm-color-emphasis-600);margin-bottom:var(--ifm-heading-margin-bottom);margin-top:calc(var(--ifm-heading-margin-bottom)*-1)}section.shade{padding-right:var(--ifm-spacing-horizontal)}.table-of-contents .section:last-child,section:last-child{border-bottom:0;margin-bottom:0}.table-of-contents .section,ul.tabs{border-bottom:1px solid var(--ifm-hr-border-color)}header+section.shade{margin-top:calc(var(--ifm-spacing-vertical)*2*-1 - -5px);padding-top:var(--ifm-spacing-vertical)}.section-list{margin-left:.25em}.section-list>.section{border-radius:5px;font-size:.95em;padding-bottom:calc(var(--ifm-spacing-vertical)/1.5)}.section-list>.section>.badges{float:right;margin-top:-.25em;text-align:right}.section-list>.section>.badges .badge{font-size:.7em;margin-left:3px}.section-list>.section>.badges .badge:first-child{margin-left:0}.section-list>.section>h3 .hash-link,.section-list>.section>h4 .hash-link,.section-list>.section>h5 .hash-link,.section-list>.section>h6 .hash-link{margin-left:calc(var(--ifm-spacing-horizontal)*-1.75 - var(--ifm-spacing-horizontal))!important;padding-right:3em}.section-list:not(.section-list--no-bullet)>.section>h3:before,.section-list:not(.section-list--no-bullet)>.section>h4:before,.section-list:not(.section-list--no-bullet)>.section>h5:before,.section-list:not(.section-list--no-bullet)>.section>h6:before,.section-list>.section .info>div:before,.section-list>.section>.section--bullet{content:"• ";display:block;float:left;margin-left:calc(var(--ifm-spacing-horizontal)*-2);text-align:center;width:calc(var(--ifm-spacing-horizontal)*2)}.codeBlockContent_csEI:hover>.copyButton_M3SB,.codeBlockTitle_oQzk:hover+.codeBlockContent_csEI .copyButton_M3SB,.copyButton_M3SB:focus,.footerLogoLink_94kH:hover,.hash-link:focus,.section-list>.section:hover>h3>.hash-link,.section-list>.section:hover>h4>.hash-link,.section-list>.section:hover>h5>.hash-link,.section-list>.section:hover>h6>.hash-link,:hover>.hash-link{opacity:1}.section-list>.section>.sub__title{margin-bottom:.25em;margin-top:-.4em}.section-list>.section .info{color:var(--ifm-color-content-secondary);font-size:.9em;margin-bottom:calc(var(--ifm-spacing-vertical)/2);margin-left:.25em;margin-top:calc(var(--ifm-spacing-horizontal)*-1)}.section-list>.section .info .show-more{color:var(--ifm-color-primary);cursor:pointer}.section-list>.section .info .examples{margin-top:.5em}.section-list.section-list--lg>.section{margin-top:calc(var(--ifm-spacing-vertical)*2)}.section-list.section-list--compact>.section{padding-bottom:calc(var(--ifm-spacing-vertical)/4);padding-top:calc(var(--ifm-spacing-vertical)/4)}.section-list.section-list--compact>.section>h4{font-weight:400;margin:0}.sidebar{border-right:1px solid var(--ifm-sidebar-border-color)}.sidebar .menu .menu__link{border-right:2px solid transparent}.sidebar .menu .menu__link--active{border-radius:0;border-right-color:var(--ifm-color-primary)}.sidebar.sidebar--right .menu__link,.sidebar.sidebar--right .menu__list-title{display:block;padding-right:var(--ifm-spacing-vertical);text-align:right}.container svg [fill="#000000"],.footer svg [fill="#000000"],.installationPlatforms_uLee svg [fill="#10E7FF"],.markdown svg [fill="#000000"],.navbar__brand svg [fill="#000000"],.sidebar__logo svg [fill="#000000"],html[data-theme=dark] .container svg [fill="#000000"],html[data-theme=dark] .footer svg [fill="#000000"],html[data-theme=dark] .markdown svg [fill="#000000"],html[data-theme=dark] .navbar__brand svg [fill="#000000"],html[data-theme=dark] .sidebar__logo svg [fill="#000000"]{fill:var(--ifm-heading-color)}.container svg [fill="#FFFFFF"],.footer svg [fill="#FFFFFF"],.integrations g.item circle,.markdown svg [fill="#FFFFFF"],.navbar__brand svg [fill="#FFFFFF"],.sidebar__logo svg [fill="#FFFFFF"],html[data-theme=dark] .container svg [fill="#FFFFFF"],html[data-theme=dark] .footer svg [fill="#FFFFFF"],html[data-theme=dark] .markdown svg [fill="#FFFFFF"],html[data-theme=dark] .navbar__brand svg [fill="#FFFFFF"],html[data-theme=dark] .sidebar__logo svg [fill="#FFFFFF"]{fill:var(--ifm-background-color)}.container svg [stop-color="#000000"],.footer svg [stop-color="#000000"],.markdown svg [stop-color="#000000"],.navbar__brand svg [stop-color="#000000"],.sidebar__logo svg [stop-color="#000000"],html[data-theme=dark] .container svg [stop-color="#000000"],html[data-theme=dark] .footer svg [stop-color="#000000"],html[data-theme=dark] .markdown svg [stop-color="#000000"],html[data-theme=dark] .navbar__brand svg [stop-color="#000000"],html[data-theme=dark] .sidebar__logo svg [stop-color="#000000"]{stop-color:var(--ifm-heading-color)}.container svg [stroke="#FFFFFF"],.footer svg [stroke="#FFFFFF"],.markdown svg [stroke="#FFFFFF"],.navbar__brand svg [stroke="#FFFFFF"],.sidebar__logo svg [stroke="#FFFFFF"],html[data-theme=dark] .container svg [stroke="#FFFFFF"],html[data-theme=dark] .footer svg [stroke="#FFFFFF"],html[data-theme=dark] .markdown svg [stroke="#FFFFFF"],html[data-theme=dark] .navbar__brand svg [stroke="#FFFFFF"],html[data-theme=dark] .sidebar__logo svg [stroke="#FFFFFF"]{stroke:var(--ifm-background-color)}.integrations g.item.large circle,.integrations g.item:hover circle{stroke:var(--ifm-panel-border-color-active)}.table-of-contents{border-left:1px solid var(--ifm-contents-border-color);display:inherit;font-size:.8rem;max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;padding-left:var(--ifm-contents-padding-left);position:-webkit-sticky;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.markdown table>tbody>tr>td:first-child,.markdown table>thead>tr>th:first-child,.unstyled,div[class^=docPage_] main[class^=docMainContainer_] div.container div.row div.col.col--3{padding-left:0}.table-of-contents .section{margin-bottom:.5rem;padding:0 0 .5rem}.table-of-contents .status{font-weight:700;padding:0 0 var(--ifm-contents-padding-vertical) 0}.table-of-contents .title{color:var(--ifm-color-emphasis-300);font-size:.9rem;font-weight:700;margin-bottom:var(--ifm-contents-padding-vertical)}.table-of-contents ul.contents{font-size:.75rem;font-weight:700;padding:0}.table-of-contents ul.contents li{margin-left:0;margin-right:0;overflow:hidden}ul.tabs{background-color:var(--ifm-color-emphasis-50);font-size:.9em;font-weight:700}ul.tabs li.tab-item{border-left:1px solid transparent;border-radius:0;border-right:1px solid transparent;border-top:2px solid transparent;margin:0 0 -1px;padding:.4em 1.5em;text-align:center}ul.tabs li.tab-item:hover{background:0 0;color:var(--ifm-link-colorI)}ul.tabs li.tab-item.tab-item--active{background:var(--ifm-background-color);border-color:var(--ifm-tabs-color-active) var(--ifm-hr-border-color) var(--ifm-background-color);color:var(--ifm-font-base-color)}ul.tabs.mini{background:none;border:0}ul.tabs.mini li{border:0;margin-right:1em;padding:0}ul.tabs.rounded{border:0;border-radius:2em;font-size:1em;font-weight:400;margin:0 auto;padding:6px}ul.tabs.rounded li.tab-item{border:0;border-radius:2em;flex:1 1 0;padding:0 10px;white-space:nowrap}ul.tabs.rounded li.tab-item.tab-item--active{border:0}.tabs--centered,.topology_pl5s{text-align:center}.tabs--centered ul.tabs{display:inline-block}.text--highlight{-webkit-animation:5s ease-in infinite a;animation:5s ease-in infinite a;background-clip:text;-webkit-background-clip:text;background-image:var(--ifm-highlight-gradient);background-size:150% 150%;color:transparent}.unstyled{list-style:none}.markdown .diagram{max-height:250px;width:100%}.markdown>h1,.markdown>h2{border-top:1px solid var(--ifm-hr-border-color);font-size:1.5rem;margin-bottom:calc(var(--ifm-h1-h2-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h1-h2-vertical-rhythm-top)*var(--ifm-leading));padding-top:calc(var(--ifm-h1-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-bottom:calc(var(--ifm-h3-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4{margin-bottom:calc(var(--ifm-h4-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h4-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h5{margin-bottom:calc(var(--ifm-h5-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h5-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h6{margin-bottom:calc(var(--ifm-h6-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h6-vertical-rhythm-top)*var(--ifm-leading))}.markdown>img,.markdown>p>img,.markdown>p>svg,.markdown>svg{display:block;height:auto;margin:0 auto}.markdown>img,.markdown>svg{margin-bottom:calc(var(--ifm-spacing-vertical)*2)}.markdown svg{height:100%;max-height:100%}.markdown pre{font-size:90%}.markdown table{display:table;page-break-inside:auto;width:100%}.markdown table>tbody>tr,.markdown table>thead>tr{border:none;border-bottom:1px solid var(--ifm-hr-border-color);page-break-after:auto;page-break-inside:avoid}.markdown table>thead>tr{border-bottom-width:2px}.markdown table>tbody>tr>td,.markdown table>thead>tr>th{-webkit-box-align:start;-ms-grid-row-align:start;align-items:start;align-self:start;border:none;padding:8px;width:auto}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.markdown table>thead>tr{border-bottom-size:2px}div[class^=docPage_] div[class^=docItemContainer_]{max-width:none}div[class^=docPage_] h1[class^=docTitle_]{font-size:2em;margin-bottom:.5rem}div[class^=docPage_] div[class^=docSidebarContainer_]{border-right-color:var(--ifm-sidebar-border-color);max-width:var(--ifm-sidebar-width);min-width:var(--ifm-sidebar-width)}div[class^=docPage_] div[class^=sidebar_]{font-size:.85rem;font-weight:700}div[class^=docPage_] div[class^=sidebar_] .menu{background:var(--ifm-sidebar-background);font-weight:700;padding:var(--ifm-spacing-vertical) var(--ifm-navbar-padding-horizontal) 0 var(--ifm-navbar-padding-horizontal)}div[class^=docPage_] div[class^=sidebar_] .menu__link.menu__link--active:not(.menu__link--sublist){border-radius:0;border-right:2px solid var(--ifm-color-primary);margin-right:calc(var(--ifm-navbar-padding-horizontal)*-1);padding-right:calc(var(--ifm-navbar-padding-horizontal) - 2px)}div[class^=docPage_] div[class^=sidebar_] .menu__link.menu__link--active:not(.menu__link--sublist) .badge{background:rgba(var(--ifm-color-primary-rgb),.2);background-clip:padding-box;border:1px solid rgba(var(--ifm-color-primary-rgb),.2);color:var(--ifm-color-primary)}html[data-theme=dark] .domain-bg,html[data-theme=dark] .domain-bg.domain-bg--config,html[data-theme=dark] .domain-bg.domain-bg--networking,html[data-theme=dark] .domain-bg.domain-bg--platforms,html[data-theme=dark] .domain-bg.domain-bg--sinks,html[data-theme=dark] .domain-bg.domain-bg--sources,html[data-theme=dark] .domain-bg.domain-bg--transforms{background-image:url(/assets/images/logo-4a65787ee541d20adfdf62e4bb5ad67b.svg)}html[data-theme=dark] .navbar{border-bottom:1px solid var(--ifm-sidebar-border-color);box-shadow:none}html[data-theme=dark] .navbar__sidebar__backdrop{background:var(--ifm-color-emphasis-100)}html[data-theme=dark] .navbar .navbar__item .badge--default{background:var(--ifm-color-emphasis-100);color:var(--ifm-panel-color)}html[data-theme=dark] .button.button--secondary{--ifm-button-background-color:var(--ifm-panel-background);--ifm-button-border-color:var(--ifm-panel-border-color);--ifm-button-color:var(--ifm-panel-color);color:var(--ifm-button-color)}html[data-theme=dark] .button.button--secondary:hover{--ifm-button-background-color:var(--ifm-panel-background-active);--ifm-button-border-color:var(--ifm-panel-border-color-active);--ifm-button-color:var(--ifm-panel-color-active);box-shadow:var(--ifm-panel-box-shadow-active)}html[data-theme=dark] .menu .menu__link.menu__link--sublist:after{background-image:url('data:image/svg+xml;utf8,<svg alt="Arrow" xmlns="http://www.w3.org/2000/svg" width="14px" height="14px" viewBox="-6 -6 38 38"><path fill="rgba(255,255,255,0.3)" d="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"></path></svg>')}html[data-theme=dark] input[type=checkbox]{background:var(--ifm-color-emphasis-200)}html[data-theme=dark] input[type=checkbox]:checked{background-color:var(--ifm-color-primary)}#nprogress .bar{background:#29d;height:2px;left:0;position:fixed;top:0;width:100%;z-index:11}#nprogress .peg{box-shadow:0 0 10px #29d,0 0 5px #29d;height:100%;opacity:1;position:absolute;right:0;-webkit-transform:rotate(3deg) translateY(-4px);transform:rotate(3deg) translateY(-4px);width:100px}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:7}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input::-webkit-input-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{-webkit-animation:.1s ease-in forwards b;animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a,.docs-wrapper{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:top center;transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:-webkit-sticky;position:sticky;top:0;z-index:3}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}.collapseSidebarButton_eoK2,.components_r3eP ul,.sidebarLogo_hmkv,.themedImage_TMUO,svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon,.components_r3eP h3 span{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:8}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Container,.skipToContent_OuoZ{z-index:calc(var(--ifm-z-index-fixed) + 1)}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}@-webkit-keyframes b{0%{opacity:0}to{opacity:1}}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.alert{background:var(--ifm-panel-background)!important;border:0;border-left:6px solid var(--ifm-alert-background-color);border-radius:0;font-size:95%;font-weight:500;margin-bottom:calc(var(--ifm-spacing-vertical)*2)}.alert>i.feather{float:left;font-size:2em!important;margin-left:-1.65em;position:relative;top:-2px}.alert a,.alert code{color:var(--ifm-alert-background-color)}.alert.alert--icon{padding-left:5em}.alert.alert--fill.alert--danger{background:rgba(var(--ifm-color-danger-rgb),.15)!important;border:1px solid var(--ifm-color-danger);color:var(--ifm-color-danger)!important}.alert.alert--fill.alert--primary{background:rgba(var(--ifm-color-primary-rgb),.15)!important;border:1px solid var(--ifm-color-primary);color:var(--ifm-color-primary)!important}.alert.alert--fill.alert--warning{background:rgba(var(--ifm-color-warning-rgb),.15)!important;border:1px solid var(--ifm-color-warning);color:var(--ifm-color-warning)!important}.alert.alert--fill a,.announcementBarContent_6uhP a{color:inherit;text-decoration:underline}.indexAnnouncement_jMfS span,.jump-to.jump-to--highlight:hover .jump-to--inner-2{color:var(--ifm-background-color)}.alert.alert--fill a code,.alert.alert--fill code{color:inherit}.skipToContent_OuoZ{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_OuoZ:focus{left:1rem}.announcementBar_axC9{background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);height:var(--docusaurus-announcement-bar-height);position:relative;width:100%}.announcementBarClose_A3A1{font-size:1.25rem;height:100%;position:absolute;right:0;top:0;width:55px}.announcementBarContent_6uhP{font-size:85%;padding:5px 0;text-align:center;width:100%}.announcementBarCloseable_y4cp{margin-right:55px}.react-toggle{cursor:pointer;position:relative;touch-action:pan-x;-webkit-user-select:none;user-select:none}.react-toggle-screenreader-only{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.react-toggle--disabled{cursor:not-allowed}.react-toggle-track{background-color:#4d4d4d;border-radius:30px;height:24px;transition:.2s;width:50px}.react-toggle-track-check,.react-toggle-track-x{height:10px;margin:auto 0;top:0;position:absolute;bottom:0}.react-toggle-track-check{left:8px;opacity:0;transition:opacity .25s;width:14px}.react-toggle--checked .react-toggle-track-check,.react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-check{opacity:1;transition:opacity .25s}.react-toggle-track-x{right:10px;width:10px}.react-toggle--checked .react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-x{opacity:0}.react-toggle-thumb{background-color:#fafafa;border:1px solid #4d4d4d;border-radius:50%;height:22px;left:1px;position:absolute;top:1px;transition:.25s;width:22px}.react-toggle--checked .react-toggle-thumb,[data-theme=dark] .react-toggle .react-toggle-thumb{left:27px}.react-toggle--focus .react-toggle-thumb,.react-toggle:hover .react-toggle-thumb{box-shadow:0 0 2px 3px var(--ifm-color-primary)}.react-toggle:active:not(.react-toggle--disabled) .react-toggle-thumb{box-shadow:0 0 5px 5px var(--ifm-color-primary)}.toggle_iYfV{align-items:center;display:flex;height:10px;justify-content:center;width:10px}.toggle_iYfV:before{position:absolute}.iconExternalLink_wgqa{margin-left:.3rem;position:relative;top:1px}html[data-theme=dark] .themedImage--dark_uzRr,html[data-theme=light] .themedImage--light_4Vu1{display:initial}.navbarHideable_RReh{transition:-webkit-transform var(--ifm-transition-fast) ease;transition:transform var(--ifm-transition-fast) ease;transition:transform var(--ifm-transition-fast) ease,-webkit-transform var(--ifm-transition-fast) ease}.navbarHidden_FBwS{-webkit-transform:translate3d(0,calc(-100% - 2px),0);transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_94kH{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerCopyright_-piB{font-size:12px}.codeBlockContent_csEI{direction:ltr;position:relative}.codeBlockTitle_oQzk{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:var(--ifm-global-radius);border-top-right-radius:var(--ifm-global-radius);font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockWithTitle_ZT05{border-top-left-radius:0;border-top-right-radius:0}.copyButton_M3SB{background:rgba(0,0,0,.3);border-radius:var(--ifm-global-radius);color:var(--ifm-color-white);opacity:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out;-webkit-user-select:none;user-select:none}.codeBlockLines_1zSZ{display:flex;flex-direction:column;float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.main-wrapper{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}.sidebarMenuIcon_iZzd{vertical-align:middle}.sidebarMenuCloseIcon_6kU2{align-items:center;display:inline-flex;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);height:24px;justify-content:center;line-height:.9;width:24px}.menu__list .menu__list{overflow-y:hidden;transition:height var(--ifm-transition-fast) linear;will-change:height}.menu__list-item--collapsed .menu__list{height:0!important}.searchQueryInput_4zAW,.searchVersionInput_ozis{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_4zAW:focus,.searchVersionInput_ozis:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_4zAW::-webkit-input-placeholder{color:var(--docsearch-muted-color)}.searchQueryInput_4zAW::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_7sbA{font-size:.9rem;font-weight:700}.algoliaLogo_ayeM{max-width:150px}.algoliaLogoPathFill_UrkK{fill:var(--ifm-font-color-base)}.searchResultItem_Hr8z{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_Ydj3{font-weight:400;margin-bottom:0}.searchResultItemPath_tbl0{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_ESJ1{font-style:italic;margin:.5rem 0 0}.loadingSpinner_qctK{-webkit-animation:1s linear infinite c;animation:1s linear infinite c;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@-webkit-keyframes c{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes c{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.loader_g07B{margin-top:2rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.componentsHero{margin:0;overflow:hidden;padding:0}.componentsHeroOverlay{margin-bottom:2em;margin-top:-15.25em}.anchor{display:block;position:relative;top:-.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast)}.jump-to{background:var(--ifm-panel-background);border:1px solid var(--ifm-panel-border-color);box-shadow:var(--ifm-panel-box-shadow);color:var(--ifm-font-base-color);display:block;font-weight:500;margin-bottom:var(--ifm-spacing-vertical);text-align:left}.jump-to,.jump-to--inner,.jump-to--inner-2{border-radius:var(--ifm-global-radius);transition:var(--ifm-transition-fast) ease}.jump-to--inner-2{display:flex;padding:1em var(--ifm-spacing-horizontal)}.jump-to--main{flex:1 1;vertical-align:center}.jump-to--main .badge--right{float:right;margin-top:3px}.jump-to--right{font-size:1.8em!important;line-height:1;margin:0 10px;transition:var(--ifm-transition-fast) ease;width:30px}.jump-to:hover{background:var(--ifm-panel-background-active);border-color:var(--ifm-color-primary);box-shadow:var(--ifm-panel-box-shadow-active);text-decoration:none}.jump-to:hover .jump-to--right{margin-right:0}.jump-to.jump-to--sm{font-size:.8em}.jump-to.jump-to--primary{background:rgba(var(--ifm-color-primary-rgb),.2)}.jump-to.jump-to--highlight{-webkit-animation:5s ease-in infinite a;animation:5s ease-in infinite a;background-image:var(--ifm-highlight-gradient);background-size:150% 150%;border:0;font-weight:600;padding:1px}.jump-to.jump-to--highlight .jump-to--inner{background:rgba(var(--ifm-background-color-rgb),.85);color:var(--ifm-background-color)}.jump-to.jump-to--highlight .jump-to--inner-2{-webkit-animation:5s ease-in infinite a;animation:5s ease-in infinite a;-webkit-background-clip:text;background-clip:text;background-image:var(--ifm-highlight-gradient);background-size:150% 150%;color:var(--ifm-color-emphasis-700)}.jump-to.jump-to--highlight:hover{box-shadow:none}.jump-to.jump-to--highlight:hover .jump-to--inner{background:none}.jump-to.jump-to--highlight:hover span.badge{background:var(--ifm-background-color);color:var(--ifm-color-primary)}.jump-to small{opacity:.75}.jump-to span.badge.badge--category{font-size:.8em;line-height:1em}.tabItemActive_cw6a{-webkit-animation:.5s ease-in-out 5 d;animation:.5s ease-in-out 5 d}@-webkit-keyframes d{0%{background-color:var(--ifm-hover-overlay)}to{background-color:transparent}}@keyframes d{0%{background-color:var(--ifm-hover-overlay)}to{background-color:transparent}}.enhancedAnchor_WiXH{top:calc(var(--ifm-navbar-height)*-1 - .5rem)}.h1Heading_dC7a{font-size:3rem;margin-bottom:calc(var(--ifm-leading-desktop)*var(--ifm-leading))}.docMainContainer_r8cw,.docPage_lDyR{display:flex;width:100%}@-webkit-keyframes e{0%{background-size:100% 100%}90%{background-size:250% 250%}to{background-size:200% 200%}}@keyframes e{0%{background-size:100% 100%}90%{background-size:250% 250%}to{background-size:200% 200%}}@-webkit-keyframes f{0%,to{background-size:200% 200%}50%{background-size:150% 150%}}@keyframes f{0%,to{background-size:200% 200%}50%{background-size:150% 150%}}.indexAnnouncement_jMfS{background:var(--ifm-color-emphasis-50);border-radius:1em;color:var(--ifm-color-content);display:inline-block;font-size:.9em;margin-bottom:var(--ifm-spacing-vertical);padding:3px 10px 5px}.indexAnnouncement_jMfS span{background:var(--ifm-color-content);border:0;border-radius:1em;margin-right:.5em}.indexAnnouncement_jMfS:hover{background:var(--ifm-panel-background-active);text-decoration:none}.indexHeroBanner_P68S{-webkit-animation:.7s cubic-bezier(0,1.5,.32,1.5) e,2.5s linear infinite f;animation:.7s cubic-bezier(0,1.5,.32,1.5) e,2.5s linear infinite f;-webkit-animation-delay:.65s,1.35s;animation-delay:.65s,1.35s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;background-image:radial-gradient(ellipse at center calc(50% + 6em),rgba(var(--ifm-color-primary-rgb),.25),transparent 20%);background-position:50%;font-size:1.05em}.indexHeroDiagram_V\+dN{height:auto;margin:calc(var(--ifm-spacing-vertical)*2) 0;max-height:21em;width:100%}html[data-theme=dark] .hero_RXVi{background-image:radial-gradient(ellipse at center calc(50% + 125px),rgba(var(--ifm-color-primary-rgb),.2),transparent 30%)}.features_eXGx{align-items:center;display:flex;width:100%}.features_eXGx h3{margin-bottom:var(--ifm-spacing-vertical);text-align:center}.feature_Fxce p{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.featureIcon_NFNa{border-top:1px solid var(--ifm-color-primary);color:var(--ifm-color-primary);font-size:1.5em;margin-bottom:-.5em;margin-top:1em;text-align:center}.featureIcon_NFNa i{background:var(--ifm-background-color);padding:0 var(--ifm-spacing-horizontal);position:relative;top:-1em}.components_r3eP{height:1000px;margin-top:calc(var(--ifm-spacing-vertical)*-8);position:relative;width:100%}.components_r3eP h3{align-items:center;display:flex;font-size:3.5rem;height:100%;justify-content:center;position:relative;text-align:center;z-index:1}.componentsCanvas_HmCr{height:100%;left:0;position:absolute;top:0;width:100%;z-index:2}.hover14 figure,.slide-show img{position:relative}.topologyDiagram_RIep{display:block;height:100%;margin:var(--ifm-heading-margin-bottom) auto;max-height:300px;max-width:900px;width:100%}.awssld,.svg{max-width:100%}.installSubTitle_sbCG{margin-top:var(--ifm-heading-margin-bottom)}.youtubePlayer_CECg{height:400px;margin:15px 10px 15px 15px;position:relative;width:600px}.installationPlatforms_uLee{grid-column-gap:100px;display:grid;grid-template-areas:"a a a a" "b b . c" "d d d d";grid-template-rows:auto;margin:calc(var(--ifm-spacing-vertical)*4) 0 calc(var(--ifm-spacing-vertical)*1) 0;text-align:center}.installationPlatforms_uLee a svg{grid-column-gap:100px;margin:15px var(--ifm-spacing-horizontal);max-height:100px;max-width:150px}.installationPlatforms_uLee a:hover svg [fill="#10E7FF"]{fill:#10e7ff}.installationChecks_XhS6{display:flex;font-weight:700;justify-content:center;margin-bottom:calc(var(--ifm-spacing-vertical)*4);vertical-align:center}.installationChecks_XhS6>div{flex-basis:0;flex-grow:1;margin:0 var(--ifm-spacing-horizontal);text-align:center}.integrations g.item text{fill:var(--ifm-color-content)}.integrations g.item.large text,.integrations g.item:hover text{fill:var(--ifm-color-primary)}.integrations g.item:hover circle{fill:var(--ifm-panel-background-active)}.configuration__diagram svg{height:100%;margin-bottom:var(--ifm-spacing-vertical);margin-left:-4%;width:104%}.configuration__diagram svg #config-file-bg{fill:var(--ifm-panel-background);stroke:var(--ifm-panel-border-color)}.image-overview{flex:1.3;height:null;margin:15px 10px 15px 15px;padding:0;width:null}.hover14 figure:before{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,.3));content:"";display:block;height:100%;left:-75%;position:absolute;top:0;-webkit-transform:skewX(-25deg);transform:skewX(-25deg);width:50%;z-index:2}.hover14 figure:hover:before{-webkit-animation:.75s g;animation:.75s g}@-webkit-keyframes g{to{left:125%}}@keyframes g{to{left:125%}}.svg{display:block;height:auto;justify-content:center;margin:var(--ifm-heading-margin-bottom) auto;max-height:100%;width:auto}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v50/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2) format("woff2")}.material-icons{word-wrap:normal;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;direction:ltr;display:inline-block;font-family:Material Icons;font-size:24px;font-style:normal;font-weight:400;letter-spacing:normal;line-height:1;text-transform:none;white-space:nowrap}.container1{background:#419be0;color:#333;margin:0 auto;padding:40px;width:80%}.awssld__wrapper,.slide-show img{max-height:600px;min-height:500px}.slide-img:before{background:rgba(0,0,0,.505);bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:4}.slide-caption{background:rgba(34,34,34,.61);color:#ddd;left:20px;padding:20px;position:absolute;width:50%;z-index:10}.slide-caption>h1{-webkit-animation:2s ease-in fadeIn;animation:2s ease-in fadeIn;margin-bottom:10px}.slide-caption>p{-webkit-animation:3s ease-in fadeIn;animation:3s ease-in fadeIn;font-size:.95rem;line-height:2em;margin-top:10px}.player-wrapper{padding-top:56.25%;position:relative}.react-player{left:0;position:absolute;top:0}.awssld__box,.awssld__container figure,.awssld__content{display:block;height:100%;left:0;position:absolute;top:0;width:100%}.awssld__bullets button,.awssld__controls button{outline-color:0;outline-style:none;outline-width:0}.awssld{--organic-arrow-thickness:4px;--organic-arrow-height:40px;--slider-height-percentage:60%;--loader-bar-color:#851515;--loader-bar-height:6px;--control-button-width:10%;--control-button-height:25%;--control-button-opacity:0.5;--control-button-hover-opacity:0.75;--control-button-background:transparent;--transition-bezier:cubic-bezier(0.5,0.075,0.25,0.95);--slider-transition-duration:575ms;--organic-arrow-color:#6a6a6a;--organic-arrow-border-radius:0;--control-bullet-color:#6a6a6a;--control-bullet-active-color:#6a6a6a;--content-background-color:#2f2f2f}.awssld,.awssld__wrapper{display:block;position:relative;width:100%}.awssld__wrapper{height:100%;overflow:hidden}.awssld__container{display:block;height:0;padding-bottom:var(--slider-height-percentage);width:100%}.awssld__startUp{background-color:red;height:100%;width:100%}.awssld__startUp>div{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.awssld__startUp img{height:auto;width:35%}.awssld__content{align-items:center;background-color:var(--content-background-color);display:flex;justify-content:center;overflow:hidden}.awssld__content>img,.awssld__content>video{height:100%;left:0;object-fit:cover;position:absolute;top:0;width:100%}.awssld__controls button{align-items:center;background-color:var(--control-button-background);border:none;color:#fff;cursor:pointer;display:flex;height:var(--control-button-height);justify-content:center;position:absolute;top:calc(50% - var(--control-button-height)*.5);width:var(--control-button-width);z-index:3}.awssld__controls button .awssld__controls__arrow-left,.awssld__controls button .awssld__controls__arrow-right{opacity:var(--control-button-opacity)}.awssld__controls button:hover .awssld__controls__arrow-left,.awssld__controls button:hover .awssld__controls__arrow-right{opacity:var(--control-button-opacity-hover)}.awssld__controls--active .awssld__controls__arrow-left{opacity:var(--control-button-opacity-hover);-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.awssld__controls--active .awssld__controls__arrow-right{opacity:var(--control-button-opacity-hover);-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.awssld__controls--hidden{display:none}.awssld__bar{background-color:var(--loader-bar-color);display:block;height:var(--loader-bar-height);left:0;position:absolute;top:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);transition:-webkit-transform 3s var(--transition-bezier);transition:transform 3s var(--transition-bezier);transition:transform 3s var(--transition-bezier),-webkit-transform 3s var(--transition-bezier);width:100%;z-index:6}.awssld__bar--active{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0)}.awssld__bar--end{-webkit-transform:translateZ(0);transform:translateZ(0);transition-duration:.3s}.awssld__prev{left:0}.awssld__box{z-index:1}.awssld--animated{visibility:visible;will-change:transform}.awssld--animated-mobile{transition:transform 325ms cubic-bezier(.15,.65,.1,1);transition:transform 325ms cubic-bezier(.15,.65,.1,1),-webkit-transform 325ms cubic-bezier(.15,.65,.1,1);will-change:transform}.awssld--active{-webkit-transform:translateZ(0);transform:translateZ(0);visibility:visible;z-index:2}.awssld--moveLeft,.awssld--moveRight{-webkit-backface-visibility:hidden;backface-visibility:hidden}.awssld--moveRight{-webkit-animation:i var(--slider-transition-duration) both var(--transition-bezier);animation:i var(--slider-transition-duration) both var(--transition-bezier)}.awssld--moveLeft{-webkit-animation:h var(--slider-transition-duration) both var(--transition-bezier);animation:h var(--slider-transition-duration) both var(--transition-bezier)}.awssld--exit{z-index:0}.awssld--exit.awssld--moveLeft{-webkit-animation:j var(--slider-transition-duration) both var(--transition-bezier);animation:j var(--slider-transition-duration) both var(--transition-bezier)}.awssld--exit.awssld--moveRight{-webkit-animation:k var(--slider-transition-duration) both var(--transition-bezier);animation:k var(--slider-transition-duration) both var(--transition-bezier)}.awssld--fill-parent{height:100%!important;left:0;position:absolute!important;top:0;width:100%!important}.awssld--fill-parent .awssld__container{height:100%;padding:0}.awssld__bullets{align-items:center;bottom:-40px;display:flex;justify-content:center;position:absolute;width:100%}.awssld__bullets button{background:var(--control-bullet-color);border:none;border-radius:50%;cursor:pointer;display:block;height:16px;margin:5px;overflow:hidden;padding:0;text-indent:-9999px;transition:transform .225s cubic-bezier(.8,1.35,.75,1.45),background-color .175s ease-out,-webkit-transform .225s cubic-bezier(.8,1.35,.75,1.45);width:16px}.awssld__bullets .awssld__bullets--loading,.awssld__bullets button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.awssld__bullets .awssld__bullets--active{background:var(--control-bullet-active-color)}.awssld__bullets .awssld__bullets--active,.awssld__bullets .awssld__bullets--active:hover{-webkit-transform:scale(1.5);transform:scale(1.5)}.awssld__controls__arrow-left,.awssld__controls__arrow-right{display:block;height:var(--organic-arrow-height);position:relative;transition:transform .2s ease-out .125s,opacity .2s ease-out,-webkit-transform .2s ease-out .125s;width:100%}.awssld__controls__arrow-left:after,.awssld__controls__arrow-left:before,.awssld__controls__arrow-right:after,.awssld__controls__arrow-right:before{background-color:var(--organic-arrow-color);border-radius:var(--organic-arrow-border-radius);content:" ";height:100%;position:absolute;right:calc(50% - (var(--organic-arrow-height) + var(--organic-arrow-thickness))*.7071/2);transition:transform .15s ease-out,background-color .15s ease-out,-webkit-transform .15s ease-out;width:var(--organic-arrow-thickness)}.awssld__controls__arrow-left:before,.awssld__controls__arrow-right:before{top:-50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:100% 100% 0;transform-origin:100% 100% 0}.awssld__controls__arrow-left:after,.awssld__controls__arrow-right:after{top:50%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transform-origin:100% 0 0;transform-origin:100% 0 0}.awssld__controls__arrow-right--active{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.awssld__controls__arrow-right--active:after{-webkit-transform:rotate(90deg) translate3d(50%,0,0)!important;transform:rotate(90deg) translate3d(50%,0,0)!important}.awssld__controls__arrow-right--active:before{-webkit-transform:rotate(-90deg) translate3d(50%,0,0)!important;transform:rotate(-90deg) translate3d(50%,0,0)!important}.awssld__controls__arrow-left:after,.awssld__controls__arrow-left:before{left:calc(50% - (var(--organic-arrow-height) + var(--organic-arrow-thickness))*.7071/2);right:auto}.awssld__controls__arrow-left:before{top:-50%;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transform-origin:0 100% 0;transform-origin:0 100% 0}.awssld__controls__arrow-left:after{top:50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0 0 0;transform-origin:0 0 0}.awssld__controls__arrow-left--active{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.awssld__controls__arrow-left--active:after{-webkit-transform:rotate(-90deg) translate3d(-50%,0,0)!important;transform:rotate(-90deg) translate3d(-50%,0,0)!important}.awssld__controls__arrow-left--active:before{-webkit-transform:rotate(90deg) translate3d(-50%,0,0)!important;transform:rotate(90deg) translate3d(-50%,0,0)!important}.awssld__controls button:hover .awssld__controls__arrow-left:before,.awssld__controls button:hover .awssld__controls__arrow-right:after{opacity:1;-webkit-transform:rotate(30deg);transform:rotate(30deg)}.awssld__controls button:hover .awssld__controls__arrow-left:after,.awssld__controls button:hover .awssld__controls__arrow-right:before{opacity:1;-webkit-transform:rotate(-30deg);transform:rotate(-30deg)}.awssld__timer{--timer-delay:2000ms;--timer-release:200ms;--timer-height:4px;--timer-background-color:rgba(0,0,0,.15);background-color:var(--timer-background-color);height:var(--timer-height);left:0;position:absolute;top:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);width:100%;z-index:5}.sidebar_q\+wC,.tableOfContents_vrFS{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:-webkit-sticky}.awssld__timer--animated{transition:-webkit-transform var(--timer-delay) linear;transition:transform var(--timer-delay) linear;transition:transform var(--timer-delay) linear,-webkit-transform var(--timer-delay) linear;will-change:transform}.awssld__timer--run{-webkit-transform:translateX(0);transform:translateX(0)}.awssld__timer--fast{-webkit-transform:translateX(-.00001px);transform:translateX(-.00001px);transition:-webkit-transform calc(var(--timer-release)/2) linear;transition:transform calc(var(--timer-release)/2) linear;transition:transform calc(var(--timer-release)/2) linear,-webkit-transform calc(var(--timer-release)/2) linear}.awssld__timer--end{-webkit-transform:translateX(-.0001px);transform:translateX(-.0001px);transition:-webkit-transform var(--timer-release) linear;transition:transform var(--timer-release) linear;transition:transform var(--timer-release) linear,-webkit-transform var(--timer-release) linear}.awssld__timer--hidden{display:none}@-webkit-keyframes h{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes h{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes i{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes i{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes j{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes j{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@-webkit-keyframes k{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes k{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.awssld--cubeAnimation{--cube-animation-duration:675ms;--cube-animation-perspective:1800px;--cube-animation-ease-in:cubic-bezier(0.8,0,1,0.8);--cube-animation-ease-out:cubic-bezier(0,0.2,0.2,1);--cube-translateZ-distance:-225px}.awssld--cubeAnimation .awssld__container{-webkit-perspective:var(--cube-animation-perspective);perspective:var(--cube-animation-perspective)}.awssld--cubeAnimation .awssld--moveRight{-webkit-animation:n var(--cube-animation-duration) both var(--cube-animation-ease-in);animation:n var(--cube-animation-duration) both var(--cube-animation-ease-in);-webkit-transform-origin:0 50%;transform-origin:0 50%}.awssld--cubeAnimation .awssld--moveLeft{-webkit-animation:o var(--cube-animation-duration) both var(--cube-animation-ease-in);animation:o var(--cube-animation-duration) both var(--cube-animation-ease-in);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.awssld--cubeAnimation .awssld--exit.awssld--moveLeft{-webkit-animation:l var(--cube-animation-duration) both var(--cube-animation-ease-in);animation:l var(--cube-animation-duration) both var(--cube-animation-ease-in);-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.awssld--cubeAnimation .awssld--exit.awssld--moveRight{-webkit-animation:m var(--cube-animation-duration) both var(--cube-animation-ease-in);animation:m var(--cube-animation-duration) both var(--cube-animation-ease-in);-webkit-transform-origin:0 50%;transform-origin:0 50%}@-webkit-keyframes l{50%{-webkit-animation-timing-function:var(--cube-animation-ease-out);animation-timing-function:var(--cube-animation-ease-out);-webkit-transform:translateX(-50%) translateZ(var(--cube-translateZ-distance)) rotateY(-45deg);transform:translateX(-50%) translateZ(var(--cube-translateZ-distance)) rotateY(-45deg)}to{-webkit-transform:translateX(-100%) rotateY(-90deg);transform:translateX(-100%) rotateY(-90deg)}}@keyframes l{50%{-webkit-animation-timing-function:var(--cube-animation-ease-out);animation-timing-function:var(--cube-animation-ease-out);-webkit-transform:translateX(-50%) translateZ(var(--cube-translateZ-distance)) rotateY(-45deg);transform:translateX(-50%) translateZ(var(--cube-translateZ-distance)) rotateY(-45deg)}to{-webkit-transform:translateX(-100%) rotateY(-90deg);transform:translateX(-100%) rotateY(-90deg)}}@-webkit-keyframes m{50%{-webkit-animation-timing-function:var(--cube-animation-ease-out);animation-timing-function:var(--cube-animation-ease-out);-webkit-transform:translateX(50%) translateZ(var(--cube-translateZ-distance)) rotateY(45deg);transform:translateX(50%) translateZ(var(--cube-translateZ-distance)) rotateY(45deg)}to{-webkit-transform:translateX(100%) rotateY(90deg);transform:translateX(100%) rotateY(90deg)}}@keyframes m{50%{-webkit-animation-timing-function:var(--cube-animation-ease-out);animation-timing-function:var(--cube-animation-ease-out);-webkit-transform:translateX(50%) translateZ(var(--cube-translateZ-distance)) rotateY(45deg);transform:translateX(50%) translateZ(var(--cube-translateZ-distance)) rotateY(45deg)}to{-webkit-transform:translateX(100%) rotateY(90deg);transform:translateX(100%) rotateY(90deg)}}@-webkit-keyframes n{0%{-webkit-transform:translateX(100%) rotateY(90deg);transform:translateX(100%) rotateY(90deg)}50%{-webkit-animation-timing-function:var(--cube-animation-ease-out);animation-timing-function:var(--cube-animation-ease-out);-webkit-transform:translateX(50%) translateZ(var(--cube-translateZ-distance)) rotateY(45deg);transform:translateX(50%) translateZ(var(--cube-translateZ-distance)) rotateY(45deg)}}@keyframes n{0%{-webkit-transform:translateX(100%) rotateY(90deg);transform:translateX(100%) rotateY(90deg)}50%{-webkit-animation-timing-function:var(--cube-animation-ease-out);animation-timing-function:var(--cube-animation-ease-out);-webkit-transform:translateX(50%) translateZ(var(--cube-translateZ-distance)) rotateY(45deg);transform:translateX(50%) translateZ(var(--cube-translateZ-distance)) rotateY(45deg)}}@-webkit-keyframes o{0%{-webkit-transform:translateX(-100%) rotateY(-90deg);transform:translateX(-100%) rotateY(-90deg)}50%{-webkit-animation-timing-function:var(--cube-animation-ease-out);animation-timing-function:var(--cube-animation-ease-out);-webkit-transform:translateX(-50%) translateZ(var(--cube-translateZ-distance)) rotateY(-45deg);transform:translateX(-50%) translateZ(var(--cube-translateZ-distance)) rotateY(-45deg)}}@keyframes o{0%{-webkit-transform:translateX(-100%) rotateY(-90deg);transform:translateX(-100%) rotateY(-90deg)}50%{-webkit-animation-timing-function:var(--cube-animation-ease-out);animation-timing-function:var(--cube-animation-ease-out);-webkit-transform:translateX(-50%) translateZ(var(--cube-translateZ-distance)) rotateY(-45deg);transform:translateX(-50%) translateZ(var(--cube-translateZ-distance)) rotateY(-45deg)}}.iconEdit_mS5F{margin-right:.3em;vertical-align:sub}.blogPostData_-Im\+{font-size:.9rem}.blogPostDetailsFull_xD8n{flex-direction:column}.sidebar_q\+wC{position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_9G5K{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.sidebarItemList_6T4b{font-size:.9rem;list-style:none;padding-left:0}.sidebarItem_cjdF{margin-top:.7rem}.tableOfContents_vrFS{position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.lastUpdated_wj\+Z{font-size:smaller;font-style:italic;margin-top:.2rem}@media screen and (min-width:996px){body,html{text-rendering:optimizeLegibility}}@media (min-width:997px){.sidebar{height:calc(100vh - var(--ifm-navbar-height));overflow-y:auto;position:-webkit-sticky;position:sticky;top:var(--ifm-navbar-height)}.sidebar::-webkit-scrollbar{width:7px}.sidebar::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.sidebar::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.sidebar::-webkit-scrollbar-thumb:hover{background:#555}div[class^=docPage_] div[class^=docItemContainer_]{max-width:none;padding:0 calc(var(--ifm-spacing-horizontal)*2)}.searchBox_NKBi{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.sidebar_a3j0{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:-webkit-sticky;position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_VlPv{padding-top:0}.sidebarHidden_OqfG{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_hmkv{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_hmkv img{height:2rem;margin-right:.5rem}.menu_cyFh{flex-grow:1;padding:.5rem}.menuLinkText_lRH\+{cursor:auto}.menuLinkText_lRH\+:hover{background:none}.menuWithAnnouncementBar_\+O1J{margin-bottom:var(--docusaurus-announcement-bar-height)}.collapseSidebarButton_eoK2{background-color:var(--ifm-button-background-color);border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:-webkit-sticky;position:sticky}.collapseSidebarButtonIcon_e\+kA{margin-top:4px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.expandSidebarButtonIcon_cxi8,html[dir=rtl] .collapseSidebarButtonIcon_e\+kA{-webkit-transform:rotate(0);transform:rotate(0)}html[data-theme=dark] .collapseSidebarButton_eoK2,html[data-theme=dark] .collapsedDocSidebar_zZpm:focus,html[data-theme=dark] .collapsedDocSidebar_zZpm:hover{background-color:var(--collapse-button-bg-color-dark)}.collapsedDocSidebar_zZpm:focus,.collapsedDocSidebar_zZpm:hover,html[data-theme=dark] .collapseSidebarButton_eoK2:focus,html[data-theme=dark] .collapseSidebarButton_eoK2:hover{background-color:var(--ifm-color-emphasis-200)}.docMainContainer_r8cw{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_SOUu{max-width:none}.docSidebarContainer_0YBq{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_Qlt2{cursor:pointer;width:30px}.collapsedDocSidebar_zZpm{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;position:-webkit-sticky;position:sticky;top:0;transition:background-color var(--ifm-transition-fast) ease}html[dir=rtl] .expandSidebarButtonIcon_cxi8{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.docItemWrapperEnhanced_aT5H{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media (min-width:997px) and (max-width:1320px){.docItemWrapper_NJLN{max-width:calc(var(--ifm-container-width) - var(--doc-sidebar-width) - var(--ifm-spacing-horizontal)*2)}.docItemWrapperEnhanced_aT5H{max-width:calc(var(--ifm-container-width) - var(--ifm-spacing-horizontal)*2)}}@media only screen and (min-width:997px){.docItemCol_zHA2{max-width:75%!important}.lastUpdated_wj\+Z{text-align:right}}@media screen and (min-width:1024px){:root{--docusaurus-announcement-bar-height:30px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:1200px){h1{--ifm-h1-font-size:calc(1.375rem + 1.5vw)}}@media screen and (max-width:999px){.components_r3eP{height:900px}.components_r3eP h3{font-size:2.5rem}}@media screen and (max-width:997px){.displayOnlyInLargeViewport_cxYs{display:none!important}}@media (max-width:996px){.configuration__diagram svg #Line-6,.configuration__diagram svg .config-section-description,.footer__link-separator,.navbar__item,.table-of-contents,table.comparison td.description{display:none}.row .col.col.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0;max-width:var(--ifm-col-width)}.footer{--ifm-footer-padding-horizontal:0}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.menu--responsive .menu__button,.navbar__toggle{display:inherit}.menu--responsive:not(.menu--show) .menu__list{display:none;opacity:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.pills--block .pills__item:not(:first-child){margin-top:var(--ifm-pills-spacing)}.pills--block .pills__item:not(:last-child){margin-bottom:var(--ifm-pills-spacing)}.tabs--block .tabs__item:not(:first-child){margin-top:var(--ifm-tabs-spacing)}.tabs--block .tabs__item:not(:last-child){margin-bottom:var(--ifm-tabs-spacing)}.container--bleed>.bleed,.container--bleed>section>.code-header,.container--bleed>section>p>img,.container--bleed>section>pre{max-width:100%;position:static;width:auto}.hero{min-height:100px;padding:2em 0}.hero .hero--buttons .button{--ifm-button-padding-horizontal:2rem;min-width:180px}.navbar .navbar__search{flex-grow:1;text-align:right}.navbar .navbar__search .navbar__search-input{width:12.5rem}.navbar .navbar-sidebar__items .navbar__item{display:inline-block}.searchBox_NKBi{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docSidebarContainer_0YBq{margin-top:0}.configuration__diagram{margin:0 auto;max-width:500px;overflow:hidden}.configuration__diagram svg{padding-left:20px;width:235%}}@media only screen and (max-width:996px){.searchQueryColumn_\+SJI,.searchResultsColumn_7sbA{max-width:60%!important}.searchLogoColumn_CHXe,.searchVersionColumn_nDgT{max-width:40%!important}.searchLogoColumn_CHXe{padding-left:0!important}.sidebar_q\+wC,.tableOfContents_vrFS{display:none}.docItemContainer_VKW9{padding:0 .3rem}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media screen and (max-width:576px){.announcementBarClose_A3A1{width:35px}.announcementBarContent_6uhP{width:auto}.announcementBarCloseable_y4cp{margin-right:35px}.searchQueryColumn_\+SJI{max-width:100%!important}.searchVersionColumn_nDgT{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (max-width:520px){.awssld__controls{visibility:hidden}}@media (max-width:500px){.awssld__container{padding-bottom:calc(var(--slider-height-percentage)*1.25)}}@media (max-width:480px){.hero.hero--full-height{min-height:auto}.hero h1{font-size:2em}.hero .hero--subtitle{font-size:1em}.hero .hero--buttons .button{border-radius:.5rem;display:block;margin:0 0 1rem;min-width:auto;width:100%}.navbar .navbar__brand{margin-right:0}.navbar .navbar__brand .navbar__logo{max-width:130px}.navbar .navbar__search{margin-left:0}.navbar .navbar__search .navbar__search-input{width:100%}.navbar .navbar__search .search-bar-expanded{width:100%!important}.indexHeroBanner_P68S,html[data-theme=dark] .indexHeroBanner_P68S{-webkit-animation:none;animation:none;background-image:none;min-height:auto}.indexHeroDiagram_V\+dN{margin:var(--ifm-spacing-vertical) 0 0 0}.componentsCanvas_HmCr,.components_r3eP h3{display:none}.components_r3eP{height:auto;margin-top:0;position:static}.components_r3eP ul{grid-gap:1rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0;padding:0}.components_r3eP ul li{display:grid}.components_r3eP ul li a{background:var(--ifm-panel-background);border:1px solid var(--ifm-panel-border-color);border-radius:.25em;box-shadow:var(--ifm-panel-box-shadow);color:var(--ifm-panel-color);display:block;font-size:1em;margin:0;overflow:hidden;padding:.2em;text-align:center;text-overflow:ellipsis;white-space:nowrap}.components_r3eP ul li a:hover{background:var(--ifm-panel-background-active);border-color:var(--ifm-panel-border-color-active);box-shadow:var(--ifm-panel-box-shadow-active);color:var(--ifm-panel-color-active);text-decoration:none}}@media (max-width:100px){.installationChecks_XhS6{display:block}.installationChecks_XhS6>div{text-align:center!important}}@media (pointer:fine){.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);-webkit-animation:none;animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_axC9,.footer,.menu,.navbar,.pagination-nav,.table-of-contents{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_1zSZ{white-space:pre-wrap}}
\ No newline at end of file
diff --git a/assets/images/Broker-356f92896de988004ef75c8ae79d4bf1.png b/assets/images/Broker-356f92896de988004ef75c8ae79d4bf1.png
deleted file mode 100644
index 9384268..0000000
--- a/assets/images/Broker-356f92896de988004ef75c8ae79d4bf1.png
+++ /dev/null
Binary files differ
diff --git a/assets/images/ClusterLogical-a82f8d136804e81aa069c9cb7f1f53ec.png b/assets/images/ClusterLogical-a82f8d136804e81aa069c9cb7f1f53ec.png
deleted file mode 100644
index 317cdbb..0000000
--- a/assets/images/ClusterLogical-a82f8d136804e81aa069c9cb7f1f53ec.png
+++ /dev/null
Binary files differ
diff --git a/assets/images/backwards-incompatible-99886dcd0be55a8100a7d6c5f3da3bda.png b/assets/images/backwards-incompatible-99886dcd0be55a8100a7d6c5f3da3bda.png
deleted file mode 100644
index 01d16f4..0000000
--- a/assets/images/backwards-incompatible-99886dcd0be55a8100a7d6c5f3da3bda.png
+++ /dev/null
Binary files differ
diff --git a/assets/images/human-readable-sizes-b8c4009dd53d23da3b8637963827a8de.png b/assets/images/human-readable-sizes-b8c4009dd53d23da3b8637963827a8de.png
deleted file mode 100644
index 110009c..0000000
--- a/assets/images/human-readable-sizes-b8c4009dd53d23da3b8637963827a8de.png
+++ /dev/null
Binary files differ
diff --git a/assets/images/logo-4a65787ee541d20adfdf62e4bb5ad67b.svg b/assets/images/logo-4a65787ee541d20adfdf62e4bb5ad67b.svg
deleted file mode 100644
index 0a76a78..0000000
--- a/assets/images/logo-4a65787ee541d20adfdf62e4bb5ad67b.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg id="svg" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="400" height="450" viewBox="0, 0, 400,450"><g id="svgg"><path id="path1" d="M213.706 2.706 C 212.348 4.063,212.333 4.105,212.333 6.515 C 212.333 13.329,221.032 13.654,221.595 6.861 C 221.989 2.107,216.956 -0.544,213.706 2.706 M174.624 16.201 C 170.148 18.568,171.557 26.343,176.459 26.328 C 180.429 26.316,182.731 21.622,180.474 18.141 C 178.992 15.856,176.708 15.098,174.624 16.201 M214.759 23.427 C 214.167 23.650,213.342 24.175,212.925 24.592 L 212.167 25.351 212.000 48.426 C 211.845 69.824,211.790 71.580,211.234 72.598 C 209.678 75.447,205.483 76.119,202.966 73.923 C 201.015 72.221,201.000 72.111,201.000 59.096 L 201.000 47.160 200.134 46.226 C 198.274 44.220,192.667 44.449,192.667 46.531 C 192.667 46.759,192.516 46.995,192.331 47.056 C 192.109 47.130,192.024 55.318,192.081 71.275 L 192.167 95.382 193.580 94.358 C 194.358 93.794,195.146 93.333,195.330 93.333 C 195.515 93.333,195.667 93.183,195.667 93.000 C 195.667 92.817,195.937 92.667,196.267 92.667 C 196.597 92.667,197.009 92.536,197.183 92.376 C 197.474 92.109,198.980 91.637,202.539 90.696 C 204.318 90.226,208.556 90.231,210.579 90.707 C 212.639 91.191,217.119 92.683,217.333 92.955 C 217.594 93.286,218.773 93.999,219.417 94.215 C 219.737 94.323,220.000 94.544,220.000 94.706 C 220.000 94.867,220.136 95.000,220.301 95.000 C 220.998 95.000,223.936 98.044,226.253 101.167 C 227.094 102.300,228.895 106.483,229.124 107.833 C 229.217 108.383,229.469 109.658,229.683 110.667 C 230.114 112.692,229.889 117.578,229.339 118.128 C 229.153 118.314,229.000 119.112,229.000 119.900 C 229.000 120.688,228.850 121.333,228.667 121.333 C 228.483 121.333,228.333 121.576,228.333 121.872 C 228.333 122.356,226.762 125.591,226.328 126.000 C 226.231 126.092,225.876 126.599,225.539 127.127 C 224.817 128.261,223.435 129.900,222.500 130.733 C 220.406 132.597,219.458 133.323,219.111 133.328 C 218.897 133.331,218.672 133.446,218.611 133.583 C 218.450 133.946,216.363 135.000,215.806 135.000 C 215.546 135.000,215.333 135.133,215.333 135.296 C 215.333 135.458,214.921 135.676,214.417 135.780 C 213.912 135.884,212.450 136.215,211.167 136.516 C 206.722 137.558,201.310 136.919,196.741 134.811 C 195.773 134.365,194.836 134.000,194.658 134.000 C 194.479 134.000,194.333 133.850,194.333 133.667 C 194.333 133.483,194.173 133.333,193.976 133.333 C 193.780 133.333,193.394 133.108,193.119 132.833 C 192.844 132.558,192.485 132.333,192.322 132.333 C 192.156 132.333,191.983 137.387,191.929 143.809 C 191.837 154.853,191.807 155.321,191.136 156.226 C 188.732 159.469,184.421 159.537,182.078 156.368 L 181.333 155.360 181.333 97.030 L 181.333 38.701 180.250 37.881 C 179.232 37.112,177.976 36.838,175.977 36.952 C 175.506 36.978,174.606 37.459,173.977 38.020 L 172.833 39.041 172.718 44.104 C 172.642 47.448,172.472 49.250,172.218 49.412 C 172.006 49.546,167.831 49.659,162.939 49.662 L 154.045 49.667 153.821 50.417 C 153.698 50.829,153.293 51.842,152.920 52.667 C 152.030 54.637,151.852 55.127,151.164 57.500 C 150.845 58.600,150.452 59.760,150.292 60.079 C 150.131 60.397,150.000 61.101,150.000 61.642 C 150.000 62.184,149.867 62.709,149.705 62.810 C 149.543 62.910,149.309 63.669,149.185 64.496 C 149.061 65.323,148.818 66.000,148.646 66.000 C 148.474 66.000,148.333 66.516,148.333 67.147 C 148.333 67.778,148.200 68.376,148.037 68.477 C 147.874 68.578,147.660 69.149,147.563 69.747 C 147.465 70.344,147.136 71.658,146.831 72.667 C 146.114 75.038,145.870 75.895,144.920 79.406 C 144.487 81.004,144.028 82.417,143.900 82.545 C 143.771 82.673,143.661 83.165,143.655 83.639 C 143.648 84.113,143.429 84.875,143.167 85.333 C 142.905 85.792,142.685 86.506,142.678 86.921 C 142.672 87.336,142.531 87.936,142.364 88.255 C 142.198 88.573,141.810 89.883,141.502 91.167 C 140.399 95.766,140.163 96.615,139.916 96.861 C 139.779 96.999,139.667 97.527,139.667 98.036 C 139.667 98.545,139.517 99.053,139.333 99.167 C 139.150 99.280,139.000 99.831,139.000 100.392 C 139.000 101.291,138.405 103.520,137.637 105.500 C 137.495 105.867,137.308 106.617,137.221 107.167 C 137.134 107.717,136.809 108.992,136.497 110.000 C 135.935 111.822,135.662 113.182,135.028 117.333 C 134.846 118.525,134.540 120.308,134.348 121.295 C 133.897 123.623,133.900 136.574,134.353 139.167 C 134.546 140.267,134.852 141.992,135.034 143.000 C 135.217 144.008,135.443 145.358,135.537 146.000 C 135.631 146.642,135.828 147.467,135.974 147.833 C 136.120 148.200,136.503 149.400,136.825 150.500 C 137.147 151.600,137.525 152.800,137.665 153.167 C 139.281 157.394,139.414 157.713,140.863 160.833 C 141.904 163.074,145.709 169.449,146.334 170.000 C 146.438 170.092,146.865 170.617,147.283 171.167 C 149.332 173.864,150.051 174.683,152.835 177.482 C 156.092 180.757,157.445 181.981,159.500 183.509 C 160.233 184.054,160.883 184.612,160.944 184.750 C 161.006 184.887,161.252 185.000,161.492 185.000 C 161.732 185.000,162.015 185.225,162.121 185.500 C 162.226 185.775,162.530 186.000,162.795 186.000 C 163.061 186.000,163.328 186.112,163.389 186.250 C 163.754 187.072,170.413 190.846,177.000 193.965 C 178.008 194.443,178.883 194.946,178.944 195.083 C 179.006 195.221,179.245 195.333,179.477 195.333 C 179.918 195.333,182.046 196.308,182.333 196.641 C 182.425 196.747,182.893 197.036,183.372 197.283 C 184.751 197.992,188.229 201.251,189.051 202.603 C 189.462 203.280,189.883 203.908,189.987 204.000 C 190.091 204.092,190.524 204.917,190.950 205.833 C 191.375 206.750,191.936 207.925,192.195 208.444 C 192.455 208.963,192.667 209.650,192.667 209.971 C 192.667 210.293,192.774 210.663,192.905 210.794 C 193.569 211.458,194.635 216.583,194.889 220.333 C 194.982 221.708,195.188 222.991,195.348 223.184 C 195.811 223.742,196.419 232.201,196.571 240.191 C 196.731 248.571,196.896 248.057,193.790 248.845 C 192.714 249.118,191.533 249.467,191.167 249.621 C 189.591 250.281,185.026 251.667,184.429 251.667 C 184.071 251.667,183.671 251.774,183.540 251.904 C 183.144 252.300,180.213 253.333,179.483 253.333 C 179.108 253.333,178.658 253.453,178.483 253.598 C 178.309 253.744,177.267 254.136,176.167 254.470 C 175.067 254.804,173.867 255.192,173.500 255.333 C 171.558 256.077,167.335 257.333,166.776 257.333 C 166.423 257.333,165.991 257.471,165.817 257.638 C 165.643 257.806,165.125 258.011,164.667 258.093 C 164.208 258.175,179.883 258.243,199.500 258.243 C 219.117 258.243,234.792 258.182,234.333 258.107 C 233.875 258.033,233.200 257.847,232.833 257.694 C 232.467 257.541,230.817 257.006,229.167 256.505 C 227.517 256.005,225.867 255.479,225.500 255.336 C 225.133 255.194,223.933 254.816,222.833 254.497 C 221.733 254.178,220.573 253.786,220.255 253.625 C 219.936 253.465,219.336 253.329,218.921 253.323 C 218.506 253.317,217.875 253.092,217.520 252.823 C 217.164 252.554,216.526 252.333,216.103 252.333 C 215.680 252.333,215.333 252.183,215.333 252.000 C 215.333 251.817,214.938 251.667,214.455 251.667 C 213.972 251.667,212.135 251.163,210.372 250.548 C 206.998 249.370,204.919 248.744,203.869 248.592 C 202.583 248.405,201.891 245.704,202.136 241.831 C 202.240 240.182,202.458 236.358,202.620 233.333 C 202.969 226.795,203.563 221.129,204.011 220.068 C 204.188 219.647,204.333 218.607,204.333 217.758 C 204.333 216.909,204.473 215.753,204.644 215.190 C 204.815 214.627,205.131 213.492,205.347 212.667 C 206.076 209.874,208.923 203.333,209.410 203.333 C 209.551 203.333,209.671 203.146,209.676 202.917 C 209.698 202.017,214.617 197.667,215.614 197.667 C 215.826 197.667,216.000 197.517,216.000 197.333 C 216.000 197.150,216.213 197.000,216.472 197.000 C 216.732 197.000,216.994 196.880,217.056 196.734 C 217.117 196.587,218.817 195.680,220.833 194.718 C 226.394 192.066,232.044 189.174,232.830 188.579 C 233.808 187.838,235.732 186.667,235.969 186.667 C 236.120 186.667,236.614 186.295,237.068 185.841 C 237.522 185.387,238.275 184.818,238.742 184.576 C 241.199 183.301,248.387 176.574,251.566 172.575 C 252.618 171.250,253.602 170.017,253.752 169.833 C 254.706 168.666,257.710 163.776,257.874 163.122 C 257.983 162.688,258.206 162.333,258.369 162.333 C 258.533 162.333,258.667 162.052,258.667 161.707 C 258.667 161.363,258.892 160.895,259.167 160.667 C 259.442 160.438,259.667 159.970,259.667 159.626 C 259.667 159.282,259.817 159.000,260.000 159.000 C 260.183 159.000,260.333 158.712,260.333 158.360 C 260.333 158.009,260.544 157.296,260.802 156.777 C 265.107 148.119,266.074 131.995,263.248 116.000 C 262.811 113.525,262.360 111.275,262.248 111.000 C 262.135 110.725,261.973 109.900,261.889 109.167 C 261.805 108.433,261.486 106.858,261.179 105.667 C 260.872 104.475,260.541 102.900,260.443 102.167 C 260.345 101.433,260.130 100.691,259.966 100.517 C 259.801 100.343,259.667 99.797,259.667 99.305 C 259.667 98.812,259.443 97.980,259.169 97.455 C 258.895 96.930,258.670 96.096,258.669 95.603 C 258.668 95.110,258.533 94.623,258.369 94.522 C 258.205 94.420,257.999 93.774,257.912 93.085 C 257.825 92.397,257.501 91.008,257.192 90.000 C 256.883 88.992,256.552 87.792,256.457 87.333 C 256.361 86.875,256.162 86.200,256.014 85.833 C 255.865 85.467,255.505 84.342,255.213 83.333 C 254.921 82.325,254.379 80.494,254.008 79.264 C 253.637 78.034,253.333 76.751,253.333 76.414 C 253.333 76.076,253.194 75.657,253.023 75.483 C 252.758 75.212,252.154 73.216,251.013 68.833 C 250.870 68.283,250.603 67.458,250.419 67.000 C 249.787 65.422,249.333 63.784,249.333 63.079 C 249.333 62.691,249.183 62.280,249.000 62.167 C 248.817 62.053,248.661 61.557,248.655 61.064 C 248.648 60.570,248.429 59.792,248.167 59.333 C 247.905 58.875,247.685 58.096,247.678 57.603 C 247.672 57.110,247.537 56.626,247.378 56.528 C 247.220 56.430,247.009 55.849,246.909 55.237 C 246.648 53.628,245.338 51.000,244.797 51.000 C 244.542 51.000,244.333 50.859,244.333 50.687 C 244.333 50.167,241.958 49.992,231.500 49.740 L 221.500 49.500 221.333 37.774 C 221.174 26.539,221.137 26.008,220.470 25.107 C 219.213 23.410,216.732 22.680,214.759 23.427 M194.122 24.306 C 190.962 26.233,191.278 31.938,194.640 33.653 C 198.037 35.386,201.000 33.051,201.000 28.640 C 201.000 24.549,197.421 22.294,194.122 24.306 M203.833 102.345 C 202.550 102.685,201.395 102.972,201.267 102.982 C 200.327 103.055,197.038 106.486,196.057 108.417 C 194.753 110.984,194.428 116.237,195.481 117.740 C 195.766 118.148,196.000 118.748,196.000 119.074 C 196.000 119.400,196.150 119.667,196.333 119.667 C 196.517 119.667,196.667 119.871,196.667 120.121 C 196.667 120.836,199.769 123.554,201.551 124.400 C 209.887 128.357,221.189 119.352,218.035 111.266 C 217.870 110.845,217.542 109.849,217.305 109.054 C 216.291 105.654,209.672 101.202,206.363 101.696 C 206.255 101.712,205.117 102.004,203.833 102.345 M120.500 278.545 C 116.529 279.162,111.919 283.582,111.161 287.500 C 111.054 288.050,110.800 289.064,110.596 289.753 C 110.327 290.659,110.325 291.214,110.586 291.753 C 110.785 292.164,111.036 293.134,111.144 293.910 C 111.541 296.780,114.543 300.699,117.367 302.037 C 117.990 302.332,118.935 302.782,119.467 303.037 C 123.785 305.105,133.211 301.436,134.548 297.167 C 134.663 296.800,134.873 296.425,135.014 296.333 C 136.292 295.503,136.392 287.667,135.148 285.762 C 134.883 285.356,134.667 284.857,134.667 284.655 C 134.667 284.452,134.445 284.064,134.174 283.793 C 133.903 283.522,133.491 283.041,133.257 282.725 C 130.940 279.577,125.444 277.777,120.500 278.545 M370.072 295.395 C 369.766 295.701,369.667 299.559,369.667 311.198 C 369.667 324.931,369.610 326.617,369.139 326.798 C 368.849 326.909,366.974 327.000,364.973 327.000 L 361.333 327.000 361.333 336.000 L 361.333 345.000 365.083 345.005 C 367.146 345.008,369.020 345.129,369.248 345.274 C 369.574 345.481,369.682 352.741,369.748 379.019 L 369.833 412.500 379.500 412.500 L 389.167 412.500 389.333 378.833 L 389.500 345.167 393.987 345.073 C 397.063 345.009,398.554 344.852,398.732 344.573 C 398.874 344.350,398.992 340.308,398.995 335.592 L 399.000 327.018 394.250 326.926 L 389.500 326.833 389.333 311.000 L 389.167 295.167 379.822 295.078 C 372.833 295.012,370.375 295.092,370.072 295.395 M198.667 324.635 C 198.392 324.790,197.417 325.020,196.500 325.147 C 194.844 325.375,193.110 325.832,191.833 326.377 C 191.467 326.534,190.519 326.885,189.728 327.157 C 188.937 327.430,187.864 327.956,187.343 328.326 C 186.823 328.697,186.308 329.000,186.199 329.000 C 185.852 329.000,182.565 331.456,181.176 332.754 C 178.935 334.846,178.518 334.494,178.405 330.417 L 178.310 327.000 168.822 327.000 L 159.333 327.000 159.333 369.833 L 159.333 412.667 168.833 412.667 L 178.333 412.667 178.333 389.900 C 178.333 376.160,178.457 367.008,178.646 366.817 C 178.818 366.643,179.028 364.850,179.113 362.833 C 179.347 357.253,180.322 353.095,182.256 349.434 C 183.673 346.753,188.312 343.011,190.230 343.003 C 190.632 343.001,191.053 342.850,191.167 342.667 C 191.291 342.466,193.608 342.333,197.000 342.333 C 200.392 342.333,202.709 342.466,202.833 342.667 C 202.947 342.850,203.368 343.001,203.770 343.003 C 206.485 343.015,211.667 348.445,211.667 351.279 C 211.667 351.654,211.797 352.041,211.957 352.140 C 212.117 352.239,212.335 353.035,212.443 353.910 C 212.550 354.784,212.788 356.175,212.971 357.000 C 213.177 357.928,213.310 368.823,213.319 385.583 L 213.333 412.667 223.007 412.667 L 232.680 412.667 232.573 381.417 C 232.458 348.124,232.441 347.741,230.791 343.000 C 230.206 341.317,227.995 336.590,227.673 336.333 C 227.559 336.242,227.029 335.567,226.497 334.833 C 224.590 332.204,220.398 328.912,217.126 327.474 C 214.077 326.135,213.886 326.061,213.000 325.880 C 212.542 325.787,210.667 325.401,208.833 325.023 C 205.417 324.318,199.621 324.098,198.667 324.635 M295.952 324.493 C 295.864 324.580,294.377 324.886,292.646 325.173 C 287.781 325.980,287.544 326.027,286.833 326.326 C 286.467 326.481,285.354 326.857,284.360 327.162 C 282.651 327.687,277.692 329.912,277.333 330.314 C 277.242 330.417,276.717 330.726,276.167 331.000 C 275.617 331.274,275.047 331.687,274.900 331.916 C 274.753 332.146,274.439 332.333,274.201 332.333 C 273.963 332.333,273.258 332.826,272.634 333.428 C 272.011 334.030,271.157 334.761,270.737 335.052 C 268.048 336.917,262.522 343.187,260.703 346.439 C 260.377 347.022,259.734 348.175,259.275 349.000 C 258.480 350.431,257.138 353.745,256.779 355.167 C 256.687 355.533,256.485 356.133,256.331 356.500 C 256.176 356.867,255.958 357.617,255.844 358.167 C 255.731 358.717,255.470 359.842,255.263 360.667 C 254.736 362.777,254.768 376.353,255.306 378.500 C 255.535 379.417,255.801 380.730,255.897 381.419 C 255.992 382.107,256.205 382.754,256.369 382.855 C 256.533 382.956,256.668 383.368,256.669 383.770 C 256.670 384.171,256.895 384.930,257.169 385.455 C 257.443 385.980,257.667 386.562,257.667 386.748 C 257.667 387.150,260.692 393.426,261.002 393.667 C 261.120 393.758,261.500 394.321,261.847 394.917 C 262.194 395.512,262.595 396.000,262.739 396.000 C 262.882 396.000,263.002 396.188,263.005 396.417 C 263.018 397.567,272.476 407.000,273.616 407.000 C 273.797 407.000,273.994 407.131,274.056 407.292 C 274.198 407.664,277.994 409.945,280.167 410.962 C 281.083 411.392,282.231 411.951,282.718 412.205 C 283.205 412.459,283.887 412.667,284.235 412.667 C 284.582 412.667,285.009 412.793,285.183 412.946 C 285.497 413.224,286.694 413.509,291.833 414.534 C 294.999 415.164,305.235 415.248,307.833 414.664 C 309.745 414.234,311.874 413.821,313.925 413.480 C 314.708 413.350,315.430 413.114,315.528 412.955 C 315.626 412.796,315.911 412.667,316.162 412.667 C 316.413 412.667,317.755 412.142,319.144 411.500 C 320.533 410.858,321.766 410.333,321.885 410.333 C 322.125 410.333,327.405 407.003,327.667 406.686 C 327.758 406.575,328.283 406.198,328.833 405.848 C 331.630 404.067,338.667 396.559,338.667 395.356 C 338.667 395.160,338.817 395.000,339.000 395.000 C 339.183 395.000,339.333 394.782,339.333 394.517 C 339.333 394.251,339.523 393.913,339.755 393.767 C 340.179 393.498,342.169 389.645,343.164 387.167 C 343.458 386.433,343.842 385.573,344.016 385.255 C 344.191 384.936,344.333 384.308,344.333 383.858 C 344.333 383.408,344.483 382.947,344.667 382.833 C 344.850 382.720,345.000 382.176,345.000 381.625 C 345.000 381.074,345.152 380.339,345.337 379.993 C 346.568 377.694,346.559 362.290,345.326 359.986 C 345.147 359.651,345.000 359.040,345.000 358.629 C 345.000 357.691,344.662 356.597,343.004 352.167 C 342.481 350.768,340.822 347.495,340.583 347.389 C 340.446 347.328,340.333 347.078,340.333 346.833 C 340.333 346.589,340.215 346.339,340.070 346.278 C 339.925 346.217,339.334 345.391,338.756 344.443 C 335.891 339.744,327.075 331.748,322.500 329.700 C 322.133 329.536,320.858 328.954,319.667 328.407 C 318.475 327.860,316.900 327.235,316.167 327.017 C 315.433 326.799,314.533 326.491,314.167 326.333 C 313.800 326.175,313.050 325.975,312.500 325.889 C 311.950 325.804,309.728 325.418,307.561 325.033 C 303.985 324.398,296.400 324.044,295.952 324.493 M113.667 369.833 L 113.667 412.667 123.333 412.667 L 133.000 412.667 133.000 369.833 L 133.000 327.000 123.333 327.000 L 113.667 327.000 113.667 369.833 M41.167 328.319 C 39.517 328.455,37.792 328.673,37.333 328.803 C 36.875 328.934,35.825 329.196,35.000 329.386 C 31.784 330.126,29.823 330.844,25.667 332.802 C 24.462 333.370,23.292 334.042,23.000 334.333 C 21.123 336.210,20.000 335.648,20.000 332.833 L 20.000 330.333 10.667 330.333 L 1.333 330.333 1.333 389.500 L 1.333 448.667 10.667 448.667 L 20.000 448.667 20.000 430.186 C 20.000 419.354,20.126 411.628,20.305 411.517 C 20.649 411.305,22.393 411.895,22.660 412.314 C 22.928 412.736,28.652 415.457,30.333 415.962 C 31.158 416.210,32.399 416.620,33.090 416.873 C 33.781 417.126,34.785 417.333,35.320 417.333 C 35.856 417.333,36.373 417.462,36.470 417.618 C 37.154 418.724,52.796 418.733,57.167 417.629 C 64.495 415.779,68.947 413.871,73.645 410.564 C 76.729 408.394,82.962 402.505,83.707 401.057 C 83.959 400.568,84.259 400.092,84.373 400.000 C 84.908 399.569,87.333 395.838,87.333 395.445 C 87.333 395.200,87.483 395.000,87.667 395.000 C 87.850 395.000,88.000 394.700,88.000 394.333 C 88.000 393.967,88.112 393.666,88.250 393.665 C 88.388 393.665,88.776 392.952,89.113 392.082 C 89.450 391.212,89.856 390.200,90.014 389.833 C 92.652 383.724,93.581 368.263,91.665 362.333 C 91.517 361.875,90.978 360.150,90.466 358.500 C 89.561 355.580,86.782 349.702,85.975 349.000 C 85.869 348.908,85.500 348.346,85.153 347.750 C 84.806 347.154,84.405 346.667,84.261 346.667 C 84.118 346.667,84.000 346.506,84.000 346.310 C 84.000 346.113,83.813 345.759,83.583 345.522 C 83.354 345.285,82.642 344.445,82.000 343.656 C 80.452 341.753,77.151 338.607,76.141 338.073 C 75.697 337.838,75.333 337.538,75.333 337.406 C 75.332 337.274,74.620 336.723,73.749 336.181 C 72.879 335.639,72.092 335.114,72.000 335.014 C 71.523 334.496,65.314 331.333,64.775 331.333 C 64.532 331.333,64.333 331.183,64.333 331.000 C 64.333 330.817,63.913 330.667,63.400 330.667 C 62.887 330.667,62.324 330.526,62.150 330.354 C 60.716 328.940,48.285 327.735,41.167 328.319 M306.833 342.667 C 306.947 342.850,307.368 343.002,307.770 343.005 C 310.030 343.020,314.881 345.635,317.942 348.489 C 318.735 349.228,319.523 349.883,319.692 349.944 C 319.862 350.006,320.000 350.200,320.000 350.376 C 320.000 350.552,320.361 351.085,320.801 351.560 C 321.242 352.035,321.804 352.816,322.051 353.295 C 322.297 353.775,322.592 354.242,322.706 354.333 C 323.062 354.621,324.667 358.328,324.667 358.865 C 324.667 359.147,324.846 359.705,325.064 360.105 C 325.819 361.488,326.102 364.187,326.102 370.000 C 326.102 375.813,325.819 378.512,325.064 379.895 C 324.846 380.295,324.667 380.869,324.667 381.171 C 324.667 381.940,322.353 386.667,321.977 386.667 C 321.806 386.667,321.667 386.876,321.667 387.131 C 321.667 387.387,321.254 388.044,320.750 388.591 C 320.246 389.137,319.526 389.941,319.151 390.376 C 316.482 393.471,310.118 397.000,307.207 397.000 C 306.748 397.000,306.280 397.150,306.167 397.333 C 305.903 397.760,295.918 397.779,294.524 397.356 C 293.961 397.185,292.825 396.857,292.000 396.626 C 288.551 395.662,284.863 393.520,282.318 391.002 C 281.173 389.869,278.000 385.618,278.000 385.217 C 278.000 385.108,277.640 384.227,277.200 383.259 C 274.327 376.943,273.713 364.869,275.992 359.500 C 276.225 358.950,276.562 358.125,276.741 357.667 C 279.373 350.902,285.299 345.225,291.667 343.367 C 292.492 343.126,293.467 342.805,293.833 342.654 C 294.810 342.250,306.583 342.262,306.833 342.667 M50.000 345.676 C 51.192 345.853,52.917 346.155,53.833 346.347 C 54.750 346.539,55.913 346.782,56.417 346.886 C 56.921 346.990,57.333 347.209,57.333 347.371 C 57.333 347.534,57.561 347.667,57.840 347.667 C 58.119 347.667,58.941 348.042,59.667 348.500 C 60.393 348.958,61.148 349.333,61.345 349.333 C 63.125 349.333,71.000 359.660,71.000 361.994 C 71.000 362.342,71.125 362.704,71.277 362.799 C 71.523 362.951,71.846 364.495,72.536 368.833 C 73.141 372.633,72.256 383.596,71.297 384.189 C 71.133 384.290,71.000 384.630,71.000 384.946 C 71.000 385.515,68.495 390.666,68.059 390.994 C 67.933 391.089,67.385 391.767,66.842 392.500 C 66.298 393.233,65.496 394.119,65.058 394.469 C 64.620 394.819,64.015 395.357,63.714 395.665 C 62.134 397.281,57.192 399.901,55.075 400.246 C 54.475 400.343,53.904 400.553,53.806 400.712 C 53.708 400.870,52.670 401.000,51.500 401.000 C 50.330 401.000,49.280 401.150,49.167 401.333 C 49.053 401.517,48.078 401.667,47.000 401.667 C 45.922 401.667,44.947 401.517,44.833 401.333 C 44.720 401.150,43.670 401.000,42.500 401.000 C 41.330 401.000,40.280 400.850,40.167 400.667 C 40.053 400.483,39.632 400.332,39.230 400.331 C 38.829 400.330,38.115 400.128,37.644 399.883 C 37.174 399.637,36.411 399.341,35.948 399.225 C 32.690 398.408,24.667 390.960,24.667 388.754 C 24.667 388.523,24.550 388.333,24.406 388.333 C 24.143 388.333,23.436 386.860,22.966 385.333 C 20.423 377.063,20.348 369.410,22.741 362.167 C 23.114 361.036,24.080 358.919,24.337 358.667 C 24.430 358.575,24.805 357.908,25.170 357.185 C 25.993 355.555,31.088 350.272,32.667 349.412 C 33.308 349.062,34.508 348.404,35.333 347.949 C 38.736 346.071,45.546 345.016,50.000 345.676 " stroke="none" fill="#040404" fill-rule="evenodd"></path><path id="path2" d="M175.528 15.288 C 175.430 15.446,175.943 15.576,176.667 15.576 C 177.391 15.576,177.903 15.446,177.805 15.288 C 177.707 15.130,177.195 15.000,176.667 15.000 C 176.138 15.000,175.626 15.130,175.528 15.288 M171.465 19.805 C 171.365 20.065,171.338 20.702,171.403 21.222 C 171.501 21.993,171.553 21.906,171.687 20.750 C 171.856 19.292,171.782 18.979,171.465 19.805 M201.417 28.833 C 201.421 29.567,201.489 29.827,201.569 29.413 C 201.649 28.998,201.646 28.398,201.562 28.079 C 201.479 27.761,201.414 28.100,201.417 28.833 M201.406 59.564 C 201.366 66.015,201.446 71.364,201.583 71.449 C 201.811 71.590,201.805 62.532,201.571 52.000 C 201.520 49.708,201.446 53.112,201.406 59.564 M205.750 74.896 C 206.071 74.980,206.596 74.980,206.917 74.896 C 207.237 74.813,206.975 74.744,206.333 74.744 C 205.692 74.744,205.429 74.813,205.750 74.896 M204.917 90.911 C 205.696 90.981,206.971 90.981,207.750 90.911 C 208.529 90.841,207.892 90.783,206.333 90.783 C 204.775 90.783,204.137 90.841,204.917 90.911 M202.751 232.500 C 202.754 233.233,202.823 233.494,202.902 233.079 C 202.982 232.665,202.979 232.065,202.896 231.746 C 202.812 231.427,202.747 231.767,202.751 232.500 M196.100 236.000 C 196.100 237.008,196.162 237.421,196.239 236.917 C 196.315 236.412,196.315 235.588,196.239 235.083 C 196.162 234.579,196.100 234.992,196.100 236.000 M196.461 242.500 C 196.461 244.700,196.515 245.557,196.580 244.404 C 196.646 243.251,196.645 241.451,196.579 240.404 C 196.513 239.357,196.460 240.300,196.461 242.500 M122.250 277.908 C 122.846 277.982,123.821 277.982,124.417 277.908 C 125.013 277.834,124.525 277.773,123.333 277.773 C 122.142 277.773,121.654 277.834,122.250 277.908 M122.417 303.905 C 122.921 303.982,123.746 303.982,124.250 303.905 C 124.754 303.829,124.342 303.767,123.333 303.767 C 122.325 303.767,121.912 303.829,122.417 303.905 M133.333 369.600 L 133.500 412.500 133.585 369.851 C 133.631 346.394,133.556 327.089,133.418 326.951 C 133.280 326.813,133.242 346.005,133.333 369.600 M45.750 327.576 C 46.438 327.648,47.563 327.648,48.250 327.576 C 48.938 327.504,48.375 327.445,47.000 327.445 C 45.625 327.445,45.063 327.504,45.750 327.576 M42.254 327.902 C 42.669 327.982,43.269 327.979,43.587 327.896 C 43.906 327.812,43.567 327.747,42.833 327.751 C 42.100 327.754,41.839 327.823,42.254 327.902 M4.500 329.902 C 12.842 330.138,20.257 330.145,20.116 329.917 C 20.030 329.779,15.732 329.698,10.564 329.737 C 5.395 329.776,2.667 329.850,4.500 329.902 M233.000 383.900 C 232.908 399.887,232.947 412.853,233.085 412.715 C 233.224 412.576,233.299 399.496,233.252 383.648 L 233.167 354.833 233.000 383.900 M21.023 373.194 C 21.036 373.912,21.174 374.800,21.330 375.167 C 21.506 375.582,21.543 375.141,21.427 374.000 C 21.203 371.805,20.991 371.381,21.023 373.194 " stroke="none" fill="#7c7c7c" fill-rule="evenodd"></path><path id="path3" d="M216.088 1.239 C 216.595 1.316,217.345 1.314,217.755 1.235 C 218.165 1.156,217.750 1.093,216.833 1.095 C 215.917 1.098,215.581 1.163,216.088 1.239 M213.430 2.502 C 212.768 3.145,212.288 3.731,212.363 3.805 C 212.438 3.878,213.078 3.352,213.784 2.636 C 215.379 1.018,215.077 0.903,213.430 2.502 M219.783 2.425 C 220.361 3.025,221.012 3.812,221.230 4.175 C 221.449 4.537,221.636 4.673,221.647 4.477 C 221.671 4.045,219.394 1.333,219.007 1.333 C 218.857 1.333,219.206 1.824,219.783 2.425 M212.103 6.500 C 212.105 7.600,212.167 8.010,212.242 7.411 C 212.316 6.812,212.314 5.912,212.238 5.411 C 212.162 4.910,212.101 5.400,212.103 6.500 M221.360 8.341 C 221.181 11.783,215.344 12.797,213.048 9.785 L 212.322 8.833 212.716 9.752 C 213.347 11.227,216.341 12.541,217.934 12.043 C 219.810 11.456,221.944 9.204,221.547 8.230 C 221.448 7.986,221.376 8.029,221.360 8.341 M172.861 17.361 C 172.357 17.927,172.011 18.456,172.093 18.537 C 172.174 18.618,172.644 18.156,173.137 17.509 C 174.243 16.059,174.093 15.979,172.861 17.361 M171.762 21.167 C 171.765 22.083,171.829 22.419,171.906 21.912 C 171.982 21.405,171.980 20.655,171.901 20.245 C 171.822 19.835,171.760 20.250,171.762 21.167 M214.660 23.110 C 211.473 24.588,211.656 22.995,211.744 48.395 L 211.822 70.833 211.994 48.110 L 212.167 25.387 212.940 24.563 C 215.034 22.335,219.250 22.837,220.781 25.496 C 221.043 25.953,221.220 29.891,221.333 37.833 L 221.500 49.500 227.980 49.591 C 231.543 49.641,234.386 49.608,234.297 49.519 C 234.207 49.429,231.329 49.339,227.900 49.319 L 221.667 49.281 221.667 38.162 C 221.667 31.095,221.537 26.701,221.311 26.105 C 220.304 23.447,217.072 21.992,214.660 23.110 M172.000 23.596 C 172.001 23.947,174.305 26.473,174.472 26.306 C 174.551 26.227,174.027 25.532,173.308 24.761 C 172.588 23.990,172.000 23.466,172.000 23.596 M194.480 23.852 C 193.855 24.352,193.858 24.358,194.561 24.018 C 195.898 23.373,198.008 23.598,199.302 24.524 L 200.500 25.381 199.346 24.357 C 198.015 23.177,195.632 22.929,194.480 23.852 M179.295 25.328 C 178.674 25.875,178.287 26.325,178.435 26.328 C 178.582 26.331,179.182 25.884,179.768 25.335 C 181.151 24.038,180.765 24.033,179.295 25.328 M192.027 26.283 C 190.643 28.869,192.847 34.378,195.241 34.319 C 195.600 34.310,195.335 34.041,194.569 33.637 C 192.349 32.465,190.958 27.842,192.394 26.406 C 192.611 26.189,192.699 25.921,192.588 25.810 C 192.478 25.700,192.225 25.913,192.027 26.283 M176.083 26.563 C 176.404 26.647,176.929 26.647,177.250 26.563 C 177.571 26.479,177.308 26.411,176.667 26.411 C 176.025 26.411,175.762 26.479,176.083 26.563 M201.107 29.000 C 201.107 30.192,201.167 30.679,201.241 30.083 C 201.315 29.488,201.315 28.512,201.241 27.917 C 201.167 27.321,201.107 27.808,201.107 29.000 M199.944 32.627 C 199.883 32.788,199.236 33.238,198.505 33.627 C 197.774 34.015,197.353 34.333,197.569 34.333 C 198.142 34.333,200.333 32.986,200.333 32.634 C 200.333 32.249,200.089 32.245,199.944 32.627 M174.333 37.380 L 173.500 38.079 174.358 37.570 C 174.830 37.291,175.580 36.993,176.024 36.910 L 176.833 36.757 176.000 36.719 C 175.542 36.699,174.792 36.996,174.333 37.380 M178.167 36.911 C 178.717 36.991,179.692 37.429,180.333 37.885 L 181.500 38.715 180.346 37.691 C 179.543 36.978,178.884 36.682,178.179 36.717 L 177.167 36.767 178.167 36.911 M172.387 39.849 C 172.157 40.354,172.000 42.448,172.000 45.010 L 172.000 49.322 163.083 49.417 L 154.167 49.511 163.000 49.584 C 167.858 49.624,172.006 49.546,172.218 49.412 C 172.505 49.229,173.081 38.997,172.804 39.000 C 172.787 39.000,172.600 39.382,172.387 39.849 M193.500 45.333 C 192.207 46.190,192.648 46.190,194.246 45.333 C 194.930 44.967,195.267 44.668,194.995 44.669 C 194.723 44.670,194.050 44.969,193.500 45.333 M198.774 45.161 C 199.291 45.431,199.999 45.993,200.346 46.409 C 200.694 46.826,200.983 47.030,200.989 46.863 C 201.006 46.389,198.940 44.666,198.357 44.669 C 198.068 44.670,198.255 44.891,198.774 45.161 M192.061 46.739 C 191.567 47.233,191.485 95.181,191.977 95.486 C 192.148 95.591,192.396 95.502,192.528 95.287 C 192.679 95.044,192.625 94.986,192.385 95.135 C 192.095 95.314,192.000 89.390,192.000 71.214 C 192.000 52.189,192.089 47.024,192.417 46.907 C 192.646 46.825,192.748 46.665,192.644 46.551 C 192.541 46.437,192.278 46.522,192.061 46.739 M201.091 59.167 C 201.035 69.049,201.108 71.314,201.500 72.000 C 201.802 72.529,201.981 72.645,201.988 72.317 C 201.995 72.032,201.852 71.652,201.671 71.471 C 201.470 71.270,201.306 66.469,201.250 59.154 L 201.158 47.167 201.091 59.167 M235.333 49.871 C 237.140 50.097,243.953 50.157,243.410 49.942 C 243.093 49.816,240.958 49.725,238.667 49.740 C 236.375 49.755,234.875 49.814,235.333 49.871 M152.909 51.909 C 152.186 53.504,152.405 53.724,153.152 52.152 C 153.466 51.488,153.665 50.887,153.594 50.816 C 153.522 50.744,153.214 51.236,152.909 51.909 M245.333 51.222 C 245.333 51.406,245.446 51.668,245.583 51.805 C 245.721 51.943,246.087 52.680,246.398 53.444 C 246.709 54.208,246.971 54.575,246.981 54.260 C 246.992 53.945,246.684 53.120,246.298 52.427 C 245.473 50.948,245.333 50.773,245.333 51.222 M151.260 56.000 C 151.147 56.458,150.958 57.208,150.842 57.667 C 150.710 58.185,150.830 58.065,151.160 57.351 C 151.452 56.718,151.640 55.968,151.578 55.684 C 151.508 55.359,151.390 55.477,151.260 56.000 M247.681 58.000 C 247.692 58.598,248.638 60.333,248.655 59.788 C 248.661 59.580,248.443 58.980,248.169 58.455 C 247.895 57.930,247.675 57.725,247.681 58.000 M150.372 58.889 C 150.351 59.104,150.236 59.554,150.118 59.889 C 149.950 60.363,149.995 60.415,150.316 60.119 C 150.543 59.909,150.658 59.459,150.570 59.119 C 150.482 58.778,150.393 58.675,150.372 58.889 M149.372 62.549 C 149.123 63.305,149.000 64.128,149.100 64.378 C 149.199 64.628,149.293 64.451,149.307 63.983 C 149.321 63.516,149.497 62.969,149.698 62.769 C 149.898 62.568,150.009 62.128,149.944 61.789 C 149.866 61.382,149.673 61.637,149.372 62.549 M249.492 64.167 C 249.634 64.533,249.878 65.283,250.035 65.833 C 250.292 66.730,250.306 66.698,250.173 65.529 C 250.091 64.811,249.847 64.061,249.630 63.862 C 249.332 63.589,249.298 63.663,249.492 64.167 M147.260 70.000 C 147.147 70.458,146.958 71.208,146.842 71.667 C 146.710 72.185,146.830 72.065,147.160 71.351 C 147.452 70.718,147.640 69.968,147.578 69.684 C 147.508 69.359,147.390 69.477,147.260 70.000 M251.694 71.000 C 251.685 71.275,251.889 72.175,252.149 73.000 C 252.409 73.825,252.630 74.275,252.639 74.000 C 252.649 73.725,252.444 72.825,252.184 72.000 C 251.924 71.175,251.704 70.725,251.694 71.000 M210.002 73.606 C 209.171 74.481,209.069 74.683,209.644 74.309 C 210.331 73.862,211.659 72.288,211.291 72.356 C 211.222 72.369,210.642 72.931,210.002 73.606 M146.167 73.667 C 146.042 74.061,146.014 74.459,146.106 74.550 C 146.197 74.642,146.375 74.394,146.500 74.000 C 146.625 73.606,146.653 73.208,146.561 73.116 C 146.469 73.025,146.292 73.272,146.167 73.667 M204.929 75.060 C 205.687 75.361,207.343 75.348,208.142 75.035 C 208.524 74.885,207.887 74.793,206.572 74.808 C 205.355 74.822,204.616 74.935,204.929 75.060 M145.397 76.449 C 145.179 77.053,145.007 77.762,145.016 78.024 C 145.025 78.286,145.260 77.848,145.539 77.051 C 145.818 76.254,145.990 75.546,145.921 75.476 C 145.851 75.407,145.616 75.844,145.397 76.449 M253.467 77.000 C 253.748 78.581,255.257 83.701,255.511 83.934 C 255.651 84.062,255.681 83.867,255.578 83.500 C 255.476 83.133,255.083 81.696,254.706 80.307 C 254.329 78.917,253.863 77.417,253.670 76.974 L 253.319 76.167 253.467 77.000 M144.561 79.127 C 144.436 79.454,144.343 79.971,144.354 80.277 C 144.368 80.646,144.484 80.562,144.697 80.029 C 144.874 79.586,144.967 79.069,144.904 78.879 C 144.841 78.689,144.686 78.801,144.561 79.127 M144.039 81.223 C 144.017 81.437,143.903 81.887,143.784 82.223 C 143.617 82.696,143.661 82.748,143.982 82.452 C 144.210 82.242,144.324 81.792,144.237 81.452 C 144.149 81.112,144.060 81.009,144.039 81.223 M143.045 84.501 C 142.803 85.170,142.674 85.785,142.758 85.869 C 142.984 86.095,143.754 84.096,143.609 83.660 C 143.540 83.454,143.287 83.833,143.045 84.501 M256.367 86.878 C 256.349 87.270,256.567 88.095,256.852 88.712 C 257.364 89.821,257.337 89.581,256.675 87.167 C 256.469 86.412,256.393 86.341,256.367 86.878 M141.542 90.042 C 141.264 91.431,141.533 91.700,141.833 90.333 C 141.960 89.757,141.994 89.216,141.909 89.131 C 141.824 89.046,141.659 89.456,141.542 90.042 M202.833 90.650 C 202.458 90.802,203.404 90.849,205.000 90.758 C 207.572 90.611,209.157 90.800,214.000 91.830 C 215.339 92.115,212.323 91.130,210.579 90.713 C 208.779 90.283,203.841 90.242,202.833 90.650 M200.000 91.338 C 199.648 91.569,199.846 91.602,200.667 91.452 C 202.104 91.188,202.375 90.998,201.306 91.005 C 200.862 91.008,200.275 91.158,200.000 91.338 M140.749 92.991 C 140.163 94.869,140.261 95.465,140.869 93.727 C 141.147 92.936,141.327 92.147,141.269 91.974 C 141.212 91.801,140.977 92.259,140.749 92.991 M195.667 93.000 C 195.667 93.183,195.460 93.333,195.207 93.333 C 194.955 93.333,194.562 93.558,194.333 93.833 C 194.047 94.179,194.034 94.333,194.293 94.333 C 194.498 94.333,194.667 94.183,194.667 94.000 C 194.667 93.817,194.854 93.662,195.083 93.656 C 195.795 93.638,196.922 92.667,196.230 92.667 C 195.920 92.667,195.667 92.817,195.667 93.000 M258.005 93.564 C 258.002 93.965,258.150 94.387,258.333 94.500 C 258.758 94.762,258.758 93.990,258.333 93.333 C 258.071 92.927,258.009 92.970,258.005 93.564 M258.705 95.562 C 258.657 96.481,259.281 98.163,259.565 97.879 C 259.683 97.762,259.611 97.328,259.407 96.916 C 259.202 96.504,258.969 95.867,258.889 95.500 C 258.756 94.888,258.741 94.893,258.705 95.562 M140.039 95.556 C 140.017 95.770,139.903 96.220,139.784 96.556 C 139.617 97.030,139.661 97.081,139.982 96.785 C 140.210 96.576,140.324 96.126,140.237 95.785 C 140.149 95.445,140.060 95.342,140.039 95.556 M222.209 96.652 C 222.552 97.102,223.158 97.809,223.556 98.223 C 223.953 98.636,224.512 99.309,224.798 99.717 C 225.084 100.126,225.392 100.386,225.483 100.295 C 225.573 100.205,224.733 99.164,223.615 97.982 C 222.498 96.800,221.865 96.202,222.209 96.652 M139.372 97.889 C 139.351 98.104,139.236 98.554,139.118 98.889 C 138.950 99.363,138.995 99.415,139.316 99.119 C 139.543 98.909,139.658 98.459,139.570 98.119 C 139.482 97.778,139.393 97.675,139.372 97.889 M138.417 101.632 C 137.849 103.480,137.914 104.092,138.527 102.679 C 138.802 102.044,138.984 101.243,138.931 100.900 C 138.870 100.508,138.678 100.781,138.417 101.632 M203.833 102.000 L 203.167 102.286 203.833 102.277 C 204.200 102.271,204.875 102.147,205.333 102.000 L 206.167 101.733 205.333 101.723 C 204.875 101.718,204.200 101.842,203.833 102.000 M207.377 101.821 C 207.462 101.907,208.477 102.197,209.633 102.466 C 212.029 103.025,212.110 102.737,209.734 102.110 C 208.097 101.678,207.113 101.557,207.377 101.821 M260.351 102.333 C 260.347 102.608,260.560 103.433,260.824 104.167 C 261.134 105.029,261.309 105.249,261.319 104.788 C 261.327 104.397,261.114 103.572,260.846 102.955 C 260.579 102.338,260.356 102.058,260.351 102.333 M198.576 104.750 C 196.872 106.348,194.746 109.524,195.126 109.904 C 195.212 109.990,195.706 109.197,196.223 108.142 C 196.868 106.824,197.769 105.718,199.099 104.611 C 200.163 103.725,200.901 103.000,200.738 103.000 C 200.575 103.000,199.602 103.787,198.576 104.750 M212.496 103.436 C 212.860 103.655,214.023 104.703,215.079 105.765 C 216.136 106.827,217.000 107.576,217.000 107.429 C 217.000 106.985,212.710 102.998,212.256 103.020 C 212.023 103.030,212.132 103.218,212.496 103.436 M227.344 103.712 C 227.338 103.828,227.557 104.353,227.831 104.879 C 228.105 105.404,228.330 105.600,228.331 105.314 C 228.333 104.825,227.367 103.257,227.344 103.712 M137.576 104.535 C 137.443 104.668,137.333 105.008,137.333 105.289 C 137.333 105.664,137.432 105.701,137.704 105.429 C 137.908 105.225,138.017 104.886,137.947 104.675 C 137.877 104.464,137.710 104.401,137.576 104.535 M261.344 106.667 C 261.344 106.942,261.489 107.392,261.667 107.667 C 261.954 108.111,261.990 108.111,261.990 107.667 C 261.990 107.392,261.844 106.942,261.667 106.667 C 261.379 106.222,261.344 106.222,261.344 106.667 M136.705 108.033 C 136.501 108.619,136.340 109.340,136.349 109.633 C 136.358 109.927,136.594 109.515,136.873 108.718 C 137.152 107.921,137.312 107.201,137.229 107.117 C 137.145 107.034,136.910 107.446,136.705 108.033 M217.180 108.500 C 217.916 110.631,218.116 111.723,218.126 113.667 C 218.133 114.858,218.029 116.358,217.895 117.000 C 217.716 117.862,217.784 117.775,218.155 116.667 C 218.987 114.180,218.607 110.409,217.323 108.414 C 216.990 107.896,216.975 107.905,217.180 108.500 M229.029 109.167 C 229.060 110.305,229.615 111.368,229.638 110.333 C 229.648 109.875,229.511 109.275,229.333 109.000 C 229.067 108.587,229.013 108.616,229.029 109.167 M262.023 110.064 C 262.011 110.557,262.150 111.053,262.333 111.167 C 262.517 111.280,262.691 111.926,262.720 112.603 C 262.768 113.707,262.786 113.731,262.900 112.833 C 262.970 112.283,262.806 111.233,262.537 110.500 C 262.103 109.320,262.044 109.270,262.023 110.064 M194.520 112.750 C 194.417 113.529,194.462 114.692,194.621 115.333 C 194.860 116.302,194.911 116.063,194.922 113.917 C 194.936 111.029,194.800 110.633,194.520 112.750 M229.779 113.667 C 229.779 115.042,229.838 115.604,229.909 114.917 C 229.981 114.229,229.981 113.104,229.909 112.417 C 229.838 111.729,229.779 112.292,229.779 113.667 M135.240 114.111 C 134.841 115.124,134.936 115.977,135.366 115.240 C 135.556 114.913,135.659 114.388,135.596 114.073 C 135.490 113.550,135.459 113.553,135.240 114.111 M263.216 115.833 C 263.327 116.750,263.475 117.563,263.543 117.639 C 263.804 117.931,263.605 115.467,263.316 114.833 C 263.112 114.385,263.079 114.711,263.216 115.833 M134.597 117.333 C 134.020 121.322,133.980 122.650,134.511 120.167 C 134.785 118.883,134.966 117.383,134.912 116.833 C 134.830 115.998,134.778 116.080,134.597 117.333 M229.240 117.111 C 228.869 118.055,228.929 118.537,229.365 118.102 C 229.565 117.902,229.673 117.459,229.605 117.119 C 229.485 116.522,229.472 116.522,229.240 117.111 M195.011 117.564 C 195.005 117.782,195.150 118.053,195.333 118.167 C 195.517 118.280,195.667 118.645,195.667 118.979 C 195.667 119.312,195.892 119.772,196.167 120.000 C 196.512 120.287,196.667 120.299,196.667 120.041 C 196.667 119.835,196.517 119.667,196.333 119.667 C 196.150 119.667,196.000 119.395,196.000 119.064 C 196.000 118.400,195.028 116.925,195.011 117.564 M263.705 119.000 C 263.690 119.458,263.822 120.058,264.000 120.333 C 264.411 120.970,264.411 120.285,264.000 119.000 L 263.733 118.167 263.705 119.000 M228.566 120.464 C 228.429 120.811,228.396 121.174,228.492 121.270 C 228.796 121.574,229.064 121.076,228.936 120.443 C 228.820 119.863,228.802 119.864,228.566 120.464 M196.996 121.167 C 197.441 121.898,200.089 124.096,200.752 124.285 C 200.980 124.349,200.792 124.140,200.333 123.819 C 199.875 123.498,198.845 122.619,198.045 121.867 C 197.245 121.115,196.773 120.800,196.996 121.167 M213.391 123.192 C 212.597 123.820,212.072 124.332,212.224 124.330 C 212.376 124.328,213.159 123.803,213.964 123.163 C 214.769 122.524,215.294 122.012,215.130 122.026 C 214.967 122.040,214.184 122.565,213.391 123.192 M227.737 122.677 C 227.515 123.033,227.339 123.514,227.347 123.745 C 227.354 123.977,227.591 123.741,227.873 123.221 C 228.459 122.140,228.349 121.699,227.737 122.677 M264.612 124.667 C 264.899 128.099,264.882 139.283,264.585 142.333 L 264.342 144.833 264.854 141.833 C 265.406 138.595,265.317 127.640,264.710 124.000 C 264.437 122.369,264.426 122.442,264.612 124.667 M210.717 124.750 C 210.432 125.035,209.089 125.167,206.466 125.167 C 204.358 125.167,202.978 125.264,203.399 125.383 C 205.367 125.939,210.639 125.495,211.427 124.707 C 211.649 124.484,211.665 124.333,211.467 124.333 C 211.283 124.333,210.946 124.521,210.717 124.750 M133.548 128.083 C 133.439 129.962,133.476 132.475,133.629 133.667 C 133.862 135.470,133.916 134.896,133.954 130.250 C 134.006 123.922,133.841 123.040,133.548 128.083 M222.000 130.892 L 221.167 131.743 222.083 131.167 C 222.588 130.849,223.000 130.457,223.000 130.295 C 223.000 129.891,222.950 129.921,222.000 130.892 M191.827 132.062 C 191.734 132.306,191.699 137.529,191.750 143.669 L 191.843 154.833 191.921 143.583 C 192.000 132.350,192.066 131.780,193.159 132.873 C 193.456 133.170,193.775 133.336,193.868 133.243 C 193.962 133.149,193.579 132.746,193.018 132.346 C 192.238 131.791,191.957 131.724,191.827 132.062 M220.063 132.346 C 219.662 132.720,219.333 133.102,219.333 133.195 C 219.333 133.464,220.978 132.194,220.990 131.917 C 221.005 131.537,220.858 131.606,220.063 132.346 M196.000 134.500 C 196.458 134.762,196.983 134.976,197.167 134.976 C 197.350 134.976,197.125 134.762,196.667 134.500 C 196.208 134.238,195.683 134.024,195.500 134.024 C 195.317 134.024,195.542 134.238,196.000 134.500 M216.333 134.528 C 215.868 134.786,215.721 134.988,216.000 134.984 C 216.275 134.981,216.791 134.759,217.147 134.489 C 217.949 133.883,217.454 133.906,216.333 134.528 M206.500 136.667 L 203.167 136.871 206.167 136.916 C 207.817 136.941,209.767 136.837,210.500 136.686 C 212.079 136.359,211.561 136.357,206.500 136.667 M134.180 139.500 C 134.260 140.417,134.471 141.842,134.649 142.667 L 134.972 144.167 134.807 142.500 C 134.717 141.583,134.505 140.158,134.338 139.333 L 134.033 137.833 134.180 139.500 M135.029 144.667 C 135.039 144.942,135.176 145.467,135.333 145.833 L 135.620 146.500 135.638 145.833 C 135.648 145.467,135.511 144.942,135.333 144.667 C 135.046 144.222,135.012 144.222,135.029 144.667 M263.895 146.127 C 263.769 146.454,263.676 146.971,263.688 147.277 C 263.702 147.646,263.818 147.562,264.031 147.029 C 264.208 146.586,264.301 146.069,264.237 145.879 C 264.174 145.689,264.020 145.801,263.895 146.127 M135.667 148.127 C 135.667 148.402,135.817 148.720,136.000 148.833 C 136.183 148.947,136.333 148.814,136.333 148.539 C 136.333 148.264,136.183 147.947,136.000 147.833 C 135.817 147.720,135.667 147.852,135.667 148.127 M263.379 148.556 C 263.354 148.954,263.247 149.554,263.141 149.889 C 262.960 150.467,262.970 150.468,263.330 149.907 C 263.539 149.581,263.646 148.981,263.567 148.574 C 263.424 147.834,263.424 147.834,263.379 148.556 M136.346 150.045 C 136.339 150.345,136.557 151.020,136.831 151.545 C 137.472 152.774,137.483 152.088,136.846 150.622 C 136.579 150.005,136.354 149.745,136.346 150.045 M262.610 151.667 C 262.505 152.125,262.315 152.800,262.188 153.167 C 262.061 153.533,262.201 153.412,262.500 152.897 C 262.798 152.383,262.987 151.708,262.921 151.397 C 262.835 150.995,262.746 151.072,262.610 151.667 M138.024 154.833 C 138.024 155.017,138.238 155.542,138.500 156.000 C 138.762 156.458,138.976 156.683,138.976 156.500 C 138.976 156.317,138.762 155.792,138.500 155.333 C 138.238 154.875,138.024 154.650,138.024 154.833 M181.333 155.070 C 181.333 155.353,181.583 155.791,181.888 156.043 C 182.395 156.461,182.406 156.429,182.009 155.667 C 181.429 154.549,181.333 154.465,181.333 155.070 M190.854 156.183 C 189.623 158.060,186.274 158.970,184.228 157.982 C 183.525 157.642,183.522 157.648,184.147 158.148 C 185.925 159.573,190.099 158.284,191.376 155.917 C 191.853 155.032,191.485 155.219,190.854 156.183 M260.737 157.011 C 260.515 157.366,260.339 157.847,260.347 158.079 C 260.354 158.310,260.591 158.074,260.873 157.554 C 261.459 156.473,261.349 156.032,260.737 157.011 M140.401 160.493 C 140.799 161.314,141.183 161.928,141.253 161.858 C 141.404 161.708,140.057 159.000,139.831 159.000 C 139.745 159.000,140.002 159.672,140.401 160.493 M259.009 160.822 C 258.786 161.091,258.661 161.483,258.731 161.693 C 258.801 161.904,259.037 161.684,259.255 161.204 C 259.700 160.228,259.614 160.094,259.009 160.822 M141.667 163.087 C 141.667 163.475,144.066 167.307,144.571 167.726 C 144.854 167.960,144.367 167.030,143.490 165.659 C 141.693 162.851,141.667 162.814,141.667 163.087 M257.667 163.574 C 257.667 163.768,256.842 165.173,255.833 166.697 C 254.825 168.220,254.006 169.625,254.013 169.817 C 254.021 170.009,254.264 169.717,254.554 169.167 C 254.844 168.617,255.343 167.867,255.662 167.500 C 256.591 166.434,258.100 163.656,257.874 163.429 C 257.760 163.315,257.667 163.381,257.667 163.574 M252.226 171.705 C 251.525 172.600,251.075 173.327,251.226 173.320 C 251.535 173.306,253.789 170.339,253.613 170.179 C 253.551 170.122,252.927 170.809,252.226 171.705 M146.970 171.277 C 147.150 171.613,147.562 172.101,147.885 172.361 C 148.303 172.696,148.253 172.519,147.714 171.750 C 146.891 170.576,146.442 170.291,146.970 171.277 M149.062 173.833 C 149.461 174.292,149.838 174.667,149.901 174.667 C 149.964 174.667,149.770 174.292,149.469 173.833 C 149.169 173.375,148.792 173.000,148.631 173.000 C 148.469 173.000,148.664 173.375,149.062 173.833 M249.983 174.519 C 249.542 174.987,249.407 175.284,249.682 175.179 C 250.116 175.012,251.195 173.667,250.894 173.667 C 250.833 173.667,250.423 174.050,249.983 174.519 M150.333 175.283 C 150.333 175.580,155.839 180.959,156.833 181.633 C 157.200 181.882,156.636 181.279,155.579 180.293 C 154.523 179.307,152.911 177.718,151.996 176.763 C 151.082 175.807,150.333 175.141,150.333 175.283 M244.477 179.957 C 243.364 181.028,242.239 181.980,241.977 182.073 C 241.715 182.166,241.595 182.345,241.712 182.472 C 241.828 182.598,243.064 181.643,244.458 180.351 C 245.853 179.058,246.882 178.002,246.747 178.005 C 246.611 178.008,245.590 178.886,244.477 179.957 M159.255 183.637 C 159.854 184.203,160.516 184.667,160.727 184.667 C 160.938 184.667,161.049 184.623,160.972 184.570 C 160.896 184.517,160.233 184.053,159.500 183.540 L 158.167 182.607 159.255 183.637 M238.083 184.891 C 237.671 185.179,237.333 185.552,237.333 185.720 C 237.333 185.889,237.521 185.865,237.750 185.668 C 237.979 185.472,238.467 185.095,238.833 184.833 C 239.200 184.570,239.350 184.358,239.167 184.361 C 238.983 184.365,238.496 184.604,238.083 184.891 M233.500 188.065 C 233.133 188.273,232.758 188.533,232.667 188.643 C 232.575 188.752,231.787 189.202,230.915 189.641 C 230.043 190.081,229.379 190.490,229.439 190.550 C 229.605 190.716,232.716 189.088,233.667 188.339 C 234.593 187.609,234.519 187.487,233.500 188.065 M166.333 188.605 C 166.333 188.764,166.708 189.064,167.167 189.273 C 167.625 189.482,168.000 189.598,168.000 189.531 C 168.000 189.465,167.625 189.164,167.167 188.864 C 166.708 188.564,166.333 188.447,166.333 188.605 M171.853 191.823 C 172.209 192.092,172.650 192.312,172.833 192.312 C 173.017 192.312,172.875 192.092,172.520 191.823 C 172.164 191.554,171.723 191.333,171.539 191.333 C 171.356 191.333,171.497 191.554,171.853 191.823 M175.000 193.134 C 175.000 193.367,177.354 194.667,177.769 194.663 C 177.988 194.660,177.514 194.285,176.716 193.829 C 175.252 192.992,175.000 192.890,175.000 193.134 M222.585 193.754 C 221.899 194.136,221.385 194.497,221.444 194.555 C 221.584 194.695,224.333 193.366,224.333 193.159 C 224.333 192.881,223.868 193.040,222.585 193.754 M179.667 195.464 C 179.667 195.567,180.267 195.941,181.000 196.295 C 181.733 196.650,182.333 196.818,182.333 196.669 C 182.333 196.520,181.846 196.206,181.250 195.971 C 180.654 195.736,180.054 195.484,179.917 195.411 C 179.779 195.338,179.667 195.362,179.667 195.464 M218.083 195.937 C 217.487 196.221,217.000 196.574,217.000 196.721 C 217.000 196.942,219.166 195.910,219.639 195.464 C 219.923 195.196,219.132 195.437,218.083 195.937 M182.667 197.134 C 182.667 197.207,183.229 197.585,183.917 197.974 L 185.167 198.680 184.167 197.842 C 183.249 197.073,182.667 196.798,182.667 197.134 M213.833 198.677 C 212.199 199.894,209.667 202.365,209.667 202.745 C 209.667 202.898,210.130 202.496,210.695 201.852 C 211.261 201.207,212.626 200.002,213.728 199.173 C 214.831 198.345,215.605 197.671,215.450 197.676 C 215.294 197.681,214.567 198.132,213.833 198.677 M185.333 198.784 C 185.333 198.864,186.269 199.883,187.412 201.048 C 188.555 202.213,189.170 202.717,188.780 202.167 C 188.093 201.199,185.333 198.491,185.333 198.784 M208.727 204.167 C 208.518 204.625,208.402 205.000,208.469 205.000 C 208.535 205.000,208.836 204.625,209.136 204.167 C 209.436 203.708,209.553 203.333,209.395 203.333 C 209.236 203.333,208.936 203.708,208.727 204.167 M190.002 204.353 C 190.001 204.639,190.220 205.164,190.489 205.520 C 191.126 206.361,191.132 205.997,190.502 204.788 C 190.228 204.263,190.003 204.067,190.002 204.353 M207.357 207.030 C 206.977 207.816,206.675 208.618,206.684 208.813 C 206.694 209.007,207.068 208.428,207.515 207.526 C 207.963 206.623,208.266 205.821,208.188 205.743 C 208.110 205.666,207.736 206.245,207.357 207.030 M191.678 208.186 C 191.700 208.745,192.643 210.191,192.644 209.667 C 192.645 209.392,192.425 208.875,192.156 208.520 C 191.887 208.164,191.672 208.014,191.678 208.186 M206.087 210.250 C 205.319 212.400,205.002 213.587,205.034 214.190 C 205.067 214.819,205.138 214.622,205.940 211.667 C 206.114 211.025,206.365 210.237,206.497 209.917 C 206.630 209.596,206.665 209.333,206.576 209.333 C 206.487 209.333,206.267 209.746,206.087 210.250 M193.466 213.333 C 193.898 215.535,194.264 216.537,194.299 215.622 C 194.318 215.138,194.101 214.238,193.818 213.622 C 193.428 212.775,193.342 212.704,193.466 213.333 M204.561 215.461 C 204.436 215.787,204.343 216.305,204.354 216.611 C 204.368 216.979,204.484 216.895,204.697 216.362 C 204.874 215.919,204.967 215.402,204.904 215.212 C 204.841 215.022,204.686 215.134,204.561 215.461 M194.372 217.833 C 194.429 219.192,194.929 220.323,194.962 219.167 C 194.977 218.617,194.844 217.942,194.667 217.667 C 194.400 217.255,194.348 217.284,194.372 217.833 M203.914 220.111 C 203.503 221.126,203.599 222.317,204.032 221.574 C 204.222 221.248,204.328 220.648,204.269 220.240 C 204.171 219.574,204.136 219.561,203.914 220.111 M195.160 224.167 C 195.295 224.900,195.525 226.700,195.669 228.167 C 195.914 230.650,195.923 230.583,195.803 227.188 C 195.728 225.046,195.518 223.396,195.294 223.188 C 195.010 222.924,194.976 223.173,195.160 224.167 M203.433 224.667 C 203.433 225.675,203.496 226.088,203.572 225.583 C 203.648 225.079,203.648 224.254,203.572 223.750 C 203.496 223.246,203.433 223.658,203.433 224.667 M202.905 227.833 C 202.778 228.567,202.691 229.692,202.711 230.333 C 202.737 231.168,202.832 230.930,203.044 229.500 C 203.380 227.233,203.259 225.788,202.905 227.833 M196.238 234.833 C 196.338 236.850,196.475 238.563,196.543 238.639 C 196.780 238.905,196.615 234.156,196.336 232.667 C 196.149 231.665,196.116 232.384,196.238 234.833 M202.210 239.083 C 201.888 240.286,201.980 245.453,202.333 246.000 C 202.552 246.338,202.658 245.176,202.662 242.417 C 202.667 238.316,202.582 237.694,202.210 239.083 M196.372 246.856 C 196.348 247.280,195.915 247.754,195.250 248.085 C 194.637 248.390,194.404 248.633,194.713 248.645 C 195.606 248.680,196.761 247.546,196.576 246.817 C 196.420 246.203,196.409 246.205,196.372 246.856 M203.092 248.235 C 203.361 248.504,203.913 248.674,204.319 248.612 C 204.916 248.521,204.823 248.428,203.830 248.123 C 202.752 247.792,202.663 247.806,203.092 248.235 M192.167 249.000 C 191.746 249.181,191.685 249.286,192.000 249.286 C 192.275 249.286,192.800 249.158,193.167 249.000 C 193.587 248.819,193.648 248.714,193.333 248.714 C 193.058 248.714,192.533 248.842,192.167 249.000 M205.667 248.985 C 205.942 249.171,206.454 249.325,206.806 249.328 C 207.658 249.335,207.392 249.144,206.167 248.870 C 205.436 248.707,205.302 248.738,205.667 248.985 M186.586 250.763 C 185.534 251.141,184.735 251.513,184.811 251.589 C 184.941 251.719,189.002 250.395,189.306 250.124 C 189.640 249.826,188.350 250.129,186.586 250.763 M211.333 250.845 C 212.525 251.290,213.637 251.612,213.805 251.559 C 214.186 251.440,210.272 249.994,209.632 250.017 C 209.376 250.027,210.142 250.399,211.333 250.845 M180.833 252.667 C 180.720 252.850,180.299 253.017,179.897 253.039 C 179.444 253.063,179.363 253.130,179.684 253.217 C 179.968 253.294,180.718 253.132,181.351 252.858 C 182.256 252.465,182.345 252.357,181.770 252.346 C 181.368 252.339,180.947 252.483,180.833 252.667 M217.520 252.823 C 217.875 253.092,218.542 253.300,219.000 253.284 C 219.679 253.261,219.710 253.226,219.167 253.096 C 218.800 253.007,218.357 252.800,218.183 252.634 C 218.009 252.469,217.643 252.333,217.370 252.333 C 216.997 252.333,217.035 252.456,217.520 252.823 M175.167 254.408 C 173.319 255.030,172.150 255.623,172.730 255.645 C 173.040 255.657,173.387 255.517,173.500 255.333 C 173.613 255.150,173.980 255.000,174.315 255.000 C 174.650 255.000,175.428 254.781,176.045 254.513 C 177.308 253.965,176.699 253.892,175.167 254.408 M168.333 256.667 C 168.058 256.844,167.458 257.009,167.000 257.034 C 166.470 257.061,166.371 257.131,166.728 257.225 C 167.036 257.307,167.936 257.147,168.728 256.869 C 169.519 256.592,169.867 256.360,169.500 256.354 C 169.133 256.348,168.608 256.489,168.333 256.667 M230.500 256.889 C 231.417 257.172,232.489 257.555,232.884 257.740 C 233.278 257.926,233.791 258.014,234.024 257.936 C 234.481 257.784,230.133 256.320,229.324 256.354 C 229.054 256.365,229.583 256.606,230.500 256.889 M163.333 258.417 C 163.333 258.554,179.524 258.667,199.314 258.667 C 219.103 258.667,235.364 258.554,235.448 258.417 C 235.533 258.279,219.342 258.167,199.468 258.167 C 179.594 258.167,163.333 258.279,163.333 258.417 M120.168 278.293 C 119.618 278.410,121.021 278.506,123.284 278.506 C 125.547 278.506,127.047 278.407,126.616 278.286 C 125.623 278.007,121.482 278.011,120.168 278.293 M115.631 280.460 C 114.167 281.587,112.491 283.333,112.874 283.333 C 112.985 283.333,113.547 282.826,114.122 282.205 C 114.696 281.584,115.750 280.684,116.463 280.205 C 117.176 279.726,117.610 279.333,117.428 279.333 C 117.245 279.333,116.437 279.841,115.631 280.460 M130.960 280.667 C 131.888 281.400,132.737 282.000,132.847 282.000 C 133.124 282.000,132.390 281.311,130.969 280.238 C 129.088 278.818,129.081 279.181,130.960 280.667 M134.677 284.876 C 134.699 285.467,135.667 286.506,135.667 285.938 C 135.667 285.650,135.442 285.228,135.167 285.000 C 134.892 284.772,134.671 284.716,134.677 284.876 M111.339 285.656 C 111.129 286.048,111.025 286.623,111.107 286.934 C 111.224 287.378,111.264 287.353,111.295 286.817 C 111.316 286.441,111.511 285.956,111.728 285.739 C 111.945 285.522,112.032 285.254,111.921 285.144 C 111.811 285.033,111.549 285.264,111.339 285.656 M135.902 288.351 C 136.006 289.166,136.146 289.896,136.213 289.972 C 136.484 290.285,136.300 287.796,136.018 287.351 C 135.820 287.038,135.779 287.391,135.902 288.351 M110.338 289.083 C 110.342 289.905,110.421 290.046,110.667 289.667 C 111.090 289.012,111.090 288.000,110.667 288.000 C 110.483 288.000,110.336 288.487,110.338 289.083 M110.333 292.461 C 110.333 292.919,110.483 293.387,110.667 293.500 C 110.855 293.616,111.000 293.343,111.000 292.873 C 111.000 292.414,110.850 291.947,110.667 291.833 C 110.478 291.717,110.333 291.990,110.333 292.461 M136.049 292.333 C 136.017 292.792,135.908 293.542,135.806 294.000 C 135.646 294.718,135.673 294.752,135.998 294.243 C 136.205 293.918,136.314 293.168,136.241 292.576 C 136.136 291.739,136.094 291.685,136.049 292.333 M111.039 294.853 C 111.017 295.230,111.220 295.830,111.489 296.186 C 111.759 296.542,111.984 296.676,111.989 296.483 C 111.995 296.291,111.865 295.991,111.699 295.817 C 111.533 295.642,111.326 295.200,111.238 294.833 C 111.081 294.183,111.076 294.183,111.039 294.853 M135.372 295.583 C 135.351 295.996,135.183 296.333,135.000 296.333 C 134.817 296.333,134.667 296.515,134.667 296.738 C 134.667 297.002,134.851 296.958,135.199 296.611 C 135.491 296.318,135.659 295.799,135.571 295.456 C 135.438 294.939,135.404 294.960,135.372 295.583 M369.497 295.750 C 369.397 296.162,369.358 303.175,369.411 311.333 L 369.507 326.167 369.587 310.983 C 369.646 299.710,369.770 295.697,370.067 295.400 C 370.371 295.096,370.372 295.000,370.073 295.000 C 369.857 295.000,369.597 295.337,369.497 295.750 M112.471 297.833 C 113.121 299.189,114.957 301.002,116.625 301.938 C 118.457 302.966,118.396 302.629,116.555 301.550 C 115.214 300.764,113.408 298.987,112.412 297.474 C 112.180 297.121,112.207 297.283,112.471 297.833 M134.332 297.583 C 134.331 297.721,133.873 298.321,133.315 298.917 C 132.756 299.512,132.415 300.000,132.556 300.000 C 132.698 300.000,133.230 299.512,133.739 298.917 C 134.610 297.898,134.881 297.333,134.500 297.333 C 134.408 297.333,134.333 297.446,134.332 297.583 M129.917 301.857 C 128.671 302.533,128.746 302.815,130.000 302.167 C 130.550 301.882,131.000 301.578,131.000 301.491 C 131.000 301.277,130.964 301.289,129.917 301.857 M119.102 303.200 C 119.616 303.479,120.441 303.646,120.935 303.570 C 121.764 303.444,121.751 303.429,120.770 303.383 C 120.185 303.356,119.613 303.183,119.500 303.000 C 119.387 302.817,119.040 302.673,118.730 302.680 C 118.353 302.689,118.476 302.861,119.102 303.200 M127.549 302.895 C 127.424 303.021,126.686 303.227,125.910 303.353 C 124.697 303.551,124.646 303.589,125.545 303.625 C 126.120 303.648,127.095 303.448,127.712 303.180 C 128.329 302.912,128.596 302.687,128.306 302.680 C 128.015 302.673,127.675 302.769,127.549 302.895 M197.167 324.667 C 196.556 324.929,196.570 324.955,197.333 324.971 C 197.792 324.982,198.392 324.844,198.667 324.667 C 199.323 324.243,198.153 324.243,197.167 324.667 M207.167 324.667 C 207.717 324.807,208.467 324.928,208.833 324.937 L 209.500 324.953 208.833 324.667 C 208.467 324.509,207.717 324.387,207.167 324.396 L 206.167 324.412 207.167 324.667 M293.333 324.667 C 292.523 324.926,292.528 324.934,293.500 324.934 C 294.050 324.934,294.875 324.813,295.333 324.667 C 296.144 324.407,296.139 324.400,295.167 324.400 C 294.617 324.400,293.792 324.520,293.333 324.667 M305.500 324.667 C 306.997 325.048,308.387 325.048,307.500 324.667 C 307.133 324.509,306.308 324.387,305.667 324.396 L 304.500 324.412 305.500 324.667 M193.500 325.519 C 192.654 325.932,192.628 325.977,193.333 325.808 C 193.792 325.698,194.692 325.489,195.333 325.343 C 196.486 325.080,196.488 325.076,195.500 325.053 C 194.950 325.041,194.050 325.250,193.500 325.519 M210.667 325.354 C 213.407 326.004,213.946 326.051,212.667 325.528 C 212.025 325.265,211.050 325.057,210.500 325.064 C 209.514 325.076,209.516 325.081,210.667 325.354 M288.833 325.535 L 287.500 326.000 288.667 325.820 C 289.308 325.721,290.433 325.515,291.167 325.362 L 292.500 325.083 291.333 325.077 C 290.692 325.073,289.567 325.279,288.833 325.535 M309.667 325.334 C 312.543 325.969,313.297 326.034,311.833 325.520 C 311.100 325.262,310.050 325.057,309.500 325.064 C 308.523 325.076,308.527 325.083,309.667 325.334 M365.078 326.582 L 360.989 326.687 361.078 335.927 L 361.167 345.167 364.500 345.249 C 366.333 345.295,368.170 345.410,368.582 345.505 L 369.330 345.679 369.417 378.923 L 369.503 412.167 369.585 378.786 C 369.659 348.606,369.616 345.385,369.139 345.202 C 368.849 345.091,366.974 345.000,364.973 345.000 L 361.333 345.000 361.333 336.000 L 361.333 327.000 365.083 326.995 C 367.146 326.992,369.058 326.844,369.333 326.667 C 369.608 326.489,369.683 326.374,369.500 326.411 C 369.317 326.447,367.327 326.525,365.078 326.582 M389.551 326.750 C 389.636 326.887,391.797 327.000,394.353 327.000 L 399.000 327.000 399.000 335.473 C 399.000 346.087,399.553 345.000,394.151 345.000 C 391.706 345.000,389.636 345.113,389.551 345.250 C 389.465 345.387,391.551 345.455,394.186 345.400 L 398.976 345.299 399.168 344.233 C 399.274 343.647,399.317 339.492,399.264 335.000 L 399.167 326.833 394.281 326.667 C 391.594 326.575,389.465 326.612,389.551 326.750 M113.489 327.078 C 113.401 327.310,113.368 346.625,113.416 370.000 L 113.503 412.500 113.585 369.750 L 113.667 327.000 123.333 327.000 L 133.000 327.000 133.000 369.828 L 133.000 412.657 123.333 412.753 L 113.666 412.849 123.417 412.841 L 133.167 412.833 133.167 369.833 L 133.167 326.833 123.408 326.745 C 115.781 326.676,113.615 326.749,113.489 327.078 M158.894 326.884 C 158.343 327.435,158.640 412.585,159.194 412.798 C 159.882 413.062,177.785 413.062,178.473 412.798 C 178.946 412.616,179.000 410.262,179.000 389.611 C 179.000 374.374,178.888 366.697,178.667 366.833 C 178.450 366.967,178.333 375.003,178.333 389.853 L 178.333 412.667 168.833 412.667 L 159.333 412.667 159.333 369.833 L 159.333 327.000 168.822 327.000 L 178.310 327.000 178.405 330.413 C 178.487 333.341,178.582 333.841,179.078 333.936 C 179.640 334.044,182.315 332.096,182.327 331.570 C 182.334 331.296,181.857 331.647,180.499 332.917 C 179.184 334.146,179.029 333.882,178.928 330.250 L 178.833 326.833 168.977 326.745 C 163.556 326.697,159.019 326.759,158.894 326.884 M283.000 327.224 C 281.871 327.610,278.321 329.432,278.449 329.560 C 278.524 329.635,279.467 329.265,280.543 328.737 C 281.619 328.209,282.875 327.613,283.333 327.411 C 284.173 327.042,283.930 326.906,283.000 327.224 M187.068 328.067 C 186.463 328.441,186.039 328.817,186.125 328.903 C 186.211 328.989,186.853 328.671,187.551 328.196 C 189.045 327.182,188.665 327.081,187.068 328.067 M217.361 327.440 C 218.081 327.991,220.000 328.920,220.000 328.717 C 220.000 328.574,219.470 328.204,218.822 327.895 C 217.776 327.396,216.981 327.148,217.361 327.440 M318.667 327.900 C 319.308 328.203,320.396 328.728,321.083 329.066 C 321.771 329.404,322.333 329.527,322.333 329.340 C 322.333 329.153,322.183 329.000,321.998 329.000 C 321.814 329.000,320.886 328.625,319.936 328.167 C 318.986 327.708,318.049 327.337,317.854 327.341 C 317.659 327.345,318.025 327.597,318.667 327.900 M41.833 327.976 C 40.550 328.081,42.875 328.167,47.000 328.167 C 51.395 328.167,53.465 328.081,52.000 327.960 C 48.980 327.711,44.991 327.717,41.833 327.976 M36.833 328.667 L 36.167 328.953 36.833 328.971 C 37.200 328.982,37.725 328.844,38.000 328.667 C 38.663 328.238,37.830 328.238,36.833 328.667 M55.667 328.667 C 56.951 329.078,57.637 329.078,57.000 328.667 C 56.725 328.489,56.125 328.356,55.667 328.372 L 54.833 328.400 55.667 328.667 M34.000 329.333 C 33.337 329.762,34.170 329.762,35.167 329.333 L 35.833 329.047 35.167 329.029 C 34.800 329.018,34.275 329.156,34.000 329.333 M58.028 329.120 C 58.420 329.458,60.036 329.660,59.842 329.347 C 59.724 329.156,59.236 329.000,58.758 329.000 C 58.280 329.000,57.951 329.054,58.028 329.120 M184.756 329.451 C 184.347 329.653,183.936 330.019,183.842 330.264 C 183.743 330.522,184.090 330.410,184.669 329.998 C 185.450 329.443,186.054 328.810,185.583 329.041 C 185.537 329.063,185.165 329.248,184.756 329.451 M31.167 330.179 C 29.821 330.795,30.626 330.796,32.045 330.180 C 32.662 329.912,32.942 329.699,32.667 329.707 C 32.392 329.715,31.717 329.927,31.167 330.179 M61.788 330.169 C 62.313 330.443,62.913 330.661,63.121 330.655 C 63.667 330.638,61.931 329.692,61.333 329.681 C 61.058 329.675,61.263 329.895,61.788 330.169 M222.000 330.375 C 222.458 330.752,223.321 331.501,223.917 332.038 C 224.512 332.576,225.000 332.912,225.000 332.786 C 225.000 332.443,221.887 329.689,221.500 329.689 C 221.317 329.689,221.542 329.997,222.000 330.375 M323.333 330.167 C 323.562 330.442,323.898 330.667,324.082 330.667 C 324.268 330.667,324.231 330.446,324.000 330.167 C 323.772 329.892,323.435 329.667,323.252 329.667 C 323.066 329.667,323.102 329.888,323.333 330.167 M0.878 330.745 C 0.571 331.890,0.637 448.104,0.945 448.589 C 1.153 448.916,3.330 448.991,10.690 448.922 L 20.167 448.833 20.253 430.417 L 20.339 412.000 21.103 412.000 C 21.523 412.000,22.047 412.180,22.267 412.400 C 22.538 412.672,22.667 412.682,22.667 412.433 C 22.667 412.001,20.726 411.257,20.295 411.524 C 20.130 411.626,20.000 419.825,20.000 430.186 L 20.000 448.667 10.667 448.667 L 1.333 448.667 1.333 389.500 L 1.333 330.333 10.667 330.333 L 20.000 330.333 20.000 332.833 C 20.000 334.208,20.112 335.334,20.250 335.334 C 20.387 335.334,20.425 334.172,20.333 332.751 L 20.167 330.167 10.624 330.078 L 1.080 329.990 0.878 330.745 M26.853 331.844 C 26.397 332.189,26.348 332.330,26.686 332.323 C 26.950 332.317,27.458 332.092,27.814 331.823 C 28.270 331.478,28.319 331.336,27.980 331.344 C 27.716 331.350,27.209 331.575,26.853 331.844 M66.147 331.844 C 66.503 332.113,66.944 332.333,67.127 332.333 C 67.311 332.333,67.170 332.113,66.814 331.844 C 66.458 331.575,66.017 331.355,65.833 331.355 C 65.650 331.355,65.791 331.575,66.147 331.844 M326.487 332.164 C 327.030 332.608,327.555 332.882,327.654 332.773 C 327.752 332.664,327.643 332.508,327.411 332.425 C 327.178 332.342,326.776 332.062,326.518 331.804 C 326.259 331.545,325.924 331.339,325.774 331.345 C 325.623 331.352,325.944 331.720,326.487 332.164 M69.000 333.134 C 69.000 333.307,71.302 334.667,71.596 334.667 C 71.720 334.667,71.270 334.292,70.595 333.833 C 69.414 333.031,69.000 332.849,69.000 333.134 M272.285 333.229 C 272.220 333.378,271.430 334.092,270.529 334.817 C 268.479 336.465,264.489 340.507,263.602 341.833 C 263.182 342.462,263.449 342.276,264.320 341.333 C 266.637 338.828,270.132 335.333,270.321 335.333 C 270.710 335.331,272.793 333.348,272.604 333.160 C 272.493 333.049,272.350 333.080,272.285 333.229 M329.308 334.208 C 331.516 336.143,335.736 340.365,336.586 341.489 C 336.997 342.033,337.333 342.355,337.333 342.204 C 337.333 342.053,336.973 341.501,336.532 340.977 C 336.091 340.453,335.679 339.907,335.615 339.762 C 335.419 339.315,330.031 334.398,328.902 333.637 C 328.207 333.168,328.349 333.368,329.308 334.208 M226.513 334.910 C 227.056 335.685,227.623 336.322,227.773 336.326 C 228.117 336.335,226.892 334.597,226.112 333.970 C 225.790 333.712,225.971 334.134,226.513 334.910 M72.694 335.441 C 72.771 335.501,73.358 335.888,74.000 336.302 L 75.167 337.055 74.167 336.196 C 73.617 335.723,73.029 335.336,72.861 335.335 C 72.693 335.334,72.618 335.382,72.694 335.441 M228.000 336.799 C 228.000 336.872,228.373 337.585,228.829 338.383 C 229.825 340.125,229.941 339.845,228.993 337.987 C 228.410 336.843,228.000 336.353,228.000 336.799 M75.333 337.489 C 75.333 337.575,75.697 337.838,76.141 338.073 C 76.585 338.308,77.733 339.245,78.692 340.155 C 79.652 341.065,80.376 341.652,80.302 341.459 C 79.952 340.549,75.333 336.859,75.333 337.489 M230.361 341.667 C 230.364 342.283,231.269 344.314,231.306 343.788 C 231.321 343.580,231.114 342.905,230.846 342.288 C 230.579 341.671,230.360 341.392,230.361 341.667 M80.667 341.910 C 80.667 342.074,81.004 342.565,81.417 343.001 C 81.829 343.437,82.504 344.245,82.917 344.795 C 83.329 345.346,83.667 345.646,83.667 345.462 C 83.667 345.277,82.992 344.336,82.167 343.370 C 81.342 342.403,80.667 341.746,80.667 341.910 M294.000 342.667 C 293.556 342.954,293.556 342.990,294.000 342.990 C 294.275 342.990,294.725 342.844,295.000 342.667 C 295.444 342.379,295.444 342.344,295.000 342.344 C 294.725 342.344,294.275 342.489,294.000 342.667 M305.028 342.453 C 305.420 342.792,307.036 342.994,306.842 342.680 C 306.724 342.489,306.236 342.333,305.758 342.333 C 305.280 342.333,304.951 342.387,305.028 342.453 M337.704 342.503 C 338.065 343.443,339.868 346.333,340.094 346.333 C 340.237 346.333,339.806 345.471,339.137 344.417 C 337.899 342.468,337.472 341.898,337.704 342.503 M188.219 343.705 C 187.514 344.077,187.023 344.467,187.127 344.572 C 187.232 344.676,187.544 344.573,187.822 344.343 C 188.100 344.112,188.891 343.722,189.580 343.476 C 190.285 343.225,190.542 343.029,190.167 343.029 C 189.800 343.029,188.923 343.334,188.219 343.705 M204.622 343.513 C 205.238 343.781,205.838 343.995,205.955 343.988 C 206.389 343.964,204.480 343.024,204.000 343.025 C 203.725 343.026,204.005 343.245,204.622 343.513 M262.000 344.000 C 261.608 344.550,261.363 345.000,261.455 345.000 C 261.546 345.000,261.942 344.550,262.333 344.000 C 262.725 343.450,262.970 343.000,262.879 343.000 C 262.787 343.000,262.392 343.450,262.000 344.000 M309.226 343.609 C 310.175 343.919,311.062 344.284,311.198 344.420 C 311.544 344.766,312.078 344.729,311.858 344.373 C 311.652 344.040,308.602 342.989,307.937 343.022 C 307.697 343.034,308.276 343.298,309.226 343.609 M289.480 344.156 C 288.639 344.793,289.003 344.799,290.212 344.169 C 290.737 343.895,290.933 343.670,290.647 343.669 C 290.361 343.668,289.836 343.887,289.480 344.156 M207.759 345.364 C 208.635 346.172,209.717 347.433,210.165 348.167 C 210.613 348.900,210.984 349.385,210.990 349.243 C 211.009 348.765,209.414 346.505,208.454 345.650 C 206.722 344.107,206.134 343.866,207.759 345.364 M231.552 345.833 C 231.664 346.567,231.810 347.229,231.878 347.306 C 232.130 347.592,231.941 345.807,231.651 345.167 C 231.441 344.702,231.411 344.904,231.552 345.833 M286.107 346.008 C 285.009 346.745,283.673 347.827,283.138 348.412 C 282.300 349.330,282.364 349.304,283.601 348.223 C 284.390 347.533,285.403 346.802,285.851 346.598 C 286.300 346.394,286.667 346.100,286.667 345.946 C 286.667 345.793,286.854 345.662,287.083 345.656 C 287.589 345.643,288.937 344.667,288.449 344.667 C 288.259 344.667,287.206 345.270,286.107 346.008 M46.083 345.572 C 46.587 345.648,47.413 345.648,47.917 345.572 C 48.421 345.496,48.008 345.433,47.000 345.433 C 45.992 345.433,45.579 345.496,46.083 345.572 M41.833 346.000 L 41.167 346.286 41.833 346.291 C 42.200 346.293,43.100 346.171,43.833 346.019 L 45.167 345.743 43.833 345.728 C 43.100 345.720,42.200 345.842,41.833 346.000 M50.167 346.019 C 50.900 346.171,51.800 346.293,52.167 346.291 L 52.833 346.286 52.167 346.000 C 51.800 345.842,50.900 345.720,50.167 345.728 L 48.833 345.743 50.167 346.019 M38.500 346.667 C 38.080 346.847,38.018 346.953,38.333 346.953 C 38.608 346.953,39.133 346.824,39.500 346.667 C 39.920 346.486,39.982 346.380,39.667 346.380 C 39.392 346.380,38.867 346.509,38.500 346.667 M84.650 347.059 C 85.022 347.458,85.413 348.058,85.519 348.392 C 85.625 348.726,85.854 349.000,86.027 349.000 C 86.201 349.000,85.946 348.400,85.460 347.667 C 84.975 346.933,84.442 346.333,84.276 346.333 C 84.110 346.333,84.278 346.660,84.650 347.059 M259.722 347.556 C 259.299 348.202,259.019 348.797,259.101 348.879 C 259.184 348.961,259.575 348.478,259.972 347.806 C 260.908 346.219,260.721 346.032,259.722 347.556 M183.458 347.583 C 182.597 348.766,182.120 349.703,182.822 348.833 C 183.118 348.467,183.653 347.829,184.011 347.417 C 184.369 347.004,184.541 346.667,184.394 346.667 C 184.246 346.667,183.825 347.079,183.458 347.583 M34.581 348.305 C 33.248 349.159,33.002 349.505,34.167 348.888 C 35.563 348.147,36.226 347.673,35.833 347.696 C 35.650 347.707,35.086 347.981,34.581 348.305 M58.455 348.169 C 59.670 348.803,59.979 348.807,59.147 348.177 C 58.791 347.908,58.275 347.684,58.000 347.679 C 57.725 347.675,57.930 347.895,58.455 348.169 M341.000 347.873 C 341.000 348.056,341.220 348.497,341.489 348.853 C 341.759 349.209,341.979 349.350,341.979 349.167 C 341.979 348.983,341.759 348.542,341.489 348.186 C 341.220 347.830,341.000 347.689,341.000 347.873 M232.066 348.667 C 232.066 349.125,232.187 349.875,232.333 350.333 L 232.600 351.167 232.600 350.333 C 232.600 349.875,232.480 349.125,232.333 348.667 L 232.066 347.833 232.066 348.667 M31.750 349.910 C 31.337 350.188,31.000 350.557,31.000 350.731 C 31.000 350.905,31.222 350.825,31.494 350.554 C 31.766 350.282,32.178 349.992,32.411 349.909 C 32.643 349.826,32.758 349.679,32.667 349.582 C 32.575 349.485,32.162 349.633,31.750 349.910 M61.500 349.833 C 61.867 350.095,62.354 350.472,62.583 350.668 C 62.813 350.865,63.000 350.888,63.000 350.718 C 63.000 350.388,61.529 349.326,61.095 349.344 C 60.951 349.350,61.133 349.570,61.500 349.833 M86.333 349.481 C 86.333 349.810,87.759 352.018,87.888 351.890 C 87.965 351.813,87.706 351.207,87.314 350.542 C 86.666 349.444,86.333 349.084,86.333 349.481 M258.210 350.455 C 257.440 352.079,257.559 352.436,258.345 350.860 C 258.704 350.141,258.943 349.498,258.876 349.431 C 258.809 349.364,258.509 349.825,258.210 350.455 M181.714 350.381 C 181.479 350.757,181.360 351.138,181.450 351.228 C 181.539 351.317,181.787 351.065,182.000 350.667 C 182.504 349.725,182.270 349.491,181.714 350.381 M211.203 350.500 C 211.478 351.726,211.668 351.992,211.662 351.139 C 211.659 350.787,211.504 350.275,211.318 350.000 C 211.071 349.635,211.040 349.770,211.203 350.500 M279.999 351.750 C 279.508 352.420,279.428 352.653,279.788 352.361 C 280.334 351.917,281.161 350.667,280.908 350.667 C 280.844 350.667,280.435 351.154,279.999 351.750 M342.677 351.421 C 342.671 351.561,342.804 351.936,342.972 352.255 C 343.140 352.573,343.460 353.326,343.684 353.927 C 343.907 354.529,344.138 354.973,344.197 354.915 C 344.255 354.856,344.120 354.289,343.895 353.654 C 343.452 352.402,342.693 351.011,342.677 351.421 M211.690 352.230 C 211.765 353.096,212.287 353.830,212.310 353.103 C 212.323 352.701,212.183 352.280,212.000 352.167 C 211.817 352.053,211.677 352.082,211.690 352.230 M88.021 352.500 C 88.021 352.683,88.241 353.125,88.511 353.480 C 88.780 353.836,89.000 353.977,89.000 353.794 C 89.000 353.611,88.780 353.170,88.511 352.814 C 88.241 352.458,88.021 352.317,88.021 352.500 M257.037 353.370 C 256.793 353.921,256.665 354.443,256.752 354.530 C 256.839 354.617,257.101 354.228,257.333 353.667 C 257.885 352.334,257.615 352.064,257.037 353.370 M232.748 382.578 L 232.667 412.657 222.917 412.750 L 213.167 412.844 222.927 412.922 C 230.487 412.982,232.723 412.906,232.846 412.583 C 232.934 412.354,232.966 398.742,232.918 382.333 L 232.830 352.500 232.748 382.578 M67.172 355.333 C 68.833 357.725,69.664 358.577,68.496 356.690 C 67.994 355.878,67.204 354.828,66.741 354.357 C 66.200 353.806,66.354 354.156,67.172 355.333 M180.039 355.215 C 179.789 355.971,179.667 356.794,179.766 357.045 C 179.866 357.295,179.959 357.117,179.974 356.650 C 179.988 356.183,180.164 355.636,180.365 355.435 C 180.565 355.235,180.676 354.794,180.611 354.456 C 180.532 354.048,180.340 354.304,180.039 355.215 M322.333 354.524 C 322.333 354.629,322.558 354.939,322.833 355.214 C 323.376 355.757,323.444 355.676,323.131 354.861 C 322.941 354.365,322.333 354.109,322.333 354.524 M212.380 355.667 C 212.380 356.125,212.509 356.800,212.667 357.167 C 212.928 357.774,212.953 357.760,212.953 357.000 C 212.953 356.542,212.824 355.867,212.667 355.500 C 212.406 354.892,212.380 354.907,212.380 355.667 M256.372 355.223 C 256.351 355.437,256.236 355.887,256.118 356.223 C 255.950 356.696,255.995 356.748,256.316 356.452 C 256.543 356.242,256.658 355.792,256.570 355.452 C 256.482 355.112,256.393 355.009,256.372 355.223 M277.360 355.950 C 277.162 356.320,277.001 356.820,277.002 357.061 C 277.003 357.303,277.231 357.065,277.508 356.534 C 277.785 356.002,277.946 355.502,277.866 355.422 C 277.786 355.342,277.559 355.579,277.360 355.950 M25.353 356.875 C 24.960 357.540,24.694 358.138,24.761 358.205 C 24.827 358.271,25.218 357.728,25.629 356.996 C 26.562 355.335,26.323 355.231,25.353 356.875 M255.537 358.000 C 255.255 359.400,254.964 361.782,255.191 360.833 C 255.278 360.467,255.515 359.622,255.716 358.955 C 255.917 358.289,256.012 357.539,255.927 357.289 C 255.842 357.038,255.666 357.358,255.537 358.000 M90.351 357.833 C 90.347 358.017,90.560 358.767,90.824 359.500 C 91.088 360.233,91.311 360.588,91.319 360.288 C 91.327 359.988,91.114 359.238,90.846 358.622 C 90.579 358.005,90.356 357.650,90.351 357.833 M213.159 385.167 C 213.159 400.200,213.200 406.301,213.250 398.725 C 213.300 391.149,213.300 378.849,213.250 371.392 C 213.200 363.935,213.159 370.133,213.159 385.167 M345.177 359.000 C 345.622 361.835,345.914 362.900,345.953 361.833 C 345.973 361.283,345.766 360.158,345.492 359.333 C 345.062 358.039,345.019 357.993,345.177 359.000 M179.228 359.127 C 179.103 359.454,179.015 360.196,179.033 360.777 C 179.066 361.806,179.075 361.799,179.374 360.522 C 179.704 359.114,179.603 358.149,179.228 359.127 M275.704 360.244 C 275.470 360.808,275.346 361.622,275.427 362.052 C 275.549 362.694,275.584 362.653,275.621 361.817 C 275.646 361.257,275.834 360.633,276.037 360.429 C 276.241 360.225,276.345 359.869,276.268 359.638 C 276.191 359.408,275.937 359.680,275.704 360.244 M23.404 360.344 C 23.182 360.700,23.001 361.180,23.002 361.412 C 23.003 361.644,23.231 361.399,23.508 360.867 C 24.086 359.759,24.009 359.375,23.404 360.344 M324.877 360.333 C 325.008 360.792,325.222 361.692,325.353 362.333 L 325.590 363.500 325.617 362.333 C 325.631 361.692,325.417 360.792,325.141 360.333 L 324.639 359.500 324.877 360.333 M70.011 360.183 C 70.005 360.376,70.135 360.676,70.301 360.850 C 70.467 361.024,70.674 361.467,70.762 361.833 C 70.919 362.484,70.924 362.483,70.961 361.814 C 70.983 361.436,70.780 360.836,70.511 360.480 C 70.241 360.125,70.016 359.991,70.011 360.183 M91.344 361.333 C 91.344 361.608,91.489 362.058,91.667 362.333 C 91.954 362.778,91.990 362.778,91.990 362.333 C 91.990 362.058,91.844 361.608,91.667 361.333 C 91.379 360.889,91.344 360.889,91.344 361.333 M22.479 362.917 C 22.369 363.421,22.121 364.251,21.928 364.761 C 21.735 365.271,21.657 365.768,21.755 365.866 C 21.853 365.964,22.085 365.547,22.270 364.939 C 22.787 363.240,23.030 362.000,22.846 362.000 C 22.754 362.000,22.589 362.412,22.479 362.917 M254.545 363.880 C 254.282 365.802,254.338 374.153,254.623 375.479 C 254.739 376.017,254.833 373.279,254.833 369.395 C 254.833 361.566,254.841 361.720,254.545 363.880 M274.880 363.737 C 274.768 364.157,274.695 365.400,274.718 366.500 C 274.759 368.478,274.763 368.471,275.015 365.833 C 275.278 363.081,275.235 362.412,274.880 363.737 M92.078 364.167 C 92.078 364.717,92.193 365.617,92.333 366.167 C 92.686 367.553,92.702 366.189,92.352 364.500 C 92.121 363.379,92.077 363.326,92.078 364.167 M346.063 365.167 C 346.054 366.267,346.176 367.467,346.333 367.833 C 346.702 368.692,346.702 365.616,346.333 364.167 C 346.131 363.371,346.076 363.576,346.063 365.167 M325.833 370.001 C 325.833 373.449,325.944 376.097,326.078 375.885 C 326.213 375.673,326.323 373.025,326.323 370.000 C 326.323 366.975,326.213 364.327,326.078 364.116 C 325.944 363.904,325.833 366.553,325.833 370.001 M71.723 365.167 C 71.718 365.533,71.842 366.133,72.000 366.500 C 72.365 367.349,72.365 366.473,72.000 365.333 C 71.785 364.663,71.731 364.631,71.723 365.167 M21.176 369.393 C 21.040 370.435,21.000 371.485,21.087 371.727 C 21.173 371.969,21.355 371.315,21.491 370.273 C 21.627 369.232,21.667 368.182,21.580 367.940 C 21.493 367.698,21.311 368.352,21.176 369.393 M92.797 373.333 C 92.797 375.808,92.850 376.821,92.914 375.583 C 92.978 374.346,92.978 372.321,92.914 371.083 C 92.850 369.846,92.797 370.858,92.797 373.333 M72.362 373.500 C 72.374 376.041,72.485 377.257,72.667 376.833 C 73.063 375.912,73.063 370.613,72.667 370.000 C 72.449 369.663,72.350 370.802,72.362 373.500 M274.690 373.194 C 274.703 374.462,274.836 375.800,274.986 376.167 C 275.141 376.545,275.184 375.606,275.085 374.000 C 274.870 370.517,274.658 370.085,274.690 373.194 M346.250 372.111 C 346.113 372.446,346.015 373.571,346.033 374.611 L 346.067 376.500 346.380 375.167 C 346.752 373.587,346.647 371.140,346.250 372.111 M21.043 375.667 C 21.040 376.308,21.163 377.433,21.314 378.167 C 21.590 379.499,21.590 379.498,21.605 377.667 C 21.613 376.658,21.491 375.533,21.333 375.167 C 21.101 374.625,21.046 374.719,21.043 375.667 M325.274 378.000 C 325.154 378.642,324.959 379.467,324.840 379.833 C 324.722 380.200,324.868 380.079,325.166 379.565 C 325.464 379.050,325.659 378.225,325.599 377.731 C 325.500 376.903,325.474 376.924,325.274 378.000 M275.367 377.878 C 275.349 378.270,275.567 379.095,275.852 379.712 C 276.364 380.821,276.337 380.581,275.675 378.167 C 275.469 377.412,275.393 377.341,275.367 377.878 M345.598 378.500 C 345.482 379.233,345.294 380.283,345.181 380.833 C 345.055 381.447,345.181 381.277,345.508 380.395 C 345.801 379.603,345.988 378.553,345.925 378.061 C 345.829 377.313,345.775 377.384,345.598 378.500 M255.156 378.667 C 255.224 379.308,255.438 380.358,255.631 381.000 C 256.081 382.496,255.887 380.921,255.364 378.833 C 255.044 377.555,255.036 377.548,255.156 378.667 M72.050 380.056 C 72.022 380.545,71.914 381.220,71.808 381.556 C 71.627 382.133,71.637 382.134,71.996 381.575 C 72.205 381.249,72.314 380.574,72.238 380.075 L 72.100 379.167 72.050 380.056 M92.235 380.625 C 92.106 381.244,92.016 382.144,92.037 382.625 C 92.061 383.202,92.175 382.989,92.372 382.000 C 92.537 381.175,92.627 380.275,92.571 380.000 C 92.516 379.725,92.365 380.006,92.235 380.625 M21.695 380.833 C 21.685 381.200,21.822 381.725,22.000 382.000 C 22.428 382.663,22.428 381.830,22.000 380.833 L 21.714 380.167 21.695 380.833 M324.167 381.667 C 324.042 382.061,324.014 382.459,324.106 382.550 C 324.197 382.642,324.375 382.394,324.500 382.000 C 324.625 381.606,324.653 381.208,324.561 381.116 C 324.469 381.025,324.292 381.272,324.167 381.667 M22.338 383.194 C 22.341 383.546,22.496 384.058,22.682 384.333 C 22.929 384.698,22.960 384.564,22.797 383.833 C 22.522 382.608,22.332 382.342,22.338 383.194 M277.024 382.833 C 277.024 383.017,277.238 383.542,277.500 384.000 C 277.762 384.458,277.976 384.683,277.976 384.500 C 277.976 384.317,277.762 383.792,277.500 383.333 C 277.238 382.875,277.024 382.650,277.024 382.833 M322.854 384.688 C 322.374 385.643,322.038 386.482,322.107 386.552 C 322.176 386.621,322.634 385.904,323.125 384.958 C 323.616 384.013,323.952 383.174,323.872 383.094 C 323.792 383.015,323.334 383.732,322.854 384.688 M70.418 385.714 C 70.194 386.305,70.080 386.858,70.163 386.941 C 70.362 387.140,71.051 385.320,70.923 384.935 C 70.868 384.772,70.641 385.122,70.418 385.714 M256.669 385.064 C 256.668 385.374,256.817 385.720,257.000 385.833 C 257.183 385.947,257.333 386.243,257.333 386.492 C 257.333 387.121,258.648 390.130,258.839 389.938 C 258.925 389.853,258.696 389.164,258.331 388.407 C 257.966 387.651,257.667 386.892,257.667 386.721 C 257.667 386.550,257.443 385.980,257.169 385.455 C 256.854 384.851,256.670 384.707,256.669 385.064 M23.024 385.500 C 23.022 385.867,23.241 386.458,23.511 386.814 C 24.130 387.633,24.131 387.378,23.513 385.955 C 23.176 385.178,23.025 385.038,23.024 385.500 M90.916 386.833 C 90.788 387.383,90.596 388.208,90.490 388.667 C 90.361 389.224,90.473 389.117,90.829 388.345 C 91.122 387.710,91.314 386.885,91.256 386.512 C 91.174 385.984,91.098 386.056,90.916 386.833 M343.087 387.237 C 342.860 387.721,342.735 388.179,342.810 388.254 C 343.010 388.455,343.728 387.015,343.605 386.659 C 343.547 386.492,343.314 386.752,343.087 387.237 M279.999 388.250 C 280.435 388.846,280.844 389.333,280.908 389.333 C 281.161 389.333,280.334 388.083,279.788 387.639 C 279.428 387.347,279.508 387.580,279.999 388.250 M320.667 388.167 C 320.236 388.625,320.005 389.000,320.153 389.000 C 320.403 389.000,321.667 387.706,321.667 387.449 C 321.667 387.191,321.411 387.374,320.667 388.167 M24.667 388.873 C 24.667 389.056,24.887 389.497,25.156 389.853 C 25.425 390.209,25.645 390.350,25.645 390.167 C 25.645 389.983,25.425 389.542,25.156 389.186 C 24.887 388.830,24.667 388.689,24.667 388.873 M68.694 389.283 C 68.149 390.300,68.262 390.584,68.867 389.719 C 69.161 389.300,69.323 388.879,69.228 388.783 C 69.132 388.688,68.892 388.913,68.694 389.283 M259.000 390.413 C 259.000 390.761,260.450 393.327,260.576 393.202 C 260.644 393.134,260.376 392.498,259.981 391.789 C 259.209 390.406,259.000 390.112,259.000 390.413 M317.000 392.020 C 316.175 392.753,314.773 393.734,313.884 394.199 C 312.994 394.664,312.334 395.112,312.416 395.194 C 312.608 395.386,315.304 393.882,316.169 393.100 C 316.535 392.769,317.332 392.087,317.942 391.583 C 318.552 391.079,318.927 390.671,318.776 390.677 C 318.624 390.682,317.825 391.286,317.000 392.020 M65.833 393.199 C 63.656 395.608,63.666 395.593,64.865 394.647 C 65.733 393.963,67.934 391.310,67.605 391.344 C 67.547 391.350,66.750 392.185,65.833 393.199 M88.964 392.475 C 88.727 393.130,88.413 393.667,88.266 393.667 C 88.120 393.667,88.000 393.826,88.000 394.020 C 88.000 394.214,88.146 394.282,88.324 394.172 C 88.774 393.894,89.794 391.683,89.574 391.463 C 89.475 391.364,89.201 391.820,88.964 392.475 M283.060 391.750 C 284.597 393.204,288.283 395.495,288.590 395.187 C 288.689 395.089,288.244 394.789,287.603 394.521 C 286.961 394.253,285.668 393.426,284.728 392.684 C 283.116 391.410,282.097 390.839,283.060 391.750 M26.740 392.327 C 26.967 392.690,27.348 393.062,27.587 393.154 C 27.861 393.259,27.802 393.019,27.427 392.504 C 26.718 391.529,26.150 391.383,26.740 392.327 M261.683 395.190 C 262.259 396.028,262.807 396.638,262.899 396.545 C 262.991 396.453,262.754 396.041,262.371 395.630 C 261.988 395.219,261.587 394.609,261.481 394.275 C 261.375 393.940,261.141 393.667,260.962 393.667 C 260.782 393.667,261.106 394.352,261.683 395.190 M29.738 395.258 C 31.638 396.862,32.229 397.167,30.667 395.735 C 29.842 394.980,29.049 394.355,28.905 394.348 C 28.761 394.340,29.136 394.750,29.738 395.258 M63.333 395.591 C 63.333 395.733,62.808 396.131,62.167 396.477 C 61.525 396.822,61.000 397.233,61.000 397.391 C 61.000 397.548,61.600 397.279,62.333 396.794 C 63.485 396.031,64.043 395.333,63.500 395.333 C 63.408 395.333,63.333 395.449,63.333 395.591 M86.410 397.191 C 85.998 397.819,85.774 398.332,85.914 398.331 C 86.182 398.329,87.422 396.311,87.256 396.145 C 87.203 396.092,86.822 396.562,86.410 397.191 M337.667 397.000 C 337.275 397.550,337.030 398.000,337.121 398.000 C 337.213 398.000,337.608 397.550,338.000 397.000 C 338.392 396.450,338.637 396.000,338.545 396.000 C 338.454 396.000,338.058 396.450,337.667 397.000 M308.000 396.667 C 307.313 396.887,307.284 396.939,307.833 396.962 C 308.200 396.977,308.725 396.844,309.000 396.667 C 309.584 396.289,309.179 396.289,308.000 396.667 M263.005 397.092 C 262.990 397.907,272.471 407.306,272.888 406.890 C 272.975 406.803,272.501 406.305,271.836 405.783 C 270.147 404.458,266.468 400.844,264.588 398.664 C 263.720 397.657,263.007 396.950,263.005 397.092 M294.667 397.333 C 294.942 397.511,295.542 397.648,296.000 397.638 C 296.763 397.621,296.777 397.596,296.167 397.333 C 295.180 396.909,294.011 396.909,294.667 397.333 M304.833 397.333 C 304.238 397.589,304.263 397.622,305.064 397.643 C 305.557 397.656,306.053 397.517,306.167 397.333 C 306.413 396.935,305.759 396.935,304.833 397.333 M33.333 397.827 C 33.333 397.914,33.933 398.293,34.667 398.667 C 36.319 399.510,36.417 399.312,34.814 398.366 C 33.593 397.646,33.333 397.551,33.333 397.827 M59.520 398.177 C 59.164 398.446,59.023 398.667,59.206 398.667 C 59.389 398.667,59.830 398.446,60.186 398.177 C 60.542 397.908,60.683 397.688,60.500 397.688 C 60.317 397.688,59.875 397.908,59.520 398.177 M336.324 398.583 C 336.312 398.897,333.638 401.713,331.577 403.583 C 330.718 404.363,330.160 405.000,330.337 405.000 C 330.755 405.000,336.667 399.071,336.667 398.652 C 336.667 398.279,336.338 398.214,336.324 398.583 M84.725 399.505 C 83.698 400.685,83.821 401.019,84.867 399.891 C 85.344 399.377,85.670 398.892,85.592 398.814 C 85.513 398.736,85.123 399.047,84.725 399.505 M55.333 399.854 C 54.598 400.132,54.413 400.297,54.833 400.299 C 55.200 400.302,55.950 400.097,56.500 399.845 C 57.773 399.263,56.879 399.269,55.333 399.854 M40.158 400.653 C 40.276 400.844,40.764 401.000,41.242 401.000 C 42.287 401.000,42.166 400.840,40.889 400.534 C 40.269 400.385,40.018 400.426,40.158 400.653 M52.333 400.667 C 51.538 400.922,51.548 400.935,52.564 400.967 C 53.149 400.985,53.720 400.850,53.833 400.667 C 54.070 400.283,53.530 400.283,52.333 400.667 M44.833 401.333 C 44.947 401.517,45.922 401.667,47.000 401.667 C 48.078 401.667,49.053 401.517,49.167 401.333 C 49.297 401.123,48.497 401.000,47.000 401.000 C 45.503 401.000,44.703 401.123,44.833 401.333 M80.114 405.022 C 78.434 406.679,77.182 407.990,77.330 407.934 C 77.862 407.735,83.659 401.994,83.318 402.005 C 83.235 402.007,81.793 403.365,80.114 405.022 M328.869 405.832 C 328.523 406.094,328.073 406.369,327.869 406.442 C 327.666 406.516,327.603 406.686,327.728 406.821 C 327.854 406.957,328.377 406.677,328.891 406.200 C 329.901 405.264,329.889 405.060,328.869 405.832 M273.333 407.169 C 273.333 407.435,278.053 410.391,278.217 410.227 C 278.298 410.147,277.382 409.506,276.182 408.804 C 274.982 408.102,274.000 407.409,274.000 407.264 C 274.000 407.119,273.850 407.000,273.667 407.000 C 273.483 407.000,273.333 407.076,273.333 407.169 M326.247 407.638 C 325.104 408.371,324.800 408.667,325.194 408.665 C 325.362 408.664,325.950 408.294,326.500 407.844 C 327.665 406.888,327.556 406.799,326.247 407.638 M75.167 409.519 C 74.545 410.047,74.429 410.243,74.861 410.036 C 75.480 409.739,76.604 408.664,76.291 408.668 C 76.223 408.669,75.717 409.052,75.167 409.519 M323.343 409.516 C 322.706 409.966,322.331 410.333,322.509 410.332 C 322.688 410.331,323.283 409.961,323.833 409.510 C 325.117 408.458,324.837 408.461,323.343 409.516 M319.167 411.495 C 317.883 412.113,316.936 412.630,317.061 412.643 C 317.384 412.676,321.434 410.945,321.817 410.610 C 322.449 410.057,321.474 410.382,319.167 411.495 M71.833 411.863 L 70.833 412.722 71.917 412.005 C 72.512 411.611,73.000 411.223,73.000 411.144 C 73.000 410.894,72.859 410.981,71.833 411.863 M280.520 411.489 C 280.875 411.759,281.399 411.984,281.683 411.989 C 281.967 411.995,282.377 412.178,282.594 412.394 C 282.811 412.611,283.066 412.712,283.161 412.617 C 283.255 412.523,282.920 412.253,282.416 412.017 C 281.912 411.782,281.240 411.456,280.921 411.294 C 280.025 410.838,279.802 410.947,280.520 411.489 M369.885 412.750 C 369.970 412.887,374.380 413.000,379.686 413.000 C 384.992 413.000,389.333 412.887,389.333 412.750 C 389.333 412.613,384.923 412.500,379.532 412.500 C 374.141 412.500,369.800 412.613,369.885 412.750 M23.000 412.830 C 23.000 413.058,25.041 414.070,25.193 413.918 C 25.266 413.845,24.802 413.537,24.162 413.232 C 23.523 412.927,23.000 412.746,23.000 412.830 M69.167 413.356 C 68.617 413.708,68.317 413.996,68.500 413.996 C 68.683 413.996,69.283 413.698,69.833 413.333 C 70.383 412.969,70.683 412.681,70.500 412.693 C 70.317 412.705,69.717 413.004,69.167 413.356 M286.333 413.667 C 287.473 414.032,288.349 414.032,287.500 413.667 C 287.133 413.509,286.533 413.385,286.167 413.390 C 285.631 413.398,285.663 413.452,286.333 413.667 M312.833 413.667 C 311.984 414.032,312.860 414.032,314.000 413.667 C 314.670 413.452,314.703 413.398,314.167 413.390 C 313.800 413.385,313.200 413.509,312.833 413.667 M66.053 414.720 C 65.258 415.086,64.679 415.457,64.767 415.545 C 64.930 415.708,68.000 414.365,68.000 414.130 C 68.000 413.900,67.531 414.042,66.053 414.720 M290.000 414.514 C 291.008 414.766,292.283 414.966,292.833 414.958 C 293.486 414.949,293.139 414.788,291.833 414.493 C 289.214 413.903,287.624 413.921,290.000 414.514 M309.559 414.219 C 309.439 414.339,308.777 414.559,308.087 414.708 L 306.833 414.978 308.167 414.824 C 308.900 414.740,310.100 414.537,310.833 414.374 L 312.167 414.077 310.972 414.038 C 310.315 414.017,309.679 414.098,309.559 414.219 M297.540 415.396 C 299.028 415.540,301.353 415.539,302.706 415.395 C 304.788 415.173,304.372 415.132,300.000 415.133 C 295.420 415.134,295.141 415.164,297.540 415.396 M29.333 416.000 C 29.608 416.178,30.058 416.323,30.333 416.323 C 30.778 416.323,30.778 416.287,30.333 416.000 C 30.058 415.822,29.608 415.677,29.333 415.677 C 28.889 415.677,28.889 415.713,29.333 416.000 M32.167 416.843 C 33.894 417.465,34.495 417.450,33.045 416.820 C 32.428 416.552,31.678 416.340,31.378 416.348 C 31.079 416.356,31.433 416.579,32.167 416.843 M60.167 416.845 C 59.368 417.211,59.305 417.306,59.850 417.318 C 60.226 417.327,60.676 417.198,60.850 417.032 C 61.024 416.867,61.467 416.659,61.833 416.571 L 62.500 416.411 61.833 416.399 C 61.467 416.393,60.717 416.594,60.167 416.845 M35.167 417.667 C 36.093 418.065,36.746 418.065,36.500 417.667 C 36.387 417.483,35.890 417.344,35.397 417.357 C 34.596 417.378,34.571 417.411,35.167 417.667 M57.000 417.667 C 56.556 417.954,56.556 417.990,57.000 417.990 C 57.275 417.990,57.725 417.844,58.000 417.667 C 58.444 417.379,58.444 417.344,58.000 417.344 C 57.725 417.344,57.275 417.489,57.000 417.667 M39.667 418.510 C 42.112 419.089,51.630 419.002,54.333 418.375 C 55.663 418.067,55.569 418.053,53.500 418.251 C 50.428 418.545,42.772 418.536,39.833 418.235 L 37.500 417.996 39.667 418.510 " stroke="none" fill="#595959" fill-rule="evenodd"></path><path id="path4" d="M213.146 2.417 L 212.167 3.500 213.250 2.521 C 213.846 1.983,214.333 1.495,214.333 1.438 C 214.333 1.180,214.058 1.407,213.146 2.417 M211.762 6.500 C 211.765 7.417,211.829 7.752,211.906 7.245 C 211.982 6.739,211.980 5.989,211.901 5.579 C 211.822 5.169,211.760 5.583,211.762 6.500 M174.543 15.508 C 174.384 15.922,174.470 15.950,175.008 15.663 C 175.780 15.249,175.853 15.000,175.202 15.000 C 174.947 15.000,174.650 15.228,174.543 15.508 M181.437 21.167 C 181.438 22.267,181.501 22.676,181.575 22.077 C 181.649 21.478,181.648 20.578,181.572 20.077 C 181.495 19.576,181.435 20.067,181.437 21.167 M211.491 48.000 C 211.491 60.375,211.532 65.438,211.583 59.250 C 211.634 53.063,211.634 42.938,211.583 36.750 C 211.532 30.563,211.491 35.625,211.491 48.000 M181.496 96.500 C 181.496 128.400,181.535 141.401,181.583 125.390 C 181.631 109.380,181.631 83.280,181.583 67.390 C 181.535 51.501,181.496 64.600,181.496 96.500 M201.817 59.833 C 201.817 66.250,201.862 68.828,201.916 65.562 C 201.971 62.296,201.971 57.046,201.916 53.895 C 201.861 50.744,201.817 53.417,201.817 59.833 M153.884 49.250 C 153.799 49.387,156.378 49.462,159.615 49.415 C 170.483 49.257,171.562 49.139,162.770 49.069 C 157.968 49.031,153.970 49.112,153.884 49.250 M222.694 49.122 C 222.771 49.189,227.408 49.317,233.000 49.408 C 239.251 49.508,241.369 49.477,238.500 49.326 C 233.491 49.063,222.465 48.921,222.694 49.122 M205.755 101.573 C 206.261 101.649,207.011 101.647,207.421 101.568 C 207.831 101.489,207.417 101.426,206.500 101.429 C 205.583 101.431,205.248 101.496,205.755 101.573 M229.167 113.702 C 229.167 115.538,229.264 116.694,229.383 116.270 C 229.672 115.245,229.678 111.647,229.393 110.931 C 229.269 110.618,229.167 111.865,229.167 113.702 M218.773 113.667 C 218.773 114.858,218.834 115.346,218.908 114.750 C 218.982 114.154,218.982 113.179,218.908 112.583 C 218.834 111.987,218.773 112.475,218.773 113.667 M263.714 117.333 C 263.714 117.608,263.842 118.133,264.000 118.500 C 264.181 118.920,264.286 118.982,264.286 118.667 C 264.286 118.392,264.158 117.867,264.000 117.500 C 263.819 117.080,263.714 117.018,263.714 117.333 M133.493 124.449 C 133.366 125.641,133.327 126.815,133.408 127.058 C 133.489 127.301,133.659 126.390,133.785 125.035 C 133.911 123.679,133.949 122.504,133.870 122.425 C 133.790 122.346,133.621 123.256,133.493 124.449 M264.960 124.740 C 265.114 125.665,265.161 125.712,265.266 125.045 C 265.334 124.611,265.252 124.119,265.084 123.951 C 264.899 123.766,264.851 124.077,264.960 124.740 M205.243 125.907 C 205.834 125.981,206.884 125.982,207.576 125.910 C 208.267 125.838,207.783 125.778,206.500 125.776 C 205.217 125.775,204.651 125.834,205.243 125.907 M265.417 129.167 C 265.421 129.900,265.489 130.161,265.569 129.746 C 265.649 129.331,265.646 128.731,265.562 128.413 C 265.479 128.094,265.414 128.433,265.417 129.167 M133.107 130.333 C 133.107 131.525,133.167 132.012,133.241 131.417 C 133.315 130.821,133.315 129.846,133.241 129.250 C 133.167 128.654,133.107 129.142,133.107 130.333 M265.448 133.833 C 265.449 135.300,265.507 135.859,265.578 135.075 C 265.648 134.291,265.647 133.091,265.576 132.408 C 265.504 131.725,265.446 132.367,265.448 133.833 M133.367 134.361 C 133.385 135.354,133.517 136.542,133.660 137.000 C 133.807 137.470,133.845 136.744,133.748 135.333 C 133.543 132.372,133.319 131.803,133.367 134.361 M205.243 136.574 C 205.834 136.648,206.884 136.649,207.576 136.577 C 208.267 136.504,207.783 136.444,206.500 136.443 C 205.217 136.441,204.651 136.500,205.243 136.574 M265.417 137.833 C 265.421 138.567,265.489 138.827,265.569 138.413 C 265.649 137.998,265.646 137.398,265.562 137.079 C 265.479 136.761,265.414 137.100,265.417 137.833 M264.857 142.190 C 264.735 142.679,264.699 143.143,264.777 143.222 C 264.856 143.300,265.020 142.965,265.143 142.476 C 265.265 141.988,265.301 141.524,265.223 141.445 C 265.144 141.367,264.980 141.702,264.857 142.190 M204.039 222.056 C 204.017 222.362,203.914 222.887,203.808 223.223 C 203.626 223.801,203.636 223.802,203.997 223.240 C 204.207 222.913,204.310 222.388,204.228 222.073 C 204.092 221.557,204.074 221.555,204.039 222.056 M195.073 225.500 C 195.076 225.867,195.193 226.617,195.333 227.167 C 195.562 228.065,195.588 228.082,195.594 227.333 C 195.597 226.875,195.480 226.125,195.333 225.667 C 195.124 225.014,195.068 224.978,195.073 225.500 M195.762 232.833 C 195.765 233.750,195.829 234.085,195.906 233.579 C 195.982 233.072,195.980 232.322,195.901 231.912 C 195.822 231.502,195.760 231.917,195.762 232.833 M202.776 235.833 C 202.778 237.117,202.838 237.601,202.910 236.909 C 202.982 236.218,202.981 235.168,202.907 234.576 C 202.834 233.984,202.775 234.550,202.776 235.833 M195.333 247.610 C 194.579 248.346,194.569 248.387,195.231 248.043 C 195.634 247.834,196.061 247.504,196.181 247.309 C 196.592 246.646,196.168 246.796,195.333 247.610 M235.667 258.278 C 235.667 258.571,226.767 258.687,199.417 258.748 L 163.167 258.830 199.315 258.917 C 233.622 258.999,236.709 258.931,235.894 258.117 C 235.769 257.991,235.667 258.064,235.667 258.278 M136.429 290.833 C 136.431 291.750,136.496 292.085,136.573 291.579 C 136.649 291.072,136.647 290.322,136.568 289.912 C 136.489 289.502,136.426 289.917,136.429 290.833 M110.077 290.667 C 110.077 291.308,110.146 291.571,110.230 291.250 C 110.314 290.929,110.314 290.404,110.230 290.083 C 110.146 289.762,110.077 290.025,110.077 290.667 M369.381 295.110 C 368.961 295.615,368.661 326.806,369.080 326.387 C 369.216 326.251,369.366 319.171,369.413 310.653 L 369.500 295.167 379.500 294.993 L 389.500 294.818 379.624 294.743 C 371.746 294.682,369.674 294.756,369.381 295.110 M389.487 310.833 C 389.487 319.450,389.530 323.023,389.583 318.773 C 389.636 314.523,389.636 307.473,389.583 303.106 C 389.530 298.739,389.487 302.217,389.487 310.833 M200.402 324.247 C 201.632 324.311,203.732 324.311,205.069 324.248 C 206.406 324.184,205.400 324.132,202.833 324.132 C 200.267 324.131,199.173 324.183,200.402 324.247 M297.766 324.248 C 299.380 324.310,301.930 324.309,303.433 324.248 C 304.937 324.186,303.617 324.136,300.500 324.136 C 297.383 324.137,296.153 324.187,297.766 324.248 M133.500 369.667 C 133.500 393.282,133.612 412.533,133.750 412.448 C 133.887 412.364,134.000 393.112,134.000 369.667 C 134.000 346.222,133.887 326.970,133.750 326.885 C 133.612 326.800,133.500 346.052,133.500 369.667 M399.167 335.948 L 399.167 345.167 394.667 345.348 L 390.167 345.530 394.517 345.598 C 397.537 345.646,398.989 345.544,399.267 345.267 C 399.718 344.816,399.862 327.160,399.417 326.885 C 399.279 326.800,399.167 330.878,399.167 335.948 M360.813 336.000 C 360.813 341.042,360.859 343.104,360.916 340.583 C 360.972 338.063,360.972 333.938,360.916 331.417 C 360.859 328.896,360.813 330.958,360.813 336.000 M42.583 327.569 C 42.996 327.648,43.671 327.648,44.083 327.569 C 44.496 327.489,44.158 327.424,43.333 327.424 C 42.508 327.424,42.171 327.489,42.583 327.569 M49.750 327.563 C 50.071 327.647,50.596 327.647,50.917 327.563 C 51.237 327.479,50.975 327.411,50.333 327.411 C 49.692 327.411,49.429 327.479,49.750 327.563 M55.361 328.120 C 55.438 328.186,55.950 328.340,56.500 328.463 C 57.230 328.627,57.365 328.596,57.000 328.349 C 56.550 328.044,55.027 327.831,55.361 328.120 M20.471 332.473 C 20.493 334.210,20.624 334.821,21.000 334.944 C 21.401 335.076,21.421 335.013,21.102 334.626 C 20.883 334.361,20.645 333.249,20.573 332.155 C 20.449 330.263,20.444 330.278,20.471 332.473 M0.415 389.517 C 0.352 435.066,0.425 448.625,0.733 448.933 C 1.029 449.229,3.606 449.314,10.650 449.258 L 20.167 449.182 10.500 449.008 L 0.833 448.833 0.665 389.667 L 0.497 330.500 0.415 389.517 M273.500 332.196 L 272.500 333.055 273.583 332.338 C 274.179 331.944,274.667 331.556,274.667 331.477 C 274.667 331.228,274.526 331.315,273.500 332.196 M304.000 342.667 C 305.140 343.032,306.016 343.032,305.167 342.667 C 304.800 342.509,304.200 342.385,303.833 342.390 C 303.297 342.398,303.330 342.452,304.000 342.667 M363.417 345.578 C 364.287 345.647,365.712 345.647,366.583 345.578 C 367.454 345.510,366.742 345.453,365.000 345.453 C 363.258 345.453,362.546 345.510,363.417 345.578 M44.333 345.963 C 43.692 346.078,44.892 346.174,47.000 346.177 C 49.546 346.181,50.385 346.102,49.500 345.944 C 47.935 345.664,45.967 345.671,44.333 345.963 M389.494 379.167 C 389.494 397.683,389.534 405.307,389.583 396.109 C 389.633 386.910,389.633 371.760,389.583 362.442 C 389.534 353.124,389.494 360.650,389.494 379.167 M369.081 379.183 C 369.019 404.769,369.093 412.626,369.400 412.933 C 369.697 413.230,372.346 413.314,379.650 413.257 L 389.500 413.182 379.500 413.007 L 369.500 412.833 369.331 379.333 L 369.162 345.833 369.081 379.183 M51.833 346.667 C 50.911 346.901,50.898 346.924,51.667 346.955 C 52.125 346.974,52.725 346.844,53.000 346.667 C 53.567 346.300,53.274 346.300,51.833 346.667 M345.167 356.667 C 345.042 357.061,345.014 357.459,345.106 357.550 C 345.197 357.642,345.375 357.394,345.500 357.000 C 345.625 356.606,345.653 356.208,345.561 356.116 C 345.469 356.025,345.292 356.272,345.167 356.667 M212.573 358.833 C 212.676 359.933,212.813 360.896,212.880 360.972 C 213.113 361.241,212.930 358.490,212.660 357.667 C 212.491 357.149,212.458 357.591,212.573 358.833 M212.747 387.517 C 212.686 406.620,212.761 412.628,213.067 412.933 C 213.363 413.230,215.976 413.314,223.150 413.258 L 232.833 413.182 223.000 413.008 L 213.167 412.833 212.997 387.667 L 212.827 362.500 212.747 387.517 M346.776 369.833 C 346.778 371.117,346.838 371.601,346.910 370.909 C 346.982 370.218,346.981 369.168,346.907 368.576 C 346.834 367.984,346.775 368.550,346.776 369.833 M274.744 369.667 C 274.744 370.308,274.813 370.571,274.896 370.250 C 274.980 369.929,274.980 369.404,274.896 369.083 C 274.813 368.762,274.744 369.025,274.744 369.667 M21.433 373.000 C 21.433 374.008,21.496 374.421,21.572 373.917 C 21.648 373.412,21.648 372.587,21.572 372.083 C 21.496 371.579,21.433 371.992,21.433 373.000 M275.333 376.147 C 275.333 376.411,275.483 376.720,275.667 376.833 C 275.850 376.947,276.000 376.730,276.000 376.353 C 276.000 375.976,275.850 375.667,275.667 375.667 C 275.483 375.667,275.333 375.883,275.333 376.147 M92.744 379.333 C 92.744 379.975,92.813 380.238,92.896 379.917 C 92.980 379.596,92.980 379.071,92.896 378.750 C 92.813 378.429,92.744 378.692,92.744 379.333 M345.023 382.583 C 345.115 383.561,345.621 384.105,345.643 383.250 C 345.656 382.746,345.517 382.333,345.333 382.333 C 345.150 382.333,345.011 382.446,345.023 382.583 M304.000 397.045 C 303.542 397.230,301.639 397.333,299.772 397.274 C 297.828 397.213,296.592 397.286,296.879 397.446 C 297.475 397.779,303.533 397.517,305.667 397.067 C 307.108 396.762,307.121 396.749,306.000 396.730 C 305.358 396.718,304.458 396.860,304.000 397.045 M49.417 400.896 C 49.737 400.980,50.262 400.980,50.583 400.896 C 50.904 400.813,50.642 400.744,50.000 400.744 C 49.358 400.744,49.096 400.813,49.417 400.896 M333.812 402.083 L 332.833 403.167 333.917 402.188 C 334.926 401.275,335.153 401.000,334.896 401.000 C 334.838 401.000,334.351 401.488,333.812 402.083 M20.486 412.417 C 20.399 412.646,20.366 421.008,20.414 431.000 L 20.500 449.167 20.667 430.583 C 20.758 420.362,20.791 412.000,20.740 412.000 C 20.688 412.000,20.574 412.188,20.486 412.417 M113.621 413.089 C 113.762 413.229,118.217 413.304,123.522 413.255 L 133.167 413.166 123.266 413.000 C 117.821 412.908,113.481 412.948,113.621 413.089 M158.885 413.083 C 158.970 413.221,163.447 413.333,168.833 413.333 C 174.220 413.333,178.697 413.221,178.782 413.083 C 178.867 412.946,174.390 412.833,168.833 412.833 C 163.277 412.833,158.800 412.946,158.885 413.083 M295.917 415.569 C 296.329 415.648,297.004 415.648,297.417 415.569 C 297.829 415.489,297.492 415.424,296.667 415.424 C 295.842 415.424,295.504 415.489,295.917 415.569 M302.755 415.573 C 303.261 415.649,304.011 415.647,304.421 415.568 C 304.831 415.489,304.417 415.426,303.500 415.429 C 302.583 415.431,302.248 415.496,302.755 415.573 M299.250 415.902 C 299.662 415.981,300.337 415.981,300.750 415.902 C 301.162 415.822,300.825 415.757,300.000 415.757 C 299.175 415.757,298.837 415.822,299.250 415.902 M53.333 418.667 C 52.663 418.881,52.631 418.935,53.167 418.943 C 53.533 418.949,54.133 418.824,54.500 418.667 C 55.349 418.302,54.473 418.302,53.333 418.667 " stroke="none" fill="#848484" fill-rule="evenodd"></path><path id="path0" d="M214.534 0.500 C 214.186 0.763,213.776 0.901,213.621 0.805 C 213.467 0.710,213.430 0.865,213.539 1.149 C 213.650 1.437,213.563 1.667,213.345 1.667 C 211.781 1.667,210.005 8.013,211.339 8.837 C 211.525 8.952,211.577 9.209,211.454 9.408 C 211.311 9.639,211.388 9.672,211.668 9.499 C 211.993 9.298,212.057 9.413,211.917 9.948 C 211.813 10.344,211.849 10.593,211.996 10.502 C 212.262 10.338,212.817 11.282,212.724 11.738 C 212.697 11.869,212.922 11.881,213.225 11.765 C 213.624 11.612,213.701 11.675,213.503 11.995 C 213.313 12.303,213.358 12.357,213.652 12.175 C 213.899 12.023,214.193 12.106,214.358 12.374 C 214.807 13.099,219.048 13.000,219.801 12.247 C 220.123 11.924,220.523 11.745,220.690 11.848 C 220.856 11.950,220.901 11.796,220.789 11.504 C 220.656 11.159,220.746 11.007,221.042 11.070 C 221.294 11.123,221.463 10.979,221.417 10.750 C 221.371 10.521,221.477 10.333,221.652 10.333 C 221.827 10.333,222.069 9.807,222.189 9.163 C 222.310 8.519,222.542 7.910,222.704 7.810 C 223.138 7.542,223.069 5.000,222.628 5.000 C 222.412 5.000,222.322 4.655,222.413 4.177 C 222.511 3.666,222.441 3.434,222.229 3.565 C 222.021 3.693,221.970 3.559,222.098 3.225 C 222.214 2.922,222.202 2.710,222.071 2.754 C 221.721 2.871,220.283 1.352,220.465 1.057 C 220.550 0.918,220.296 0.781,219.899 0.751 C 219.501 0.721,219.124 0.540,219.060 0.348 C 218.885 -0.179,215.271 -0.057,214.534 0.500 M218.823 1.141 C 222.673 2.749,223.182 8.903,219.673 11.417 C 216.645 13.586,212.389 11.658,211.820 7.859 C 211.076 2.901,214.705 -0.580,218.823 1.141 M173.447 15.519 C 173.337 15.805,173.034 15.956,172.773 15.856 C 172.476 15.742,172.386 15.816,172.534 16.054 C 172.663 16.263,172.536 16.604,172.252 16.812 C 170.837 17.846,170.340 20.809,171.137 23.456 C 171.395 24.315,171.620 25.089,171.637 25.176 C 171.653 25.262,171.730 25.296,171.806 25.250 C 172.064 25.096,173.648 26.760,173.489 27.017 C 173.403 27.157,173.648 27.189,174.034 27.088 C 174.438 26.982,174.852 27.094,175.012 27.352 C 175.351 27.902,177.501 27.886,178.172 27.329 C 178.439 27.107,178.918 27.025,179.236 27.147 C 179.553 27.269,179.721 27.277,179.609 27.164 C 179.356 26.912,181.061 25.144,181.441 25.264 C 181.593 25.311,181.628 25.206,181.519 25.031 C 181.411 24.856,181.475 24.619,181.661 24.503 C 182.367 24.067,182.076 17.880,181.319 17.232 C 180.945 16.911,180.743 16.480,180.871 16.273 C 181.011 16.046,180.954 15.989,180.727 16.129 C 180.520 16.257,180.089 16.055,179.768 15.681 C 179.199 15.016,178.324 14.752,178.343 15.250 C 178.348 15.387,178.852 15.871,179.463 16.324 C 183.064 18.995,182.051 25.576,177.866 26.703 C 172.321 28.196,169.052 20.808,173.399 16.609 C 174.096 15.936,174.667 15.299,174.667 15.193 C 174.667 14.761,173.631 15.038,173.447 15.519 M195.836 22.392 C 194.921 22.566,193.934 22.925,193.642 23.189 C 193.351 23.452,192.988 23.555,192.836 23.417 C 192.684 23.279,192.651 23.327,192.762 23.523 C 192.873 23.718,192.672 24.089,192.315 24.346 C 191.959 24.603,191.667 25.015,191.667 25.260 C 191.667 25.505,191.554 25.636,191.417 25.552 C 191.279 25.467,191.167 26.943,191.167 28.833 C 191.167 30.723,191.279 32.200,191.417 32.115 C 191.554 32.030,191.667 32.186,191.667 32.461 C 191.667 32.737,191.947 33.158,192.289 33.398 C 192.631 33.637,192.931 33.983,192.955 34.167 C 192.980 34.350,193.112 34.513,193.250 34.529 C 193.620 34.571,194.752 35.005,195.412 35.358 C 196.175 35.765,197.117 35.750,197.542 35.324 C 197.730 35.136,198.346 34.949,198.910 34.908 C 199.474 34.867,199.879 34.743,199.811 34.632 C 199.612 34.307,201.192 32.970,201.459 33.237 C 201.593 33.370,201.593 33.197,201.461 32.852 C 201.280 32.381,201.331 32.292,201.662 32.497 C 201.940 32.669,202.023 32.640,201.887 32.420 C 201.768 32.227,201.893 31.641,202.166 31.118 C 202.817 29.870,202.802 27.676,202.137 26.725 C 201.846 26.309,201.704 25.718,201.821 25.411 C 201.939 25.105,201.949 24.940,201.843 25.046 C 201.737 25.152,201.072 24.660,200.364 23.953 C 199.513 23.101,198.777 22.667,198.186 22.667 C 197.676 22.667,197.382 22.524,197.500 22.333 C 197.613 22.150,197.660 22.017,197.603 22.037 C 197.546 22.058,196.751 22.217,195.836 22.392 M213.857 22.371 C 213.957 22.534,213.801 22.667,213.509 22.667 C 213.218 22.667,212.889 22.900,212.780 23.186 C 212.670 23.471,212.392 23.633,212.161 23.544 C 211.882 23.437,211.799 23.602,211.914 24.039 C 212.029 24.480,211.935 24.663,211.626 24.598 C 211.240 24.516,211.153 28.233,211.081 47.917 C 211.033 61.043,210.867 71.333,210.703 71.333 C 210.543 71.333,210.329 71.648,210.228 72.034 C 210.111 72.479,209.897 72.642,209.638 72.482 C 209.400 72.335,209.316 72.369,209.435 72.562 C 209.785 73.128,207.783 74.333,206.494 74.333 C 205.759 74.333,205.376 74.201,205.505 73.992 C 205.621 73.804,205.593 73.684,205.441 73.724 C 204.912 73.867,203.659 73.282,203.846 72.980 C 203.950 72.812,203.822 72.756,203.561 72.856 C 202.758 73.164,202.676 71.947,202.671 59.624 C 202.667 49.244,202.601 47.694,202.143 47.314 C 201.856 47.075,201.692 46.607,201.779 46.273 C 201.866 45.939,201.824 45.736,201.684 45.823 C 201.325 46.045,199.942 44.502,200.237 44.208 C 200.370 44.074,200.197 44.073,199.852 44.206 C 199.494 44.343,199.305 44.315,199.413 44.140 C 199.518 43.971,199.280 43.805,198.885 43.770 C 198.490 43.735,197.681 43.605,197.086 43.482 C 196.393 43.339,195.527 43.450,194.669 43.794 C 193.933 44.088,193.257 44.330,193.166 44.331 C 193.075 44.332,192.963 44.440,192.917 44.571 C 192.779 44.963,191.513 46.215,191.333 46.137 C 191.242 46.097,191.167 57.345,191.167 71.133 L 191.167 96.202 191.942 96.266 C 192.369 96.301,193.383 95.873,194.195 95.314 C 195.008 94.755,195.844 94.404,196.054 94.534 C 196.276 94.671,196.346 94.623,196.220 94.420 C 196.003 94.069,198.459 92.828,199.246 92.892 C 199.474 92.910,199.588 92.809,199.500 92.667 C 199.219 92.212,201.048 92.048,206.333 92.056 C 212.068 92.064,213.769 92.231,213.445 92.756 C 213.323 92.953,213.391 93.004,213.602 92.874 C 213.806 92.747,214.241 92.787,214.570 92.961 C 214.898 93.135,215.729 93.522,216.417 93.821 C 217.104 94.120,217.667 94.441,217.667 94.535 C 217.667 94.629,217.493 94.599,217.282 94.468 C 217.041 94.320,216.988 94.377,217.138 94.621 C 217.271 94.835,217.501 94.935,217.651 94.843 C 217.800 94.751,218.314 94.985,218.794 95.362 C 219.274 95.740,219.667 95.962,219.667 95.856 C 219.667 95.750,220.567 96.514,221.667 97.554 C 222.767 98.594,223.667 99.645,223.667 99.889 C 223.667 100.133,223.892 100.333,224.167 100.333 C 224.442 100.333,224.667 100.542,224.667 100.798 C 224.667 101.053,224.901 101.352,225.188 101.462 C 225.474 101.572,225.615 101.814,225.500 102.000 C 225.385 102.186,225.534 102.582,225.831 102.879 C 226.128 103.176,226.293 103.623,226.198 103.872 C 226.102 104.121,226.206 104.290,226.429 104.246 C 226.652 104.202,226.822 104.493,226.809 104.897 C 226.796 105.299,226.946 105.599,227.142 105.564 C 227.339 105.529,227.549 106.010,227.608 106.633 C 227.668 107.256,227.944 108.114,228.223 108.539 C 228.839 109.479,228.758 118.577,228.126 119.366 C 227.921 119.623,227.554 120.626,227.311 121.594 C 227.001 122.828,226.734 123.302,226.417 123.181 C 226.169 123.086,226.051 123.146,226.155 123.315 C 226.417 123.739,225.005 126.376,224.637 126.149 C 224.474 126.048,224.420 126.172,224.518 126.426 C 224.615 126.680,224.314 127.171,223.847 127.522 C 223.381 127.872,223.000 128.274,223.000 128.415 C 223.000 128.989,221.018 130.717,220.633 130.479 C 220.384 130.325,220.317 130.371,220.458 130.598 C 220.684 130.965,219.416 131.880,218.892 131.729 C 218.741 131.686,218.709 131.799,218.821 131.980 C 219.083 132.404,215.763 134.099,215.269 133.794 C 215.043 133.654,214.990 133.715,215.135 133.948 C 215.347 134.292,214.471 134.523,213.559 134.365 C 213.407 134.338,213.379 134.471,213.495 134.658 C 213.623 134.866,213.266 135.000,212.586 135.000 C 211.971 135.000,211.285 135.182,211.062 135.405 C 210.494 135.973,202.269 135.973,202.079 135.405 C 202.001 135.169,201.331 135.000,200.472 135.000 C 199.662 135.000,199.000 134.850,199.000 134.667 C 199.000 134.483,198.616 134.333,198.147 134.333 C 197.649 134.333,197.382 134.191,197.505 133.992 C 197.621 133.804,197.593 133.670,197.441 133.694 C 196.865 133.787,195.682 133.244,195.854 132.966 C 195.954 132.806,195.830 132.753,195.579 132.849 C 195.328 132.945,194.713 132.644,194.211 132.179 C 193.709 131.714,193.148 131.333,192.963 131.333 C 192.778 131.333,192.719 131.185,192.831 131.004 C 192.960 130.795,192.756 130.778,192.267 130.959 L 191.500 131.243 191.412 142.305 C 191.354 149.655,191.211 153.297,190.987 153.159 C 190.802 153.044,190.672 153.074,190.698 153.225 C 190.861 154.161,190.607 155.667,190.287 155.667 C 190.078 155.667,189.692 155.929,189.429 156.250 C 189.166 156.571,189.060 156.623,189.193 156.365 C 189.349 156.065,189.304 155.979,189.066 156.126 C 188.862 156.252,188.789 156.597,188.902 156.893 C 189.069 157.327,188.938 157.399,188.231 157.264 C 187.692 157.161,187.433 157.225,187.560 157.431 C 187.696 157.650,187.146 157.684,185.968 157.527 C 184.956 157.393,184.050 157.077,183.898 156.806 C 183.749 156.540,183.299 156.017,182.897 155.643 L 182.167 154.962 182.080 96.419 C 181.993 38.254,181.988 37.872,181.322 37.251 C 180.954 36.908,180.726 36.508,180.816 36.362 C 180.906 36.216,180.609 36.167,180.157 36.254 C 179.679 36.345,179.333 36.255,179.333 36.039 C 179.333 35.803,178.540 35.667,177.167 35.667 C 175.944 35.667,175.000 35.812,175.000 36.000 C 175.000 36.183,174.733 36.333,174.407 36.333 C 173.795 36.333,173.352 36.755,172.079 38.551 C 171.263 39.702,170.895 49.333,171.667 49.333 C 171.873 49.333,172.000 47.550,172.000 44.650 C 172.000 39.613,172.203 38.801,173.804 37.417 C 174.281 37.004,174.905 36.667,175.191 36.667 C 175.477 36.667,175.974 36.526,176.295 36.354 C 177.198 35.871,179.700 36.637,180.750 37.717 L 181.667 38.661 181.691 96.747 C 181.718 161.952,181.475 156.032,184.192 157.578 C 185.960 158.584,187.522 158.526,189.167 157.391 C 191.615 155.703,191.633 155.598,191.651 142.917 C 191.668 130.761,191.619 131.044,193.469 132.452 C 200.510 137.812,213.682 137.612,220.192 132.046 C 220.758 131.562,221.593 130.867,222.048 130.500 C 222.503 130.133,223.391 129.158,224.021 128.333 C 224.651 127.508,225.242 126.758,225.333 126.667 C 225.987 126.013,227.592 122.738,228.519 120.167 C 229.277 118.061,229.395 109.932,228.698 107.833 C 227.604 104.542,226.259 101.833,224.833 100.048 C 218.576 92.215,210.565 89.585,199.833 91.840 C 198.911 92.034,195.384 93.612,195.000 94.003 C 194.706 94.303,192.021 96.000,191.840 96.000 C 191.286 96.000,191.697 46.814,192.257 46.125 C 194.192 43.745,198.050 43.475,200.147 45.571 C 201.952 47.376,202.000 47.764,202.000 60.492 L 202.000 72.236 202.802 73.035 C 204.289 74.515,204.633 74.667,206.518 74.667 C 207.887 74.667,208.661 74.478,209.370 73.974 C 211.410 72.521,211.333 73.509,211.333 48.651 C 211.333 23.292,211.197 24.761,213.682 23.365 C 216.121 21.994,219.148 22.595,220.816 24.781 L 221.667 25.896 221.667 37.428 C 221.667 44.563,221.791 49.037,221.992 49.162 C 222.200 49.290,222.350 45.057,222.408 37.375 C 222.459 30.783,222.444 25.445,222.374 25.514 C 222.305 25.583,221.930 25.172,221.541 24.601 C 220.204 22.637,219.222 22.171,216.313 22.121 C 214.853 22.096,213.756 22.208,213.857 22.371 M199.199 23.885 C 203.532 26.724,202.098 33.958,197.085 34.552 C 193.628 34.962,191.667 32.895,191.667 28.844 L 191.667 26.026 193.003 24.702 C 194.821 22.903,197.217 22.587,199.199 23.885 M152.917 49.823 C 152.596 50.264,152.333 50.869,152.333 51.166 C 152.333 51.463,152.197 51.622,152.031 51.519 C 151.865 51.416,151.801 51.610,151.890 51.950 C 151.979 52.289,151.839 52.780,151.580 53.039 C 151.132 53.487,150.991 53.913,150.377 56.667 C 150.234 57.308,149.940 58.161,149.725 58.561 C 149.510 58.962,149.333 59.674,149.333 60.145 C 149.333 60.615,149.195 61.000,149.026 61.000 C 148.858 61.000,148.630 61.413,148.521 61.917 C 148.412 62.421,148.233 63.208,148.124 63.667 C 148.015 64.125,147.851 64.986,147.760 65.581 C 147.655 66.265,147.455 66.582,147.214 66.444 C 147.005 66.324,146.928 66.333,147.044 66.463 C 147.161 66.593,147.110 67.255,146.933 67.933 C 146.755 68.612,146.503 69.767,146.373 70.500 C 146.228 71.322,145.974 71.798,145.711 71.742 C 145.476 71.691,145.382 71.809,145.502 72.004 C 145.623 72.198,145.488 73.140,145.202 74.096 C 144.917 75.051,144.639 76.208,144.584 76.667 C 144.529 77.125,144.332 77.473,144.145 77.440 C 143.946 77.405,143.864 77.878,143.947 78.589 L 144.088 79.798 144.504 78.649 C 144.733 78.017,145.103 76.825,145.328 76.000 C 145.552 75.175,145.945 73.895,146.201 73.156 C 146.457 72.416,146.667 71.487,146.667 71.092 C 146.667 70.696,146.796 70.292,146.955 70.194 C 147.114 70.096,147.337 69.525,147.451 68.925 C 147.565 68.324,147.898 67.008,148.191 66.000 C 149.061 63.006,149.258 62.295,149.992 59.500 C 150.918 55.972,151.024 55.680,153.120 50.917 C 154.000 48.917,153.914 48.452,152.917 49.823 M239.000 49.323 C 244.688 49.589,246.468 50.581,247.095 53.833 C 247.202 54.383,247.536 55.658,247.839 56.667 C 248.508 58.891,248.930 60.406,249.370 62.154 C 249.552 62.880,249.825 63.630,249.976 63.820 C 250.126 64.011,250.331 64.617,250.431 65.167 C 250.796 67.181,251.291 68.757,251.675 69.124 C 252.199 69.625,251.789 66.912,251.124 65.479 C 250.863 64.917,250.616 63.994,250.575 63.428 C 250.534 62.862,250.392 62.465,250.260 62.546 C 250.128 62.627,249.946 62.350,249.856 61.930 C 249.202 58.869,248.887 57.127,248.947 56.892 C 248.985 56.741,248.879 56.702,248.711 56.806 C 248.543 56.910,248.328 56.508,248.234 55.914 C 247.871 53.638,247.296 51.932,246.660 51.250 C 246.297 50.860,246.000 50.419,246.000 50.270 C 246.000 50.122,245.718 50.000,245.374 50.000 C 245.030 50.000,244.562 49.775,244.333 49.500 C 243.997 49.094,243.063 49.012,239.376 49.064 L 234.833 49.127 239.000 49.323 M252.000 70.752 C 252.000 71.210,252.225 71.772,252.500 72.000 C 252.922 72.350,253.000 72.285,253.000 71.582 C 253.000 71.123,252.775 70.562,252.500 70.333 C 252.078 69.983,252.000 70.049,252.000 70.752 M252.667 72.972 C 252.667 73.129,252.886 73.762,253.154 74.378 L 253.641 75.500 253.654 74.286 C 253.662 73.504,253.488 73.003,253.167 72.879 C 252.892 72.774,252.667 72.816,252.667 72.972 M253.667 76.201 C 253.667 76.462,253.802 76.936,253.967 77.255 C 254.133 77.573,254.746 79.483,255.330 81.500 C 256.721 86.306,256.838 86.726,257.610 89.667 C 257.972 91.042,258.521 93.067,258.832 94.167 C 259.143 95.267,259.514 96.692,259.656 97.333 C 260.228 99.922,260.737 101.868,261.007 102.500 C 261.164 102.867,261.361 103.692,261.446 104.333 C 261.531 104.975,261.856 106.550,262.168 107.833 C 262.479 109.117,262.862 110.917,263.017 111.833 C 263.529 114.862,263.971 115.804,263.923 113.767 C 263.901 112.813,263.759 112.110,263.608 112.203 C 263.457 112.296,263.308 111.726,263.276 110.936 C 263.183 108.575,263.157 108.379,262.907 108.129 C 262.775 107.997,262.667 107.449,262.667 106.911 C 262.667 106.374,262.454 105.461,262.195 104.884 C 261.935 104.306,261.629 103.308,261.515 102.667 C 261.104 100.350,260.715 98.473,260.354 97.062 C 260.152 96.271,260.067 95.494,260.166 95.335 C 260.264 95.176,260.169 94.938,259.954 94.805 C 259.694 94.644,259.654 94.709,259.833 95.000 C 260.012 95.289,259.973 95.356,259.718 95.198 C 259.507 95.068,259.333 94.677,259.333 94.330 C 259.333 93.983,259.091 92.829,258.795 91.766 C 258.499 90.703,257.966 88.562,257.611 87.009 C 257.255 85.455,256.857 84.105,256.727 84.009 C 256.467 83.818,255.729 81.432,255.434 79.833 C 255.333 79.283,255.106 78.653,254.931 78.433 C 254.756 78.214,254.662 77.553,254.723 76.965 C 254.807 76.152,254.694 75.877,254.250 75.811 C 253.927 75.764,253.667 75.938,253.667 76.201 M143.408 80.410 C 143.214 80.644,143.005 81.360,142.944 82.001 C 142.883 82.642,142.668 83.137,142.466 83.100 C 142.247 83.060,142.162 83.363,142.255 83.848 C 142.340 84.297,142.168 85.175,141.872 85.799 C 141.576 86.423,141.327 87.286,141.319 87.717 C 141.294 89.006,140.483 91.706,140.204 91.426 C 140.061 91.283,139.987 91.317,140.040 91.500 C 140.212 92.102,139.644 94.333,139.318 94.333 C 139.143 94.333,139.000 94.858,139.000 95.500 C 139.000 97.459,139.474 96.813,140.286 93.750 C 140.710 92.146,141.178 90.458,141.325 90.000 C 141.472 89.542,141.850 88.192,142.166 87.000 C 142.482 85.808,142.854 84.533,142.992 84.167 C 143.867 81.853,144.122 79.550,143.408 80.410 M138.737 97.677 C 138.515 98.033,138.333 98.692,138.333 99.142 C 138.333 99.592,138.190 100.049,138.015 100.158 C 137.839 100.266,137.520 101.247,137.306 102.338 C 137.091 103.428,136.812 104.256,136.685 104.178 C 136.558 104.099,136.522 104.499,136.605 105.065 C 136.724 105.873,136.657 106.037,136.295 105.827 C 136.041 105.680,135.930 105.668,136.048 105.800 C 136.166 105.932,136.055 106.819,135.802 107.770 C 135.549 108.722,135.334 110.025,135.325 110.667 C 135.317 111.308,135.095 112.208,134.833 112.667 C 134.571 113.125,134.352 114.108,134.345 114.850 C 134.339 115.593,134.185 116.348,134.005 116.529 C 133.567 116.966,133.001 122.498,133.052 125.833 L 133.093 128.500 133.370 126.000 C 134.135 119.077,134.681 115.389,135.318 112.833 C 135.547 111.917,135.881 110.567,136.061 109.833 C 136.517 107.974,137.009 106.093,137.500 104.333 C 137.730 103.508,138.075 102.233,138.266 101.500 C 138.457 100.767,138.786 99.515,138.997 98.718 C 139.428 97.087,139.336 96.719,138.737 97.677 M202.667 101.543 C 201.658 101.810,200.652 102.047,200.431 102.070 C 200.210 102.093,200.084 102.200,200.151 102.309 C 200.218 102.417,199.724 102.778,199.053 103.110 C 197.929 103.667,195.333 106.819,195.333 107.627 C 195.333 107.811,195.160 108.068,194.948 108.198 C 194.690 108.358,194.653 108.283,194.835 107.968 C 194.987 107.707,194.979 107.616,194.819 107.763 C 194.660 107.907,194.477 108.420,194.413 108.904 C 194.348 109.387,194.154 110.046,193.981 110.369 C 193.547 111.179,193.585 116.095,194.034 117.234 C 194.815 119.218,196.124 121.667,196.403 121.667 C 196.564 121.667,196.652 121.926,196.598 122.243 C 196.544 122.559,196.650 122.827,196.833 122.838 C 197.505 122.877,198.680 123.709,198.492 124.013 C 198.386 124.185,198.531 124.236,198.816 124.127 C 199.101 124.018,199.333 124.084,199.333 124.273 C 199.333 124.706,201.222 125.667,202.071 125.667 C 202.420 125.667,202.624 125.799,202.524 125.962 C 202.422 126.127,204.183 126.266,206.513 126.278 C 209.062 126.291,210.609 126.176,210.489 125.983 C 210.382 125.809,210.753 125.667,211.314 125.667 C 211.874 125.667,212.333 125.517,212.333 125.333 C 212.333 125.150,212.548 125.000,212.810 125.000 C 213.071 125.000,213.520 124.765,213.807 124.479 C 214.094 124.192,214.503 124.065,214.716 124.197 C 214.950 124.342,215.013 124.291,214.876 124.068 C 214.750 123.866,214.956 123.535,215.333 123.333 C 215.713 123.130,215.916 122.800,215.788 122.593 C 215.639 122.351,215.749 122.294,216.101 122.429 C 216.401 122.544,216.748 122.471,216.874 122.267 C 217.021 122.030,216.935 121.984,216.635 122.140 C 216.377 122.273,216.429 122.168,216.750 121.905 C 217.071 121.642,217.333 121.189,217.333 120.900 C 217.333 120.610,217.483 120.280,217.667 120.167 C 217.850 120.053,218.000 119.726,218.000 119.440 C 218.000 119.014,217.908 118.995,217.500 119.333 C 217.225 119.562,217.000 119.886,217.000 120.055 C 217.000 120.632,214.502 123.093,212.833 124.161 C 207.600 127.509,200.322 126.086,196.660 121.000 C 194.491 117.988,193.820 114.836,194.573 111.199 C 194.842 109.898,195.164 108.759,195.288 108.667 C 195.412 108.575,195.695 108.088,195.916 107.584 C 197.690 103.547,203.969 100.628,208.699 101.642 C 212.327 102.421,214.579 103.894,216.642 106.839 C 217.389 107.905,218.000 108.525,218.000 108.217 C 218.000 107.577,217.432 106.502,216.583 105.537 C 216.262 105.173,216.000 104.753,216.000 104.604 C 216.000 104.455,215.858 104.333,215.684 104.333 C 215.510 104.333,214.963 103.958,214.468 103.500 C 213.974 103.042,213.304 102.667,212.979 102.667 C 212.654 102.667,212.334 102.503,212.268 102.304 C 211.886 101.159,205.903 100.685,202.667 101.543 M218.000 109.406 C 218.000 109.659,218.135 110.009,218.301 110.183 C 218.467 110.357,218.680 110.800,218.775 111.167 C 218.870 111.533,218.922 111.245,218.891 110.526 C 218.839 109.350,218.000 108.294,218.000 109.406 M218.667 116.171 C 218.667 116.449,218.493 116.954,218.281 117.294 C 217.878 117.938,218.127 119.167,218.601 118.874 C 218.904 118.687,219.137 115.667,218.849 115.667 C 218.749 115.667,218.667 115.894,218.667 116.171 M263.837 116.328 C 263.722 116.514,263.719 116.814,263.830 116.995 C 263.942 117.175,264.159 117.963,264.313 118.745 L 264.594 120.167 264.630 118.270 C 264.665 116.476,264.299 115.580,263.837 116.328 M264.889 121.556 C 264.556 121.888,264.621 123.488,264.982 123.850 C 265.155 124.024,265.352 125.067,265.419 126.167 C 265.513 127.711,265.555 127.463,265.604 125.083 C 265.644 123.096,265.541 122.000,265.314 122.000 C 265.120 122.000,265.053 121.850,265.167 121.667 C 265.400 121.289,265.225 121.219,264.889 121.556 M265.500 133.502 C 265.500 136.003,265.594 136.636,265.944 136.502 C 266.188 136.409,266.451 136.333,266.527 136.333 C 266.828 136.333,266.646 131.584,266.322 130.978 C 265.679 129.777,265.500 130.325,265.500 133.502 M132.978 135.219 C 132.899 136.898,132.924 138.215,133.035 138.146 C 133.145 138.077,133.330 139.243,133.446 140.737 C 133.561 142.231,133.785 143.539,133.943 143.643 C 134.102 143.748,134.324 144.637,134.438 145.619 C 134.551 146.601,134.779 147.576,134.943 147.785 C 135.227 148.146,135.669 150.307,135.782 151.885 C 135.810 152.280,135.971 152.518,136.140 152.413 C 136.310 152.309,136.349 152.479,136.227 152.796 C 136.106 153.111,136.126 153.295,136.271 153.205 C 136.415 153.116,136.733 153.746,136.975 154.605 C 137.218 155.464,137.635 156.516,137.901 156.944 C 138.166 157.371,138.299 157.941,138.196 158.211 C 138.092 158.481,138.140 158.619,138.302 158.519 C 138.618 158.324,139.000 159.071,139.000 159.884 C 139.000 160.158,139.234 160.615,139.519 160.900 C 139.805 161.186,139.961 161.620,139.867 161.866 C 139.773 162.111,139.862 162.415,140.066 162.541 C 140.290 162.679,140.343 162.618,140.198 162.385 C 140.068 162.173,140.035 162.000,140.126 162.000 C 140.217 162.000,140.786 163.012,141.390 164.250 C 141.994 165.487,142.603 166.550,142.744 166.611 C 142.885 166.672,143.000 166.901,143.000 167.120 C 143.000 167.339,143.306 167.781,143.681 168.101 C 144.055 168.422,144.269 168.834,144.156 169.017 C 144.043 169.200,144.142 169.309,144.377 169.258 C 144.611 169.208,144.810 169.342,144.818 169.557 C 144.827 169.771,145.159 170.321,145.556 170.778 C 146.367 171.710,147.129 172.996,147.170 173.500 C 147.185 173.683,147.378 173.796,147.598 173.750 C 147.819 173.704,148.000 173.797,148.000 173.956 C 148.000 174.116,148.862 175.117,149.917 176.183 C 150.971 177.248,151.783 178.280,151.722 178.476 C 151.661 178.673,151.711 178.733,151.833 178.611 C 152.123 178.321,153.534 179.732,153.389 180.167 C 153.328 180.350,153.375 180.402,153.494 180.283 C 153.614 180.164,154.213 180.539,154.826 181.117 C 156.043 182.263,156.414 182.566,157.667 183.435 C 158.125 183.753,158.503 184.197,158.507 184.423 C 158.512 184.649,158.774 184.789,159.091 184.735 C 159.430 184.678,159.667 184.849,159.667 185.152 C 159.667 185.435,159.883 185.667,160.147 185.667 C 160.411 185.667,160.734 185.840,160.865 186.052 C 161.023 186.306,160.955 186.345,160.667 186.167 C 160.384 185.992,160.311 186.027,160.459 186.267 C 160.585 186.471,160.907 186.554,161.175 186.451 C 161.447 186.346,161.751 186.500,161.866 186.799 C 161.979 187.093,162.289 187.333,162.555 187.333 C 162.836 187.333,162.940 187.495,162.802 187.718 C 162.655 187.956,162.710 188.013,162.947 187.866 C 163.157 187.736,163.832 188.013,164.446 188.482 C 165.060 188.950,165.745 189.333,165.968 189.333 C 166.190 189.333,166.281 189.482,166.169 189.663 C 166.052 189.852,166.186 189.908,166.483 189.794 C 166.767 189.685,167.000 189.744,167.000 189.925 C 167.000 190.107,167.262 190.350,167.583 190.466 C 168.662 190.856,169.834 191.663,169.761 191.965 C 169.722 192.130,169.964 192.193,170.299 192.106 C 170.659 192.011,170.991 192.161,171.110 192.473 C 171.221 192.763,171.663 193.000,172.092 193.000 C 172.522 193.000,173.164 193.236,173.520 193.525 C 173.875 193.813,173.956 193.940,173.698 193.807 C 173.388 193.645,173.312 193.695,173.472 193.954 C 173.604 194.169,173.859 194.254,174.038 194.143 C 174.216 194.033,174.769 194.212,175.265 194.542 C 175.761 194.872,176.392 195.147,176.667 195.154 C 176.942 195.161,177.131 195.349,177.087 195.571 C 177.044 195.794,177.204 195.901,177.444 195.809 C 178.190 195.522,183.702 198.550,184.835 199.868 C 185.212 200.307,185.653 200.667,185.814 200.667 C 186.241 200.667,188.000 202.713,188.000 203.210 C 188.000 203.443,188.248 203.772,188.551 203.942 C 188.878 204.125,189.020 204.468,188.899 204.781 C 188.787 205.073,188.862 205.415,189.066 205.541 C 189.306 205.689,189.341 205.616,189.167 205.333 C 188.988 205.045,189.027 204.977,189.282 205.135 C 189.493 205.266,189.667 205.648,189.667 205.984 C 189.667 206.320,189.909 206.688,190.205 206.802 C 190.565 206.940,190.691 207.277,190.587 207.821 C 190.500 208.281,190.583 208.605,190.779 208.567 C 190.969 208.530,191.389 209.449,191.710 210.610 C 192.032 211.770,192.434 212.895,192.603 213.110 C 193.036 213.661,193.694 218.148,194.346 225.000 C 194.529 226.925,194.826 228.550,195.006 228.611 C 195.743 228.861,195.416 247.433,194.678 247.240 C 194.290 247.138,194.052 247.224,194.095 247.451 C 194.135 247.664,193.650 247.882,193.003 247.944 C 192.363 248.005,191.753 248.193,191.648 248.363 C 191.543 248.534,190.849 248.709,190.106 248.753 C 189.301 248.801,188.810 248.979,188.892 249.194 C 188.977 249.420,188.669 249.503,188.068 249.414 C 187.482 249.328,186.906 249.475,186.591 249.790 C 186.306 250.075,185.495 250.372,184.787 250.451 C 184.079 250.530,183.537 250.761,183.583 250.964 C 183.629 251.167,183.265 251.333,182.774 251.333 C 181.805 251.333,179.992 251.845,178.667 252.492 C 178.208 252.716,177.083 253.086,176.167 253.314 C 175.250 253.542,174.172 253.885,173.772 254.076 C 173.371 254.266,172.734 254.342,172.356 254.243 C 171.977 254.144,171.569 254.222,171.449 254.416 C 171.311 254.639,171.392 254.670,171.667 254.500 C 171.955 254.322,172.023 254.361,171.865 254.615 C 171.734 254.827,171.111 255.000,170.480 255.000 C 169.849 255.000,169.333 255.150,169.333 255.333 C 169.333 255.517,169.071 255.668,168.750 255.669 C 168.429 255.670,167.737 255.895,167.212 256.169 C 166.687 256.443,165.981 256.667,165.644 256.667 C 165.307 256.667,164.687 256.806,164.266 256.977 C 163.845 257.148,163.087 257.375,162.583 257.483 C 161.522 257.710,161.233 259.429,162.194 259.798 C 163.289 260.218,236.509 260.024,236.933 259.600 C 237.984 258.550,237.211 257.333,235.492 257.333 C 235.060 257.333,234.613 257.183,234.500 257.000 C 234.387 256.817,233.932 256.667,233.490 256.667 C 233.048 256.667,231.838 256.292,230.801 255.833 C 229.765 255.375,228.700 255.000,228.434 255.000 C 228.168 255.000,226.834 254.625,225.468 254.167 C 224.103 253.708,222.755 253.333,222.473 253.333 C 222.171 253.333,222.058 253.176,222.198 252.948 C 222.350 252.704,222.289 252.654,222.033 252.813 C 221.545 253.114,219.908 252.753,220.130 252.393 C 220.216 252.253,219.831 252.104,219.273 252.061 C 218.715 252.019,217.986 251.837,217.651 251.659 C 217.317 251.480,216.602 251.333,216.063 251.333 C 215.523 251.333,214.895 251.108,214.667 250.833 C 214.438 250.558,213.965 250.333,213.614 250.333 C 213.263 250.333,212.644 250.123,212.238 249.865 C 211.832 249.608,210.862 249.295,210.082 249.169 C 209.205 249.028,208.748 248.805,208.883 248.586 C 209.017 248.370,208.944 248.329,208.698 248.481 C 208.475 248.618,207.890 248.579,207.397 248.394 C 206.903 248.209,205.797 247.865,204.938 247.629 C 203.859 247.333,203.320 246.989,203.193 246.517 C 202.917 245.490,203.016 240.227,203.376 236.833 C 203.550 235.183,203.827 232.108,203.990 230.000 C 204.618 221.870,204.919 219.134,205.286 218.228 C 205.496 217.712,205.667 216.805,205.667 216.212 C 205.667 215.619,205.828 214.972,206.026 214.774 C 206.224 214.576,206.330 213.984,206.261 213.457 L 206.137 212.500 205.773 213.333 C 204.807 215.545,203.718 224.000,203.027 234.667 C 202.307 245.775,202.500 247.643,204.419 248.156 C 207.120 248.879,207.950 249.137,208.884 249.543 C 209.461 249.794,210.176 250.000,210.472 250.000 C 210.767 250.000,211.270 250.136,211.588 250.303 C 211.906 250.470,213.517 251.018,215.167 251.521 C 219.700 252.903,220.756 253.240,221.667 253.597 C 222.125 253.777,223.850 254.337,225.500 254.842 C 227.150 255.347,228.800 255.868,229.167 256.000 C 229.533 256.133,230.358 256.391,231.000 256.575 C 234.352 257.534,235.997 258.176,235.893 258.487 C 235.772 258.850,164.888 259.191,163.417 258.835 C 162.335 258.574,162.495 258.090,163.750 257.821 C 164.346 257.694,164.983 257.482,165.167 257.351 C 165.350 257.219,166.400 256.913,167.500 256.669 C 168.600 256.425,169.642 256.100,169.817 255.946 C 169.991 255.793,170.398 255.667,170.722 255.667 C 171.046 255.667,171.803 255.456,172.405 255.199 C 173.007 254.941,174.175 254.547,175.000 254.322 C 175.825 254.097,176.973 253.708,177.550 253.457 C 178.128 253.206,178.907 253.000,179.281 253.000 C 179.655 253.000,180.053 252.850,180.167 252.667 C 180.280 252.483,180.730 252.333,181.167 252.333 C 181.603 252.333,182.043 252.200,182.143 252.038 C 182.244 251.875,182.871 251.640,183.537 251.515 C 184.204 251.390,184.993 251.163,185.291 251.010 C 185.589 250.857,186.508 250.551,187.333 250.330 C 188.158 250.109,189.358 249.729,190.000 249.486 C 190.642 249.242,191.966 248.852,192.943 248.618 C 195.864 247.920,196.332 247.251,196.338 243.766 C 196.347 238.344,195.641 229.126,194.645 221.667 C 194.437 220.108,194.188 218.043,194.091 217.077 C 193.995 216.111,193.785 215.240,193.625 215.141 C 193.465 215.042,193.333 214.378,193.333 213.667 C 193.333 212.955,193.195 212.287,193.026 212.183 C 192.856 212.078,192.612 211.511,192.483 210.924 C 192.354 210.336,192.134 209.625,191.995 209.344 C 191.856 209.063,191.318 207.933,190.800 206.833 C 189.023 203.056,185.527 198.667,184.296 198.667 C 184.133 198.667,184.000 198.552,184.000 198.412 C 184.000 198.158,183.012 197.556,181.917 197.142 C 181.596 197.021,181.333 196.790,181.333 196.628 C 181.333 196.466,181.146 196.333,180.917 196.333 C 180.381 196.332,167.504 189.850,166.186 188.917 C 165.992 188.780,164.408 187.663,162.667 186.434 C 160.925 185.206,159.333 184.043,159.129 183.850 C 158.925 183.658,158.100 182.977,157.296 182.338 C 155.359 180.799,150.088 175.542,148.646 173.711 C 148.016 172.910,147.344 172.085,147.152 171.878 C 145.282 169.846,142.879 165.928,140.482 161.000 C 138.025 155.949,138.187 156.340,136.900 152.333 C 134.762 145.678,134.506 144.377,133.388 134.500 L 133.124 132.167 132.978 135.219 M265.212 140.917 C 265.102 141.971,264.926 143.433,264.822 144.167 C 264.645 145.415,264.666 145.459,265.150 144.853 C 265.517 144.393,265.667 143.455,265.667 141.603 C 265.667 138.523,265.491 138.258,265.212 140.917 M264.108 147.667 C 263.697 149.236,263.776 149.690,264.362 149.105 C 264.554 148.912,264.664 148.174,264.606 147.464 L 264.500 146.173 264.108 147.667 M263.417 150.569 C 263.188 151.063,263.000 151.877,263.000 152.380 C 263.000 152.883,262.862 153.380,262.692 153.484 C 262.523 153.589,262.279 154.155,262.150 154.743 C 262.021 155.331,261.797 156.041,261.652 156.322 C 261.508 156.603,261.132 157.433,260.818 158.167 C 259.866 160.391,257.692 164.760,256.907 166.029 C 255.682 168.008,254.252 170.128,253.865 170.539 C 253.664 170.752,253.200 171.352,252.833 171.872 C 250.030 175.852,239.450 185.402,235.607 187.421 C 235.177 187.648,234.376 188.139,233.829 188.512 C 233.281 188.885,232.383 189.410,231.833 189.678 C 231.283 189.946,230.758 190.257,230.667 190.369 C 230.523 190.544,226.800 192.378,220.000 195.625 C 218.992 196.106,218.092 196.592,218.000 196.705 C 217.908 196.818,217.496 197.015,217.083 197.144 C 216.671 197.273,216.333 197.518,216.333 197.689 C 216.333 197.860,216.170 198.000,215.970 198.000 C 215.309 198.000,213.008 199.826,213.155 200.233 C 213.234 200.453,213.111 200.560,212.880 200.472 C 211.889 200.092,208.874 204.465,207.345 208.500 C 207.206 208.867,206.847 209.734,206.546 210.428 C 205.852 212.030,205.837 212.550,206.500 212.000 C 206.775 211.772,207.000 211.247,207.000 210.833 C 207.000 210.420,207.225 209.895,207.500 209.667 C 207.775 209.438,208.000 208.895,208.000 208.459 C 208.000 208.023,208.150 207.667,208.333 207.667 C 208.517 207.667,208.667 207.292,208.667 206.833 C 208.667 206.375,208.814 206.000,208.994 206.000 C 209.173 206.000,209.415 205.625,209.530 205.167 C 209.645 204.708,209.873 204.333,210.036 204.333 C 210.200 204.333,210.333 204.017,210.333 203.631 C 210.333 203.133,210.484 202.986,210.851 203.127 C 211.135 203.236,211.288 203.197,211.191 203.039 C 210.933 202.622,212.235 201.233,212.645 201.487 C 212.861 201.620,212.909 201.485,212.773 201.129 C 212.630 200.756,212.682 200.637,212.923 200.786 C 213.126 200.911,213.425 200.776,213.588 200.486 C 213.750 200.196,214.130 199.922,214.432 199.878 C 214.734 199.833,215.098 199.669,215.240 199.512 C 215.383 199.355,215.275 199.339,215.000 199.475 C 214.725 199.612,214.875 199.415,215.333 199.036 C 215.792 198.658,216.413 198.345,216.714 198.341 C 217.016 198.337,217.354 198.093,217.467 197.799 C 217.598 197.457,217.878 197.343,218.243 197.483 C 218.556 197.603,218.699 197.588,218.560 197.449 C 218.312 197.201,218.973 196.783,221.550 195.556 C 224.666 194.072,225.190 193.855,225.580 193.889 C 225.807 193.909,225.915 193.799,225.820 193.646 C 225.726 193.493,226.179 193.267,226.829 193.146 C 227.478 193.024,228.134 192.702,228.286 192.430 C 228.438 192.158,228.942 191.913,229.405 191.885 C 229.983 191.849,230.191 191.685,230.067 191.362 C 229.959 191.078,230.031 190.980,230.250 191.115 C 230.450 191.238,230.813 191.150,231.056 190.919 C 231.593 190.412,234.900 188.617,235.186 188.678 C 235.297 188.702,235.489 188.611,235.611 188.474 C 235.733 188.338,235.646 188.334,235.417 188.466 C 235.188 188.598,235.000 188.625,235.000 188.526 C 235.000 188.428,235.573 188.055,236.272 187.698 C 236.972 187.341,237.739 186.814,237.977 186.528 C 238.214 186.242,238.530 186.082,238.678 186.174 C 238.826 186.265,239.243 185.963,239.605 185.503 C 239.967 185.043,240.429 184.667,240.631 184.667 C 240.834 184.667,241.000 184.549,241.000 184.405 C 241.000 184.072,243.076 182.819,243.441 182.932 C 243.593 182.978,243.631 182.879,243.528 182.711 C 243.424 182.544,243.675 182.183,244.086 181.909 C 244.497 181.636,245.499 180.757,246.313 179.956 C 247.127 179.155,247.914 178.537,248.063 178.583 C 248.212 178.629,248.296 178.539,248.250 178.382 C 248.204 178.225,248.767 177.498,249.500 176.765 C 251.251 175.015,252.000 174.075,252.000 173.627 C 252.000 173.426,252.200 173.339,252.444 173.433 C 252.689 173.526,252.889 173.425,252.889 173.208 C 252.889 172.698,253.998 171.000,254.331 171.000 C 254.471 171.000,254.771 170.552,254.998 170.004 C 255.225 169.457,255.566 169.105,255.757 169.222 C 255.947 169.340,256.011 169.288,255.899 169.106 C 255.786 168.924,256.132 168.263,256.667 167.638 C 257.202 167.012,257.646 166.246,257.653 165.936 C 257.661 165.626,257.814 165.281,257.995 165.170 C 258.175 165.058,259.052 163.476,259.942 161.653 C 260.833 159.831,261.668 158.446,261.799 158.576 C 261.929 158.707,261.936 158.554,261.814 158.237 C 261.691 157.916,261.831 157.299,262.130 156.842 C 262.425 156.392,262.667 155.709,262.667 155.325 C 262.667 154.883,262.807 154.714,263.052 154.865 C 263.277 155.004,263.346 154.957,263.220 154.752 C 262.961 154.333,263.323 152.288,263.624 152.473 C 263.739 152.544,263.877 151.942,263.930 151.135 C 264.043 149.425,263.980 149.356,263.417 150.569 M192.500 224.000 C 192.257 224.393,192.572 225.000,193.020 225.000 C 193.192 225.000,193.333 224.700,193.333 224.333 C 193.333 223.630,192.848 223.436,192.500 224.000 M119.551 277.417 C 119.636 277.554,119.504 277.667,119.257 277.667 C 119.010 277.667,118.229 277.962,117.521 278.323 C 116.814 278.683,116.119 278.907,115.977 278.819 C 115.836 278.732,115.414 279.049,115.040 279.525 C 114.666 280.000,114.206 280.294,114.017 280.177 C 113.806 280.047,113.759 280.185,113.894 280.537 C 114.059 280.967,113.996 281.041,113.640 280.835 C 113.380 280.683,113.267 280.672,113.389 280.808 C 113.699 281.154,112.622 282.345,112.222 282.098 C 112.032 281.980,112.005 282.072,112.158 282.319 C 112.301 282.551,112.284 282.837,112.118 282.954 C 111.611 283.314,110.667 284.949,110.667 285.469 C 110.667 285.739,110.493 286.068,110.282 286.198 C 110.027 286.356,109.988 286.289,110.167 286.000 C 110.328 285.739,110.305 285.645,110.109 285.766 C 109.487 286.151,109.753 294.715,110.418 295.693 C 110.739 296.166,110.894 296.662,110.761 296.795 C 110.628 296.928,110.712 297.156,110.948 297.301 C 111.185 297.447,111.415 297.818,111.460 298.126 C 111.505 298.433,111.646 298.643,111.774 298.592 C 112.044 298.485,113.498 300.713,113.400 301.083 C 113.363 301.221,113.446 301.297,113.583 301.253 C 113.995 301.120,115.348 302.207,115.091 302.464 C 114.961 302.595,115.136 302.593,115.482 302.461 C 115.924 302.291,116.037 302.337,115.863 302.618 C 115.728 302.837,115.741 302.989,115.892 302.954 C 116.043 302.920,116.617 303.089,117.167 303.329 C 117.717 303.569,118.767 303.862,119.500 303.980 C 120.233 304.099,120.800 304.365,120.759 304.571 C 120.707 304.831,121.479 304.914,123.259 304.840 C 126.360 304.711,126.694 304.648,126.441 304.239 C 126.325 304.051,126.796 303.974,127.597 304.050 C 128.350 304.122,128.923 304.038,128.891 303.859 C 128.859 303.684,129.109 303.480,129.447 303.406 C 129.784 303.333,130.352 302.981,130.709 302.624 C 131.066 302.268,131.490 302.058,131.652 302.158 C 131.814 302.258,132.239 301.968,132.596 301.514 C 132.953 301.061,133.348 300.792,133.473 300.918 C 133.599 301.044,133.593 300.862,133.460 300.515 C 133.266 300.011,133.333 299.928,133.793 300.105 C 134.114 300.228,134.284 300.189,134.177 300.017 C 134.072 299.847,134.224 299.575,134.514 299.412 C 134.804 299.250,135.074 298.903,135.114 298.642 C 135.229 297.879,135.687 297.307,136.019 297.512 C 136.188 297.616,136.247 297.496,136.151 297.245 C 136.055 296.995,136.205 296.349,136.486 295.811 C 136.766 295.273,136.997 294.337,136.998 293.730 C 136.999 293.124,137.117 292.700,137.260 292.788 C 137.679 293.047,136.983 286.926,136.474 285.876 C 136.219 285.350,136.106 284.764,136.224 284.575 C 136.346 284.376,136.274 284.331,136.052 284.468 C 135.830 284.605,135.667 284.506,135.667 284.233 C 135.667 283.802,134.822 282.762,132.440 280.261 C 131.966 279.763,131.073 279.189,130.456 278.985 C 129.838 278.782,129.333 278.494,129.333 278.346 C 129.333 278.199,128.996 277.966,128.583 277.828 C 127.542 277.482,119.359 277.109,119.551 277.417 M126.901 278.034 C 131.901 280.003,134.735 282.687,136.017 286.667 C 136.621 288.542,136.616 293.977,136.008 295.252 C 135.769 295.755,135.332 296.680,135.037 297.307 C 131.723 304.351,120.945 306.204,114.704 300.802 C 113.082 299.398,111.000 296.371,111.000 295.416 C 111.000 295.077,110.830 294.630,110.621 294.421 C 110.099 293.899,110.086 287.781,110.606 287.260 C 110.823 287.044,111.000 286.609,111.000 286.294 C 111.000 285.622,112.053 283.672,112.417 283.669 C 112.554 283.668,112.667 283.450,112.667 283.186 C 112.667 280.201,122.952 276.478,126.901 278.034 M368.871 294.060 C 368.948 294.185,368.858 294.381,368.672 294.497 C 368.450 294.634,368.333 300.168,368.333 310.520 L 368.333 326.333 364.176 326.333 L 360.019 326.333 359.926 336.116 C 359.866 342.478,359.950 345.898,360.167 345.897 C 360.350 345.896,362.262 345.919,364.417 345.947 L 368.333 346.000 368.333 379.355 C 368.333 401.710,368.447 412.923,368.678 413.355 C 369.008 413.971,369.481 414.000,379.306 414.000 L 389.589 414.000 389.790 413.250 C 389.900 412.837,389.993 397.537,389.995 379.250 L 390.000 346.000 394.981 346.000 L 399.963 346.000 399.990 336.167 L 400.017 326.333 395.009 326.333 L 390.000 326.333 389.947 310.417 C 389.919 301.662,389.896 294.350,389.897 294.167 C 389.898 293.951,386.149 293.833,379.314 293.833 C 373.493 293.833,368.793 293.935,368.871 294.060 M389.464 295.194 C 389.576 295.484,389.667 302.680,389.667 311.185 L 389.667 326.649 394.583 326.741 L 399.500 326.833 399.589 335.793 C 399.697 346.652,400.225 345.667,394.293 345.667 L 389.667 345.667 389.667 378.973 C 389.667 397.291,389.576 412.516,389.464 412.806 C 389.200 413.494,370.082 413.616,369.400 412.933 C 369.094 412.628,369.000 404.659,369.000 379.100 L 369.000 345.667 365.006 345.667 C 360.143 345.667,360.618 346.796,360.740 335.500 L 360.833 326.833 364.833 326.667 L 368.833 326.500 368.920 311.030 C 368.980 300.284,369.120 295.424,369.378 295.113 C 369.980 294.388,389.185 294.465,389.464 295.194 M195.750 323.892 C 195.338 323.977,195.000 324.160,195.000 324.299 C 195.000 324.438,194.526 324.482,193.946 324.396 C 193.195 324.286,192.768 324.411,192.462 324.829 C 192.177 325.219,191.749 325.363,191.193 325.257 C 190.731 325.168,190.419 325.202,190.499 325.331 C 190.638 325.556,190.416 325.686,188.167 326.691 C 187.617 326.937,186.914 327.347,186.604 327.602 C 186.295 327.857,185.859 327.952,185.636 327.814 C 185.377 327.654,185.316 327.703,185.468 327.948 C 185.603 328.166,185.512 328.333,185.260 328.333 C 185.015 328.333,184.558 328.633,184.244 329.000 C 183.930 329.367,183.455 329.667,183.189 329.667 C 182.922 329.667,182.490 329.973,182.228 330.347 C 181.965 330.722,181.551 330.984,181.307 330.931 C 181.063 330.877,180.857 331.026,180.848 331.262 C 180.840 331.498,180.608 331.831,180.333 332.002 C 179.908 332.266,179.809 331.881,179.667 329.406 L 179.500 326.500 168.833 326.500 L 158.167 326.500 158.167 370.167 L 158.167 413.833 168.644 413.922 C 176.804 413.990,179.181 413.916,179.389 413.588 C 179.536 413.356,179.659 402.038,179.662 388.436 C 179.665 372.315,179.783 363.634,180.000 363.500 C 180.183 363.387,180.333 362.037,180.333 360.500 C 180.333 358.963,180.483 357.613,180.667 357.500 C 180.850 357.387,181.000 356.845,181.000 356.297 C 181.000 355.749,181.212 354.890,181.471 354.389 C 181.731 353.887,182.047 352.921,182.175 352.241 C 182.302 351.562,182.538 351.087,182.699 351.187 C 182.861 351.286,182.903 351.135,182.794 350.851 C 182.685 350.566,182.744 350.333,182.925 350.333 C 183.107 350.333,183.338 350.018,183.439 349.633 C 183.555 349.188,183.770 349.024,184.029 349.185 C 184.294 349.348,184.351 349.297,184.191 349.039 C 183.928 348.614,186.310 346.000,186.961 346.000 C 187.166 346.000,187.333 345.857,187.333 345.682 C 187.333 344.999,192.292 343.203,193.635 343.400 C 194.183 343.480,194.556 343.423,194.463 343.273 C 194.048 342.602,202.577 343.263,203.489 343.973 C 203.678 344.121,204.230 344.336,204.716 344.452 C 205.797 344.710,208.391 346.821,208.067 347.180 C 207.939 347.323,207.985 347.355,208.170 347.250 C 208.355 347.146,208.791 347.646,209.140 348.363 C 209.489 349.080,209.900 349.667,210.054 349.667 C 210.207 349.667,210.333 350.033,210.333 350.480 C 210.333 350.928,210.483 351.387,210.667 351.500 C 210.850 351.613,211.000 352.213,211.000 352.833 C 211.000 353.453,211.152 354.055,211.339 354.170 C 211.525 354.285,211.578 354.557,211.457 354.773 C 211.299 355.054,211.361 355.050,211.674 354.760 C 212.483 354.010,210.496 348.621,208.653 346.567 C 202.694 339.924,186.453 341.685,182.781 349.372 C 179.377 356.499,179.241 357.880,179.020 387.833 L 178.833 413.167 168.833 413.167 L 158.833 413.167 158.749 369.917 L 158.664 326.667 168.832 326.667 L 179.000 326.667 179.000 329.944 C 179.000 333.364,179.136 333.902,179.829 333.234 C 181.734 331.399,186.499 328.000,187.168 328.000 C 187.442 328.000,187.667 327.865,187.667 327.701 C 187.667 327.233,193.549 325.107,196.452 324.525 C 202.667 323.279,212.183 324.366,217.083 326.880 C 217.888 327.293,218.000 327.288,218.000 326.842 C 218.000 326.522,217.691 326.333,217.167 326.333 C 216.708 326.333,216.371 326.162,216.417 325.952 C 216.463 325.742,215.976 325.505,215.333 325.425 C 214.692 325.346,213.910 325.049,213.596 324.767 C 213.241 324.447,212.639 324.311,211.998 324.405 C 211.433 324.488,210.879 324.407,210.767 324.226 C 210.645 324.028,210.738 324.004,211.000 324.167 C 211.268 324.332,211.355 324.305,211.227 324.097 C 211.017 323.758,197.287 323.576,195.750 323.892 M291.667 323.990 C 291.208 324.142,290.214 324.282,289.457 324.300 C 288.677 324.319,287.902 324.550,287.667 324.833 C 287.438 325.108,286.829 325.333,286.312 325.333 C 285.795 325.333,285.278 325.486,285.163 325.672 C 285.048 325.858,284.791 325.910,284.592 325.787 C 284.376 325.654,284.326 325.719,284.468 325.948 C 284.631 326.212,284.332 326.333,283.520 326.333 C 282.667 326.333,282.333 326.480,282.333 326.853 C 282.333 327.139,282.446 327.309,282.583 327.231 C 283.118 326.927,289.604 325.065,291.500 324.671 C 296.754 323.578,307.138 323.930,312.500 325.384 C 317.154 326.646,324.429 329.744,325.354 330.858 C 325.571 331.120,325.942 331.333,326.180 331.333 C 326.417 331.333,326.661 331.446,326.722 331.583 C 326.783 331.721,327.733 332.500,328.833 333.314 C 329.933 334.129,331.583 335.505,332.500 336.372 C 333.417 337.239,334.467 338.223,334.833 338.558 C 337.382 340.886,343.657 350.924,343.665 352.683 C 343.666 352.967,343.791 353.342,343.944 353.517 C 344.096 353.691,344.416 354.508,344.654 355.333 C 345.064 356.751,345.107 356.791,345.439 356.058 C 345.687 355.513,345.686 355.216,345.437 355.058 C 345.084 354.834,344.476 352.746,344.611 352.225 C 344.651 352.074,344.504 352.061,344.285 352.197 C 344.011 352.366,343.955 352.264,344.106 351.871 C 344.230 351.548,344.190 351.383,344.013 351.492 C 343.841 351.598,343.601 351.156,343.480 350.509 C 343.358 349.863,343.155 349.333,343.027 349.333 C 342.899 349.333,342.519 348.696,342.181 347.917 C 341.843 347.137,341.293 346.108,340.960 345.629 C 340.626 345.150,340.461 344.638,340.593 344.492 C 340.725 344.346,340.620 344.350,340.360 344.501 C 340.004 344.708,339.941 344.634,340.106 344.204 C 340.227 343.889,340.192 343.715,340.028 343.816 C 339.864 343.917,339.347 343.363,338.878 342.583 C 338.410 341.804,337.239 340.342,336.278 339.333 C 335.316 338.325,334.564 337.376,334.606 337.225 C 334.649 337.074,334.556 337.029,334.401 337.125 C 334.048 337.343,332.808 335.953,332.950 335.500 C 333.008 335.317,332.940 335.282,332.799 335.423 C 332.658 335.565,332.008 335.167,331.354 334.539 C 330.701 333.912,329.611 333.027,328.931 332.574 C 328.251 332.120,327.801 331.632,327.931 331.488 C 328.061 331.344,327.979 331.334,327.750 331.466 C 327.521 331.598,327.333 331.547,327.333 331.353 C 327.333 331.159,327.185 331.000,327.004 331.000 C 326.823 331.000,326.368 330.737,325.993 330.417 C 325.618 330.096,325.204 329.820,325.073 329.805 C 324.566 329.744,323.481 329.185,323.060 328.769 C 322.817 328.529,322.396 328.333,322.123 328.333 C 321.850 328.333,321.719 328.185,321.831 328.004 C 321.948 327.814,321.813 327.759,321.513 327.874 C 320.953 328.089,319.907 327.421,320.160 327.010 C 320.244 326.874,319.960 326.830,319.529 326.913 C 319.098 326.995,318.643 326.899,318.519 326.698 C 318.395 326.497,317.762 326.333,317.111 326.333 C 316.273 326.333,315.977 326.206,316.096 325.896 C 316.215 325.587,315.867 325.436,314.906 325.379 C 314.160 325.335,313.388 325.095,313.191 324.845 C 312.532 324.006,293.849 323.264,291.667 323.990 M112.893 326.551 C 112.571 326.874,112.621 413.079,112.944 413.588 C 113.153 413.916,115.529 413.990,123.689 413.922 L 134.167 413.833 134.167 370.167 L 134.167 326.500 123.643 326.412 C 117.856 326.364,113.018 326.426,112.893 326.551 M133.918 369.472 C 133.996 408.930,133.961 412.157,133.445 412.727 C 132.924 413.303,132.262 413.338,123.194 413.255 L 113.500 413.167 113.415 369.912 L 113.331 326.657 123.582 326.745 L 133.833 326.833 133.918 369.472 M39.667 327.312 C 39.667 327.484,39.179 327.693,38.583 327.776 C 37.987 327.859,38.475 327.856,39.667 327.769 C 42.899 327.533,51.174 327.523,53.833 327.752 C 55.117 327.862,55.754 327.878,55.250 327.787 C 54.746 327.697,54.333 327.482,54.333 327.311 C 54.333 327.128,51.319 327.000,47.000 327.000 C 42.664 327.000,39.667 327.128,39.667 327.312 M218.667 327.500 C 218.895 327.775,219.272 328.000,219.505 328.000 C 219.738 328.000,220.015 328.225,220.121 328.500 C 220.226 328.775,220.542 329.000,220.823 329.000 C 221.104 329.000,221.333 329.150,221.333 329.333 C 221.333 329.517,221.531 329.667,221.774 329.667 C 222.342 329.667,226.344 333.608,227.718 335.522 C 228.836 337.079,229.236 337.234,228.798 335.942 C 228.653 335.515,228.564 335.054,228.601 334.917 C 228.637 334.779,228.529 334.704,228.360 334.750 C 228.192 334.796,227.356 334.021,226.502 333.027 C 225.649 332.034,224.400 330.796,223.726 330.277 C 223.052 329.757,222.207 329.107,221.849 328.832 C 221.491 328.558,221.069 328.333,220.913 328.333 C 220.756 328.333,220.719 328.185,220.831 328.004 C 220.943 327.823,220.826 327.754,220.571 327.852 C 220.316 327.950,219.914 327.799,219.679 327.515 C 219.444 327.232,219.027 327.000,218.752 327.000 C 218.345 327.000,218.329 327.093,218.667 327.500 M280.377 327.541 C 280.126 327.825,279.638 327.983,279.293 327.893 C 278.948 327.803,278.743 327.854,278.838 328.007 C 279.012 328.290,277.729 328.861,277.225 328.724 C 277.074 328.684,277.045 328.804,277.162 328.992 C 277.278 329.180,277.155 329.333,276.889 329.333 C 276.622 329.333,276.319 329.556,276.215 329.828 C 276.108 330.108,275.804 330.237,275.515 330.126 C 275.214 330.011,274.919 330.157,274.793 330.485 C 274.676 330.789,274.386 330.964,274.148 330.872 C 273.659 330.685,272.888 331.444,273.225 331.781 C 273.346 331.901,273.232 332.003,272.972 332.006 C 272.412 332.013,270.686 333.347,268.990 335.083 C 268.319 335.771,267.597 336.333,267.385 336.333 C 267.173 336.333,267.000 336.483,267.000 336.667 C 267.000 336.850,266.813 336.963,266.583 336.917 C 266.354 336.871,266.204 337.021,266.250 337.250 C 266.353 337.766,264.956 339.208,264.500 339.056 C 264.317 338.994,264.272 339.050,264.402 339.179 C 264.531 339.309,264.231 339.829,263.735 340.336 C 263.239 340.843,262.640 341.537,262.404 341.879 C 262.168 342.221,262.080 342.275,262.208 342.000 C 262.336 341.725,262.312 341.617,262.155 341.760 C 261.998 341.902,261.840 342.221,261.804 342.467 C 261.731 342.962,260.676 344.667,260.442 344.667 C 260.361 344.667,260.401 344.493,260.532 344.282 C 260.680 344.041,260.623 343.988,260.379 344.138 C 260.165 344.271,260.081 344.528,260.194 344.711 C 260.306 344.893,260.190 345.295,259.935 345.604 C 259.680 345.914,259.259 346.617,259.000 347.167 C 258.741 347.717,258.350 348.392,258.132 348.667 C 257.914 348.942,257.505 349.842,257.223 350.667 C 256.941 351.492,256.588 352.142,256.439 352.112 C 256.289 352.081,256.133 352.520,256.092 353.086 C 256.051 353.652,255.864 354.270,255.676 354.458 C 255.487 354.646,255.333 355.386,255.333 356.102 C 255.333 357.142,255.229 357.365,254.816 357.206 C 254.513 357.090,254.385 357.147,254.507 357.345 C 254.622 357.531,254.473 358.917,254.175 360.425 C 253.198 365.381,253.871 382.000,255.049 382.000 C 255.206 382.000,255.333 382.527,255.333 383.171 C 255.333 383.815,255.461 384.603,255.618 384.921 C 256.513 386.743,257.024 387.994,257.405 389.289 C 257.641 390.090,258.021 390.818,258.250 390.908 C 258.479 390.998,258.667 391.355,258.667 391.702 C 258.667 392.049,258.817 392.333,259.000 392.333 C 259.183 392.333,259.333 392.574,259.333 392.869 C 259.333 393.163,259.796 393.988,260.361 394.702 C 260.927 395.416,261.280 396.000,261.146 396.000 C 261.012 396.000,261.308 396.376,261.803 396.835 C 262.311 397.305,262.601 397.837,262.467 398.053 C 262.321 398.290,262.377 398.346,262.615 398.198 C 262.827 398.068,263.000 398.097,263.000 398.263 C 263.000 398.429,263.297 398.907,263.660 399.325 C 264.023 399.744,264.240 400.215,264.142 400.373 C 264.045 400.530,264.204 400.567,264.496 400.455 C 264.841 400.323,264.993 400.412,264.930 400.709 C 264.877 400.961,265.028 401.127,265.266 401.078 C 265.504 401.029,265.654 401.184,265.599 401.421 C 265.545 401.659,265.612 401.886,265.750 401.927 C 266.213 402.063,267.501 403.498,267.408 403.775 C 267.358 403.926,267.448 403.969,267.608 403.869 C 267.929 403.671,269.537 405.349,269.412 405.750 C 269.369 405.888,269.470 405.963,269.637 405.917 C 269.964 405.827,270.727 406.302,272.584 407.750 C 273.230 408.254,273.865 408.667,273.995 408.667 C 274.208 408.667,274.896 409.182,276.325 410.410 C 276.596 410.643,276.858 410.796,276.908 410.750 C 277.181 410.502,277.674 410.718,277.495 411.008 C 277.379 411.196,277.407 411.328,277.559 411.302 C 278.381 411.159,279.016 411.372,278.802 411.718 C 278.654 411.957,278.710 412.013,278.948 411.865 C 279.160 411.734,279.333 411.786,279.333 411.980 C 279.333 412.174,279.717 412.333,280.186 412.333 C 280.684 412.333,280.951 412.476,280.828 412.675 C 280.712 412.863,280.741 412.995,280.892 412.969 C 281.878 412.797,283.012 413.044,282.802 413.385 C 282.654 413.623,282.710 413.679,282.948 413.532 C 283.160 413.401,283.333 413.437,283.333 413.612 C 283.333 413.787,283.933 414.021,284.667 414.132 C 285.400 414.243,286.601 414.424,287.335 414.535 C 288.070 414.646,288.768 414.894,288.887 415.087 C 289.024 415.309,288.932 415.337,288.635 415.165 C 288.377 415.015,288.279 415.017,288.417 415.169 C 288.554 415.321,289.604 415.508,290.750 415.586 C 291.896 415.663,292.990 415.856,293.182 416.014 C 293.638 416.390,307.333 416.423,307.333 416.047 C 307.333 415.809,308.659 415.582,311.902 415.262 C 312.123 415.240,312.227 415.097,312.132 414.944 C 312.038 414.792,312.486 414.667,313.127 414.667 C 313.769 414.667,314.387 414.517,314.500 414.333 C 314.613 414.150,315.158 414.000,315.710 414.000 C 316.262 414.000,316.939 413.775,317.214 413.500 C 317.489 413.225,317.995 413.000,318.337 413.000 C 318.680 413.000,319.053 412.850,319.167 412.667 C 319.280 412.483,319.730 412.333,320.167 412.333 C 320.603 412.333,321.055 412.181,321.170 411.995 C 321.285 411.808,321.542 411.756,321.741 411.879 C 321.957 412.013,322.007 411.948,321.865 411.718 C 321.651 411.372,322.286 411.159,323.108 411.302 C 323.259 411.328,323.288 411.196,323.172 411.008 C 323.056 410.820,323.205 410.667,323.504 410.667 C 323.803 410.667,324.281 410.433,324.567 410.147 C 324.852 409.862,325.290 409.707,325.539 409.802 C 325.788 409.898,325.956 409.846,325.913 409.687 C 325.788 409.232,328.649 407.283,329.065 407.540 C 329.276 407.671,329.344 407.620,329.221 407.421 C 329.025 407.104,330.489 405.863,331.083 405.842 C 331.221 405.837,331.337 405.724,331.341 405.591 C 331.357 405.078,333.061 403.665,333.406 403.878 C 333.625 404.013,333.674 403.948,333.530 403.716 C 333.396 403.499,333.521 403.241,333.812 403.129 C 334.099 403.019,334.333 402.702,334.333 402.425 C 334.333 402.098,334.551 401.979,334.958 402.086 C 335.452 402.215,335.545 402.107,335.405 401.572 C 335.286 401.115,335.353 400.973,335.614 401.134 C 335.847 401.278,336.000 401.153,336.000 400.817 C 336.000 400.469,336.180 400.331,336.483 400.447 C 336.822 400.578,336.905 400.473,336.760 400.095 C 336.607 399.698,336.677 399.629,337.027 399.832 C 337.287 399.983,337.397 399.992,337.270 399.851 C 337.144 399.711,337.331 399.283,337.687 398.902 C 338.042 398.520,338.333 398.011,338.333 397.770 C 338.333 397.530,338.470 397.333,338.636 397.333 C 338.803 397.333,339.359 396.669,339.873 395.857 C 340.387 395.045,340.929 394.456,341.078 394.548 C 341.228 394.641,341.322 394.593,341.287 394.441 C 341.174 393.947,341.732 392.334,341.966 392.479 C 342.092 392.557,342.217 392.329,342.244 391.974 C 342.270 391.618,342.527 391.092,342.813 390.806 C 343.099 390.520,343.333 390.119,343.333 389.915 C 343.333 389.711,343.608 388.934,343.944 388.189 C 345.549 384.625,345.643 384.328,345.388 383.638 C 345.162 383.027,345.070 383.128,344.714 384.382 C 344.269 385.951,344.173 386.195,342.868 389.092 C 342.391 390.152,342.000 391.086,342.000 391.169 C 342.000 391.998,336.176 399.880,333.860 402.186 C 328.416 407.606,320.024 412.483,313.583 413.968 C 309.754 414.851,309.004 414.994,306.167 415.378 C 299.630 416.261,291.056 415.449,284.627 413.338 C 276.062 410.525,268.016 404.379,262.159 396.177 C 258.475 391.018,256.337 385.972,254.952 379.167 C 254.003 374.502,254.280 361.338,255.405 357.667 C 256.614 353.719,259.252 347.401,259.997 346.667 C 260.244 346.423,260.969 345.246,261.228 344.667 C 261.351 344.392,261.551 344.092,261.672 344.000 C 261.794 343.908,262.374 343.158,262.962 342.333 C 266.173 337.827,273.815 331.337,278.403 329.219 C 279.082 328.906,279.729 328.503,279.839 328.324 C 279.949 328.146,280.312 328.000,280.646 328.000 C 280.979 328.000,281.438 327.775,281.667 327.500 C 282.255 326.792,281.005 326.832,280.377 327.541 M35.210 328.070 C 35.299 328.215,34.951 328.334,34.436 328.335 C 33.921 328.337,33.073 328.560,32.551 328.833 C 32.028 329.105,31.176 329.360,30.657 329.400 C 30.138 329.439,29.775 329.572,29.850 329.694 C 29.926 329.817,29.611 329.917,29.150 329.917 C 28.688 329.917,28.046 330.157,27.722 330.450 C 27.397 330.744,26.765 331.046,26.316 331.121 C 25.867 331.196,25.537 331.425,25.583 331.629 C 25.629 331.833,25.512 332.000,25.323 332.000 C 25.133 332.000,24.421 332.248,23.739 332.551 C 23.058 332.855,22.376 333.076,22.225 333.043 C 22.074 333.010,22.036 333.121,22.140 333.290 C 22.244 333.459,22.105 333.683,21.831 333.788 C 21.397 333.955,21.046 331.240,21.289 329.597 C 21.309 329.466,16.564 329.391,10.746 329.430 L 0.167 329.500 0.167 389.667 L 0.167 449.833 10.543 449.921 L 20.920 450.009 21.122 449.255 C 21.233 448.840,21.326 440.512,21.329 430.750 C 21.333 415.196,21.395 413.000,21.833 413.000 C 22.108 413.000,22.333 413.158,22.333 413.351 C 22.333 413.544,22.783 413.858,23.333 414.050 C 23.883 414.241,24.258 414.520,24.166 414.668 C 24.074 414.816,24.299 414.859,24.666 414.763 C 25.033 414.667,25.333 414.746,25.333 414.939 C 25.333 415.131,25.671 415.394,26.083 415.522 C 26.496 415.651,26.929 415.906,27.047 416.089 C 27.164 416.271,27.614 416.457,28.047 416.501 C 29.321 416.631,29.381 416.654,29.204 416.940 C 29.111 417.090,29.477 417.148,30.018 417.069 C 30.564 416.988,31.000 417.077,31.000 417.269 C 31.000 417.650,33.353 418.307,35.667 418.572 C 36.492 418.666,37.274 418.914,37.404 419.122 C 37.746 419.665,54.596 419.649,55.698 419.104 C 56.139 418.886,57.025 418.631,57.667 418.536 C 59.734 418.233,61.154 417.955,61.667 417.756 C 61.942 417.649,62.290 417.588,62.441 417.622 C 62.593 417.656,62.621 417.529,62.505 417.342 C 62.319 417.041,63.190 416.860,64.580 416.910 C 64.807 416.918,64.911 416.792,64.810 416.629 C 64.710 416.466,65.011 416.333,65.480 416.333 C 65.949 416.333,66.333 416.183,66.333 416.000 C 66.333 415.817,66.584 415.667,66.890 415.667 C 67.197 415.667,67.684 415.466,67.974 415.222 C 68.263 414.977,69.025 414.571,69.667 414.319 C 70.308 414.067,71.040 413.659,71.293 413.412 C 71.546 413.164,71.966 413.044,72.227 413.144 C 72.490 413.245,72.610 413.179,72.497 412.996 C 72.385 412.814,72.677 412.519,73.147 412.341 C 73.616 412.163,74.000 411.863,74.000 411.675 C 74.000 411.487,74.225 411.333,74.500 411.333 C 74.775 411.333,75.000 411.174,75.000 410.980 C 75.000 410.786,75.127 410.706,75.282 410.802 C 75.438 410.898,75.986 410.537,76.500 410.000 C 77.014 409.463,77.586 409.117,77.769 409.230 C 77.964 409.351,77.998 409.267,77.851 409.029 C 77.691 408.770,77.853 408.555,78.296 408.440 C 78.679 408.339,78.910 408.125,78.810 407.962 C 78.646 407.697,79.106 407.529,79.738 407.623 C 79.869 407.643,79.890 407.435,79.786 407.163 C 79.669 406.859,79.790 406.667,80.095 406.667 C 80.370 406.667,80.685 406.432,80.795 406.146 C 80.907 405.854,81.166 405.730,81.382 405.864 C 81.632 406.018,81.679 405.957,81.515 405.692 C 81.266 405.288,82.564 404.085,83.071 404.249 C 83.202 404.291,83.214 404.078,83.098 403.775 C 82.945 403.376,83.008 403.299,83.328 403.497 C 83.623 403.679,83.690 403.641,83.530 403.382 C 83.396 403.166,83.521 402.907,83.812 402.795 C 84.099 402.685,84.333 402.388,84.333 402.134 C 84.333 401.880,84.758 401.259,85.276 400.753 C 85.795 400.247,86.319 399.561,86.441 399.229 C 86.562 398.896,86.811 398.717,86.994 398.830 C 87.192 398.952,87.237 398.805,87.106 398.463 C 86.945 398.044,87.005 397.964,87.328 398.163 C 87.578 398.318,87.692 398.305,87.591 398.135 C 87.316 397.673,87.950 396.263,88.327 396.496 C 88.519 396.615,88.575 396.482,88.459 396.180 C 88.251 395.637,88.907 394.570,89.300 394.813 C 89.423 394.889,89.550 394.700,89.582 394.392 C 89.731 392.954,90.103 391.667,90.371 391.667 C 90.534 391.667,90.668 391.479,90.669 391.250 C 90.670 391.021,90.875 390.443,91.124 389.965 C 91.690 388.880,92.439 385.818,92.266 385.298 C 92.195 385.084,91.940 385.567,91.700 386.371 C 90.833 389.277,88.269 395.397,87.667 396.000 C 87.575 396.092,87.208 396.692,86.852 397.333 C 85.186 400.333,76.702 409.667,75.641 409.667 C 75.432 409.667,75.351 409.899,75.461 410.184 C 75.580 410.495,75.521 410.616,75.312 410.487 C 75.121 410.369,73.810 411.020,72.399 411.934 C 68.438 414.500,65.607 415.794,61.333 416.991 C 60.508 417.222,59.457 417.547,58.996 417.713 C 55.975 418.803,42.372 419.443,38.667 418.669 C 35.302 417.966,32.507 417.282,31.833 416.996 C 31.467 416.840,30.567 416.529,29.833 416.304 C 28.109 415.774,23.708 413.646,22.375 412.697 C 20.635 411.458,20.667 411.128,20.667 430.651 C 20.667 447.010,20.611 448.950,20.139 449.131 C 19.076 449.539,1.156 449.356,0.733 448.933 C 0.201 448.401,0.147 331.304,0.678 330.311 C 1.007 329.697,1.474 329.667,10.643 329.667 C 21.514 329.667,20.667 329.424,20.667 332.538 C 20.667 334.481,21.211 335.126,22.174 334.327 C 23.321 333.375,28.348 330.843,29.828 330.472 C 30.293 330.355,30.755 330.126,30.856 329.963 C 30.957 329.800,31.357 329.667,31.746 329.667 C 32.135 329.667,32.913 329.521,33.476 329.343 C 34.039 329.165,35.175 328.813,36.000 328.560 L 37.500 328.101 36.273 327.954 C 35.599 327.872,35.120 327.925,35.210 328.070 M57.500 327.980 C 56.500 328.214,56.500 328.214,58.000 328.628 C 58.825 328.856,59.961 329.183,60.524 329.355 C 61.087 329.526,61.801 329.667,62.112 329.667 C 62.422 329.667,62.936 329.809,63.255 329.983 C 63.573 330.157,65.266 330.964,67.017 331.776 C 68.768 332.589,71.674 334.254,73.476 335.475 C 76.411 337.465,77.472 338.339,80.612 341.352 C 81.861 342.551,83.156 344.081,83.873 345.207 C 84.209 345.735,84.568 346.242,84.670 346.333 C 85.054 346.679,87.333 349.932,87.333 350.135 C 87.333 350.251,87.678 350.906,88.098 351.590 C 88.929 352.940,90.378 356.373,91.016 358.500 C 91.235 359.233,91.547 360.094,91.708 360.412 C 91.868 360.730,92.020 361.255,92.044 361.579 C 92.068 361.902,92.189 361.642,92.312 361.000 C 92.459 360.234,92.387 359.653,92.101 359.307 C 91.862 359.018,91.667 358.455,91.667 358.057 C 91.667 357.659,91.517 357.333,91.333 357.333 C 91.150 357.333,91.000 357.094,91.000 356.800 C 91.000 356.324,90.574 355.204,89.611 353.148 C 89.435 352.771,89.337 352.253,89.395 351.997 C 89.453 351.740,89.275 351.523,89.000 351.515 C 88.725 351.507,88.452 351.162,88.393 350.750 C 88.335 350.337,88.147 350.000,87.977 350.000 C 87.806 350.000,87.667 349.775,87.667 349.500 C 87.667 349.225,87.501 349.000,87.298 349.000 C 87.095 349.000,87.018 348.767,87.127 348.483 C 87.257 348.145,87.192 348.048,86.940 348.204 C 86.679 348.365,86.625 348.256,86.773 347.871 C 86.894 347.556,86.860 347.381,86.698 347.481 C 86.435 347.643,85.938 346.912,85.862 346.250 C 85.846 346.113,85.683 345.988,85.500 345.973 C 85.317 345.958,84.873 345.471,84.513 344.890 C 84.154 344.309,83.663 343.712,83.423 343.563 C 83.183 343.414,83.075 343.148,83.184 342.971 C 83.294 342.795,83.259 342.691,83.108 342.742 C 82.841 342.831,81.333 341.496,81.333 341.170 C 81.333 340.805,80.157 339.667,79.779 339.667 C 79.555 339.667,79.266 339.493,79.135 339.282 C 78.977 339.027,79.045 338.988,79.333 339.167 C 79.624 339.346,79.689 339.306,79.528 339.046 C 79.396 338.831,79.163 338.732,79.012 338.826 C 78.860 338.920,78.651 338.772,78.545 338.498 C 78.440 338.224,78.202 338.000,78.017 338.000 C 77.831 338.000,77.147 337.484,76.498 336.853 C 75.848 336.222,75.019 335.612,74.654 335.496 C 74.289 335.380,74.091 335.123,74.213 334.924 C 74.340 334.719,74.282 334.659,74.078 334.785 C 73.881 334.907,73.494 334.780,73.217 334.503 C 72.941 334.226,72.554 334.000,72.357 334.000 C 72.161 334.000,72.037 333.813,72.083 333.583 C 72.129 333.354,71.960 333.210,71.708 333.264 C 71.456 333.317,71.006 333.149,70.708 332.889 C 70.410 332.630,69.603 332.237,68.914 332.015 C 68.171 331.777,67.751 331.467,67.882 331.255 C 68.003 331.058,67.954 330.989,67.772 331.102 C 67.589 331.214,66.892 331.013,66.221 330.653 C 65.551 330.294,64.711 330.000,64.354 330.000 C 63.998 330.000,63.613 329.850,63.500 329.667 C 63.387 329.483,63.020 329.333,62.685 329.333 C 62.350 329.333,61.647 329.109,61.121 328.835 C 60.596 328.562,59.745 328.337,59.230 328.335 C 58.691 328.334,58.381 328.192,58.500 328.000 C 58.613 327.817,58.660 327.684,58.603 327.706 C 58.546 327.728,58.050 327.851,57.500 327.980 M229.000 337.778 C 229.000 338.053,229.118 338.328,229.262 338.389 C 229.756 338.598,231.299 342.631,231.817 345.066 C 232.102 346.405,232.509 348.100,232.722 348.833 C 233.325 350.914,233.533 412.668,232.938 413.045 C 232.208 413.508,213.537 413.403,213.067 412.933 C 212.756 412.622,212.667 412.697,212.667 413.271 L 212.667 414.009 223.229 413.921 L 233.791 413.833 234.076 412.734 C 234.594 410.733,234.177 351.851,233.647 352.179 C 233.515 352.261,233.316 351.242,233.206 349.914 C 232.867 345.805,232.605 344.216,232.151 343.512 C 231.910 343.139,231.652 342.383,231.577 341.833 C 231.394 340.489,230.757 339.000,230.365 339.000 C 230.190 339.000,229.998 338.674,229.940 338.276 C 229.818 337.451,229.000 337.017,229.000 337.778 M295.500 342.883 C 291.333 343.889,288.969 344.697,288.333 345.333 C 288.242 345.425,287.567 345.826,286.833 346.224 C 285.042 347.196,282.274 349.571,281.296 350.976 C 280.858 351.604,280.336 352.283,280.135 352.483 C 279.438 353.182,278.000 355.657,278.000 356.160 C 278.000 356.439,277.867 356.667,277.706 356.667 C 277.544 356.667,277.334 357.004,277.239 357.417 C 277.025 358.352,276.338 360.311,275.955 361.079 C 275.495 362.001,275.619 362.615,276.246 362.523 C 276.693 362.457,276.803 362.171,276.726 361.277 C 276.661 360.531,276.812 359.961,277.146 359.684 C 277.432 359.446,277.667 358.982,277.667 358.653 C 277.667 357.750,278.033 356.981,278.364 357.186 C 278.526 357.286,278.569 357.133,278.459 356.846 C 278.349 356.560,278.445 356.100,278.673 355.825 C 278.902 355.550,279.336 354.840,279.639 354.246 C 279.941 353.652,280.366 353.202,280.582 353.246 C 280.799 353.290,280.902 353.133,280.812 352.899 C 280.722 352.664,281.114 352.128,281.684 351.707 C 282.253 351.286,282.645 350.867,282.554 350.776 C 282.274 350.496,283.431 349.354,283.778 349.569 C 283.973 349.689,283.994 349.593,283.830 349.328 C 283.634 349.010,283.708 348.945,284.095 349.093 C 284.473 349.238,284.578 349.156,284.447 348.816 C 284.336 348.527,284.462 348.333,284.762 348.333 C 285.037 348.333,285.354 348.093,285.467 347.799 C 285.588 347.484,285.884 347.345,286.187 347.462 C 286.481 347.575,286.614 347.518,286.498 347.330 C 286.386 347.148,286.520 347.000,286.797 347.000 C 287.074 347.000,287.426 346.776,287.579 346.502 C 287.732 346.228,288.248 345.972,288.725 345.933 C 289.279 345.887,289.533 345.705,289.427 345.430 C 289.319 345.149,289.553 345.000,290.103 345.000 C 290.566 345.000,290.994 344.857,291.056 344.681 C 291.117 344.506,291.719 344.326,292.395 344.281 C 293.071 344.237,293.561 344.099,293.485 343.975 C 293.319 343.708,295.093 343.402,298.449 343.118 C 300.931 342.908,307.777 343.552,307.518 343.970 C 307.440 344.097,307.929 344.230,308.605 344.266 C 310.648 344.375,309.035 343.691,305.557 342.973 C 301.986 342.236,298.313 342.203,295.500 342.883 M310.000 344.505 C 310.000 344.814,310.321 345.000,310.853 345.000 C 311.413 345.000,311.624 345.132,311.468 345.385 C 311.321 345.623,311.377 345.679,311.615 345.532 C 311.827 345.401,312.000 345.453,312.000 345.647 C 312.000 345.841,312.207 346.000,312.459 346.000 C 312.712 346.000,313.111 346.232,313.346 346.515 C 313.581 346.799,313.991 346.947,314.257 346.845 C 314.582 346.720,314.680 346.819,314.554 347.146 C 314.422 347.489,314.526 347.572,314.905 347.426 C 315.292 347.278,315.366 347.344,315.170 347.662 C 314.988 347.955,315.026 348.023,315.282 347.865 C 315.493 347.734,315.667 347.761,315.667 347.924 C 315.667 348.087,316.037 348.419,316.489 348.661 C 316.941 348.903,317.218 349.251,317.104 349.435 C 316.990 349.619,317.043 349.679,317.222 349.569 C 317.622 349.322,318.699 350.513,318.389 350.859 C 318.267 350.995,318.354 350.999,318.583 350.867 C 318.813 350.735,319.000 350.764,319.000 350.932 C 319.000 351.099,319.377 351.643,319.839 352.141 C 320.300 352.639,320.589 353.189,320.481 353.365 C 320.372 353.540,320.482 353.642,320.725 353.592 C 320.968 353.541,321.129 353.688,321.083 353.917 C 321.037 354.146,321.150 354.333,321.333 354.333 C 321.517 354.333,321.667 354.540,321.667 354.793 C 321.667 355.045,321.902 355.447,322.190 355.686 C 322.478 355.925,322.642 356.393,322.554 356.727 C 322.467 357.061,322.515 357.261,322.660 357.170 C 322.983 356.971,324.000 359.977,324.141 361.549 C 324.197 362.175,324.362 362.795,324.508 362.927 C 324.654 363.059,324.652 362.942,324.505 362.667 C 324.306 362.297,324.337 362.260,324.624 362.523 C 325.127 362.984,325.006 377.528,324.500 377.446 C 324.317 377.416,324.140 377.901,324.108 378.522 C 324.035 379.904,322.742 383.639,322.120 384.261 C 321.871 384.510,321.667 384.929,321.667 385.190 C 321.667 385.452,321.534 385.667,321.372 385.667 C 321.210 385.667,320.995 385.982,320.895 386.367 C 320.794 386.752,320.553 386.969,320.360 386.850 C 320.138 386.713,320.089 386.844,320.227 387.204 C 320.388 387.623,320.328 387.703,320.005 387.503 C 319.732 387.334,319.644 387.360,319.774 387.571 C 320.041 388.003,318.873 389.087,318.503 388.751 C 318.351 388.613,318.334 388.686,318.465 388.914 C 318.789 389.477,317.114 391.115,316.468 390.867 C 316.164 390.751,316.052 390.814,316.184 391.028 C 316.445 391.450,314.478 393.160,313.706 393.182 C 313.409 393.191,313.204 393.378,313.250 393.599 C 313.296 393.820,313.083 394.000,312.776 394.000 C 312.470 394.000,311.982 394.215,311.691 394.478 C 311.401 394.740,310.757 395.010,310.261 395.076 C 309.765 395.143,309.253 395.303,309.124 395.432 C 308.995 395.561,308.464 395.667,307.944 395.667 C 307.425 395.667,307.000 395.807,307.000 395.979 C 307.000 396.151,306.512 396.352,305.917 396.426 C 305.039 396.534,305.120 396.570,306.342 396.613 C 307.210 396.644,308.148 396.459,308.549 396.178 C 308.932 395.910,309.336 395.780,309.446 395.890 C 309.556 396.000,310.813 395.519,312.239 394.822 C 314.619 393.659,315.333 393.159,318.199 390.653 C 319.418 389.588,320.667 388.089,320.667 387.692 C 320.667 387.525,320.779 387.339,320.917 387.278 C 321.282 387.115,323.000 384.409,323.000 383.995 C 323.000 383.802,323.214 383.311,323.475 382.905 C 326.525 378.160,326.544 362.887,323.507 357.000 C 323.271 356.542,322.797 355.594,322.455 354.894 C 322.113 354.194,321.571 353.338,321.250 352.991 C 320.929 352.645,320.667 352.269,320.667 352.157 C 320.667 351.533,316.844 347.964,314.667 346.555 C 311.581 344.559,310.000 343.864,310.000 344.505 M43.000 346.314 C 40.578 346.551,38.147 347.097,37.039 347.654 C 36.743 347.803,35.675 348.340,34.667 348.847 C 32.914 349.728,30.380 351.670,28.416 353.637 C 26.403 355.653,23.195 361.364,22.809 363.620 C 22.695 364.287,22.391 365.573,22.134 366.477 C 21.506 368.685,21.496 377.924,22.118 380.189 C 22.367 381.094,22.763 382.658,22.999 383.667 C 23.790 387.045,26.301 391.292,29.167 394.098 C 31.414 396.300,36.318 399.333,37.629 399.333 C 37.995 399.333,38.377 399.467,38.478 399.631 C 38.580 399.795,39.226 400.013,39.915 400.115 C 40.603 400.217,42.217 400.465,43.500 400.667 C 45.888 401.042,51.025 400.860,52.833 400.335 C 53.383 400.176,54.508 399.865,55.333 399.645 C 56.875 399.234,60.184 397.762,60.905 397.168 C 61.128 396.984,61.534 396.646,61.808 396.417 C 62.081 396.188,62.414 396.000,62.547 396.000 C 62.954 396.000,67.508 391.088,68.019 390.098 C 68.284 389.586,68.688 388.968,68.917 388.726 C 69.146 388.484,69.333 388.145,69.333 387.973 C 69.333 387.800,69.616 387.024,69.961 386.246 C 71.761 382.191,72.164 379.816,72.152 373.333 C 72.143 368.233,71.873 365.921,70.975 363.250 C 70.243 361.073,69.901 360.333,69.626 360.333 C 69.159 360.333,69.286 361.285,69.872 362.179 C 70.173 362.638,70.340 363.373,70.250 363.842 C 70.162 364.304,70.242 364.777,70.430 364.893 C 70.640 365.023,70.668 364.925,70.503 364.635 C 70.312 364.301,70.343 364.264,70.608 364.507 C 71.940 365.724,71.957 382.667,70.626 382.667 C 70.465 382.667,70.333 383.117,70.333 383.667 C 70.333 384.217,70.189 384.667,70.013 384.667 C 69.837 384.667,69.530 385.271,69.331 386.010 C 69.132 386.749,68.828 387.266,68.655 387.159 C 68.482 387.053,68.429 387.194,68.536 387.474 C 68.644 387.754,68.492 388.222,68.199 388.515 C 67.906 388.808,67.667 389.271,67.667 389.543 C 67.667 389.846,67.504 389.946,67.250 389.800 C 67.021 389.668,66.942 389.680,67.074 389.827 C 67.388 390.173,65.369 392.728,64.975 392.484 C 64.809 392.382,64.753 392.503,64.849 392.753 C 64.949 393.016,64.665 393.400,64.178 393.660 C 63.714 393.909,63.333 394.312,63.333 394.556 C 63.333 394.800,63.108 395.000,62.833 395.000 C 62.558 395.000,62.333 395.118,62.333 395.261 C 62.333 395.595,60.257 396.848,59.892 396.735 C 59.741 396.688,59.695 396.777,59.791 396.931 C 59.886 397.086,59.410 397.408,58.732 397.647 C 58.055 397.886,57.275 398.269,57.000 398.499 C 56.725 398.728,55.303 399.088,53.841 399.300 C 52.378 399.512,51.036 399.831,50.857 400.009 C 50.413 400.454,43.227 400.427,42.779 399.979 C 42.584 399.784,41.392 399.481,40.129 399.306 C 37.779 398.980,34.461 397.650,34.901 397.210 C 35.036 397.075,34.864 397.073,34.518 397.206 C 34.048 397.386,33.959 397.336,34.163 397.005 C 34.334 396.729,34.307 396.644,34.091 396.777 C 33.767 396.977,31.967 395.821,31.722 395.256 C 31.661 395.115,31.399 395.000,31.139 395.000 C 30.879 395.000,30.667 394.775,30.667 394.500 C 30.667 394.225,30.479 393.998,30.250 393.996 C 29.652 393.990,26.657 390.481,26.485 389.586 C 26.406 389.172,26.105 388.660,25.816 388.447 C 25.526 388.235,25.337 387.789,25.395 387.455 C 25.458 387.093,25.298 386.845,25.000 386.841 C 24.682 386.836,24.462 386.440,24.396 385.750 C 24.338 385.154,24.151 384.667,23.979 384.667 C 23.807 384.667,23.667 384.322,23.667 383.900 C 23.667 383.478,23.521 382.988,23.343 382.809 C 22.542 382.009,21.812 367.305,22.597 367.790 C 22.742 367.880,22.804 367.466,22.734 366.870 C 22.665 366.274,22.846 365.216,23.137 364.519 C 23.428 363.822,23.667 362.895,23.667 362.459 C 23.667 362.023,23.817 361.667,24.000 361.667 C 24.183 361.667,24.333 361.276,24.333 360.798 C 24.333 360.225,24.480 359.985,24.764 360.094 C 25.038 360.199,25.220 359.945,25.266 359.392 C 25.305 358.914,25.562 358.399,25.836 358.245 C 26.109 358.092,26.333 357.740,26.333 357.464 C 26.333 357.187,26.482 357.052,26.663 357.164 C 26.859 357.285,26.903 357.136,26.773 356.796 C 26.612 356.377,26.672 356.297,26.995 356.497 C 27.289 356.678,27.357 356.641,27.198 356.385 C 27.068 356.173,27.109 356.000,27.291 356.000 C 27.473 356.000,27.718 355.698,27.835 355.328 C 27.952 354.959,28.210 354.757,28.409 354.880 C 28.607 355.003,28.693 354.967,28.599 354.802 C 28.379 354.415,30.210 352.663,30.532 352.951 C 30.665 353.069,30.666 352.979,30.534 352.750 C 30.389 352.498,30.485 352.333,30.778 352.333 C 31.044 352.333,31.349 352.107,31.455 351.830 C 31.561 351.554,31.765 351.366,31.907 351.414 C 32.050 351.461,32.224 351.350,32.295 351.167 C 32.491 350.657,33.598 349.964,34.300 349.911 C 34.700 349.881,34.860 349.690,34.742 349.383 C 34.602 349.017,34.766 348.941,35.429 349.068 C 35.937 349.165,36.273 349.090,36.234 348.887 C 36.197 348.696,36.467 348.485,36.833 348.419 C 37.200 348.353,37.827 348.137,38.228 347.939 C 38.628 347.740,39.198 347.671,39.495 347.785 C 39.809 347.906,39.950 347.855,39.831 347.663 C 39.719 347.482,39.927 347.333,40.294 347.333 C 40.661 347.333,41.030 347.221,41.115 347.083 C 41.297 346.789,52.374 346.780,52.848 347.073 C 53.026 347.183,53.733 347.378,54.419 347.507 C 55.105 347.636,55.667 347.865,55.667 348.016 C 55.667 348.167,56.154 348.338,56.750 348.396 C 57.346 348.453,57.801 348.672,57.761 348.882 C 57.718 349.111,57.958 349.195,58.359 349.090 C 58.791 348.977,58.994 349.064,58.931 349.334 C 58.877 349.564,59.144 349.781,59.525 349.816 C 60.327 349.890,61.557 350.682,61.622 351.167 C 61.647 351.350,61.783 351.500,61.925 351.500 C 62.371 351.500,64.000 352.912,64.000 353.298 C 64.000 353.501,64.156 353.667,64.347 353.667 C 64.538 353.667,65.017 353.967,65.410 354.333 C 65.804 354.700,65.999 355.000,65.845 355.000 C 65.691 355.000,65.893 355.285,66.294 355.632 C 66.695 355.980,66.980 356.468,66.928 356.716 C 66.876 356.964,67.021 357.129,67.250 357.083 C 67.479 357.037,67.667 357.218,67.667 357.483 C 67.667 357.749,67.906 358.101,68.199 358.265 C 68.491 358.428,68.754 358.942,68.782 359.405 C 68.814 359.929,68.991 360.188,69.250 360.088 C 69.909 359.836,69.779 359.525,67.823 356.651 C 62.360 348.629,54.185 345.225,43.000 346.314 M212.104 358.723 C 212.161 361.958,212.371 363.073,212.836 362.608 C 212.930 362.515,212.789 360.802,212.524 358.802 L 212.042 355.167 212.104 358.723 M345.453 357.501 C 345.339 357.800,345.406 358.372,345.603 358.772 C 347.182 361.975,347.105 376.440,345.481 381.628 C 345.292 382.232,345.344 382.386,345.699 382.268 C 345.986 382.174,346.235 381.449,346.342 380.398 C 346.438 379.455,346.701 378.499,346.925 378.275 C 347.566 377.634,347.500 362.386,346.852 361.462 C 346.588 361.084,346.336 359.992,346.292 359.036 C 346.210 357.250,345.822 356.540,345.453 357.501 M92.498 363.833 C 93.259 369.828,93.261 377.740,92.504 383.000 C 92.302 384.400,92.323 384.457,92.811 383.853 C 93.179 383.397,93.333 382.485,93.333 380.770 C 93.333 379.368,93.475 378.333,93.667 378.333 C 93.874 378.333,94.000 376.444,94.000 373.333 C 94.000 370.222,93.874 368.333,93.667 368.333 C 93.475 368.333,93.333 367.299,93.333 365.897 C 93.333 364.180,93.179 363.270,92.810 362.814 C 92.323 362.211,92.301 362.282,92.498 363.833 M275.508 364.000 C 274.765 365.143,274.932 375.667,275.693 375.667 C 276.147 375.667,276.066 371.097,275.599 370.349 C 275.286 369.847,275.289 369.538,275.616 368.928 C 276.126 367.974,276.022 363.210,275.508 364.000 M275.667 377.647 C 275.667 378.003,275.796 378.374,275.955 378.472 C 276.114 378.570,276.324 379.147,276.422 379.753 C 276.980 383.189,280.854 389.381,283.890 391.688 C 284.959 392.500,285.908 393.256,286.000 393.367 C 286.328 393.764,291.137 396.000,291.663 396.000 C 291.958 396.000,292.342 396.135,292.517 396.300 C 293.170 396.919,301.669 397.555,303.601 397.129 C 304.510 396.929,303.463 396.805,299.610 396.659 C 296.737 396.549,294.187 396.300,293.943 396.105 C 293.700 395.910,293.050 395.666,292.500 395.562 C 290.241 395.137,289.487 394.880,289.233 394.451 C 289.087 394.203,288.674 394.000,288.317 394.000 C 287.959 394.000,287.704 393.813,287.750 393.583 C 287.796 393.354,287.641 393.206,287.406 393.253 C 287.171 393.301,286.796 393.187,286.573 393.000 C 286.350 392.813,285.753 392.349,285.247 391.970 C 284.741 391.590,284.427 391.119,284.548 390.922 C 284.670 390.725,284.621 390.656,284.439 390.768 C 284.019 391.028,282.596 390.051,282.833 389.667 C 282.931 389.509,282.835 389.271,282.621 389.138 C 282.359 388.977,282.315 389.052,282.485 389.365 C 282.625 389.623,282.363 389.383,281.902 388.833 C 281.441 388.284,281.148 387.684,281.252 387.500 C 281.355 387.317,281.321 387.274,281.176 387.405 C 280.837 387.711,279.747 386.331,279.289 385.016 C 279.094 384.457,278.799 384.000,278.634 384.000 C 278.469 384.000,278.333 383.709,278.333 383.353 C 278.333 382.997,278.183 382.613,278.000 382.500 C 277.817 382.387,277.667 381.946,277.667 381.521 C 277.667 381.096,277.429 380.551,277.138 380.309 C 276.780 380.012,276.647 379.470,276.727 378.630 C 276.792 377.948,276.730 377.461,276.589 377.548 C 276.449 377.635,276.333 377.547,276.333 377.353 C 276.333 377.159,276.183 377.000,276.000 377.000 C 275.817 377.000,275.667 377.291,275.667 377.647 " stroke="none" fill="#c2c2c2" fill-rule="evenodd"></path><path id="path1" d="M213.706 2.706 C 212.348 4.063,212.333 4.105,212.333 6.515 C 212.333 13.329,221.032 13.654,221.595 6.861 C 221.989 2.107,216.956 -0.544,213.706 2.706 M174.624 16.201 C 170.148 18.568,171.557 26.343,176.459 26.328 C 180.429 26.316,182.731 21.622,180.474 18.141 C 178.992 15.856,176.708 15.098,174.624 16.201 M214.759 23.427 C 214.167 23.650,213.342 24.175,212.925 24.592 L 212.167 25.351 212.000 48.426 C 211.845 69.824,211.790 71.580,211.234 72.598 C 209.678 75.447,205.483 76.119,202.966 73.923 C 201.015 72.221,201.000 72.111,201.000 59.096 L 201.000 47.160 200.134 46.226 C 198.274 44.220,192.667 44.449,192.667 46.531 C 192.667 46.759,192.516 46.995,192.331 47.056 C 192.109 47.130,192.024 55.318,192.081 71.275 L 192.167 95.382 193.580 94.358 C 194.358 93.794,195.146 93.333,195.330 93.333 C 195.515 93.333,195.667 93.183,195.667 93.000 C 195.667 92.817,195.937 92.667,196.267 92.667 C 196.597 92.667,197.009 92.536,197.183 92.376 C 197.474 92.109,198.980 91.637,202.539 90.696 C 204.318 90.226,208.556 90.231,210.579 90.707 C 212.639 91.191,217.119 92.683,217.333 92.955 C 217.594 93.286,218.773 93.999,219.417 94.215 C 219.737 94.323,220.000 94.544,220.000 94.706 C 220.000 94.867,220.136 95.000,220.301 95.000 C 220.998 95.000,223.936 98.044,226.253 101.167 C 227.094 102.300,228.895 106.483,229.124 107.833 C 229.217 108.383,229.469 109.658,229.683 110.667 C 230.114 112.692,229.889 117.578,229.339 118.128 C 229.153 118.314,229.000 119.112,229.000 119.900 C 229.000 120.688,228.850 121.333,228.667 121.333 C 228.483 121.333,228.333 121.576,228.333 121.872 C 228.333 122.356,226.762 125.591,226.328 126.000 C 226.231 126.092,225.876 126.599,225.539 127.127 C 224.817 128.261,223.435 129.900,222.500 130.733 C 220.406 132.597,219.458 133.323,219.111 133.328 C 218.897 133.331,218.672 133.446,218.611 133.583 C 218.450 133.946,216.363 135.000,215.806 135.000 C 215.546 135.000,215.333 135.133,215.333 135.296 C 215.333 135.458,214.921 135.676,214.417 135.780 C 213.912 135.884,212.450 136.215,211.167 136.516 C 206.722 137.558,201.310 136.919,196.741 134.811 C 195.773 134.365,194.836 134.000,194.658 134.000 C 194.479 134.000,194.333 133.850,194.333 133.667 C 194.333 133.483,194.173 133.333,193.976 133.333 C 193.780 133.333,193.394 133.108,193.119 132.833 C 192.844 132.558,192.485 132.333,192.322 132.333 C 192.156 132.333,191.983 137.387,191.929 143.809 C 191.837 154.853,191.807 155.321,191.136 156.226 C 188.732 159.469,184.421 159.537,182.078 156.368 L 181.333 155.360 181.333 97.030 L 181.333 38.701 180.250 37.881 C 179.232 37.112,177.976 36.838,175.977 36.952 C 175.506 36.978,174.606 37.459,173.977 38.020 L 172.833 39.041 172.718 44.104 C 172.642 47.448,172.472 49.250,172.218 49.412 C 172.006 49.546,167.831 49.659,162.939 49.662 L 154.045 49.667 153.821 50.417 C 153.698 50.829,153.293 51.842,152.920 52.667 C 152.030 54.637,151.852 55.127,151.164 57.500 C 150.845 58.600,150.452 59.760,150.292 60.079 C 150.131 60.397,150.000 61.101,150.000 61.642 C 150.000 62.184,149.867 62.709,149.705 62.810 C 149.543 62.910,149.309 63.669,149.185 64.496 C 149.061 65.323,148.818 66.000,148.646 66.000 C 148.474 66.000,148.333 66.516,148.333 67.147 C 148.333 67.778,148.200 68.376,148.037 68.477 C 147.874 68.578,147.660 69.149,147.563 69.747 C 147.465 70.344,147.136 71.658,146.831 72.667 C 146.114 75.038,145.870 75.895,144.920 79.406 C 144.487 81.004,144.028 82.417,143.900 82.545 C 143.771 82.673,143.661 83.165,143.655 83.639 C 143.648 84.113,143.429 84.875,143.167 85.333 C 142.905 85.792,142.685 86.506,142.678 86.921 C 142.672 87.336,142.531 87.936,142.364 88.255 C 142.198 88.573,141.810 89.883,141.502 91.167 C 140.399 95.766,140.163 96.615,139.916 96.861 C 139.779 96.999,139.667 97.527,139.667 98.036 C 139.667 98.545,139.517 99.053,139.333 99.167 C 139.150 99.280,139.000 99.831,139.000 100.392 C 139.000 101.291,138.405 103.520,137.637 105.500 C 137.495 105.867,137.308 106.617,137.221 107.167 C 137.134 107.717,136.809 108.992,136.497 110.000 C 135.935 111.822,135.662 113.182,135.028 117.333 C 134.846 118.525,134.540 120.308,134.348 121.295 C 133.897 123.623,133.900 136.574,134.353 139.167 C 134.546 140.267,134.852 141.992,135.034 143.000 C 135.217 144.008,135.443 145.358,135.537 146.000 C 135.631 146.642,135.828 147.467,135.974 147.833 C 136.120 148.200,136.503 149.400,136.825 150.500 C 137.147 151.600,137.525 152.800,137.665 153.167 C 139.281 157.394,139.414 157.713,140.863 160.833 C 141.904 163.074,145.709 169.449,146.334 170.000 C 146.438 170.092,146.865 170.617,147.283 171.167 C 149.332 173.864,150.051 174.683,152.835 177.482 C 156.092 180.757,157.445 181.981,159.500 183.509 C 160.233 184.054,160.883 184.612,160.944 184.750 C 161.006 184.887,161.252 185.000,161.492 185.000 C 161.732 185.000,162.015 185.225,162.121 185.500 C 162.226 185.775,162.530 186.000,162.795 186.000 C 163.061 186.000,163.328 186.112,163.389 186.250 C 163.754 187.072,170.413 190.846,177.000 193.965 C 178.008 194.443,178.883 194.946,178.944 195.083 C 179.006 195.221,179.245 195.333,179.477 195.333 C 179.918 195.333,182.046 196.308,182.333 196.641 C 182.425 196.747,182.893 197.036,183.372 197.283 C 184.751 197.992,188.229 201.251,189.051 202.603 C 189.462 203.280,189.883 203.908,189.987 204.000 C 190.091 204.092,190.524 204.917,190.950 205.833 C 191.375 206.750,191.936 207.925,192.195 208.444 C 192.455 208.963,192.667 209.650,192.667 209.971 C 192.667 210.293,192.774 210.663,192.905 210.794 C 193.569 211.458,194.635 216.583,194.889 220.333 C 194.982 221.708,195.188 222.991,195.348 223.184 C 195.811 223.742,196.419 232.201,196.571 240.191 C 196.731 248.571,196.896 248.057,193.790 248.845 C 192.714 249.118,191.533 249.467,191.167 249.621 C 189.591 250.281,185.026 251.667,184.429 251.667 C 184.071 251.667,183.671 251.774,183.540 251.904 C 183.144 252.300,180.213 253.333,179.483 253.333 C 179.108 253.333,178.658 253.453,178.483 253.598 C 178.309 253.744,177.267 254.136,176.167 254.470 C 175.067 254.804,173.867 255.192,173.500 255.333 C 171.558 256.077,167.335 257.333,166.776 257.333 C 166.423 257.333,165.991 257.471,165.817 257.638 C 165.643 257.806,165.125 258.011,164.667 258.093 C 164.208 258.175,179.883 258.243,199.500 258.243 C 219.117 258.243,234.792 258.182,234.333 258.107 C 233.875 258.033,233.200 257.847,232.833 257.694 C 232.467 257.541,230.817 257.006,229.167 256.505 C 227.517 256.005,225.867 255.479,225.500 255.336 C 225.133 255.194,223.933 254.816,222.833 254.497 C 221.733 254.178,220.573 253.786,220.255 253.625 C 219.936 253.465,219.336 253.329,218.921 253.323 C 218.506 253.317,217.875 253.092,217.520 252.823 C 217.164 252.554,216.526 252.333,216.103 252.333 C 215.680 252.333,215.333 252.183,215.333 252.000 C 215.333 251.817,214.938 251.667,214.455 251.667 C 213.972 251.667,212.135 251.163,210.372 250.548 C 206.998 249.370,204.919 248.744,203.869 248.592 C 202.583 248.405,201.891 245.704,202.136 241.831 C 202.240 240.182,202.458 236.358,202.620 233.333 C 202.969 226.795,203.563 221.129,204.011 220.068 C 204.188 219.647,204.333 218.607,204.333 217.758 C 204.333 216.909,204.473 215.753,204.644 215.190 C 204.815 214.627,205.131 213.492,205.347 212.667 C 206.076 209.874,208.923 203.333,209.410 203.333 C 209.551 203.333,209.671 203.146,209.676 202.917 C 209.698 202.017,214.617 197.667,215.614 197.667 C 215.826 197.667,216.000 197.517,216.000 197.333 C 216.000 197.150,216.213 197.000,216.472 197.000 C 216.732 197.000,216.994 196.880,217.056 196.734 C 217.117 196.587,218.817 195.680,220.833 194.718 C 226.394 192.066,232.044 189.174,232.830 188.579 C 233.808 187.838,235.732 186.667,235.969 186.667 C 236.120 186.667,236.614 186.295,237.068 185.841 C 237.522 185.387,238.275 184.818,238.742 184.576 C 241.199 183.301,248.387 176.574,251.566 172.575 C 252.618 171.250,253.602 170.017,253.752 169.833 C 254.706 168.666,257.710 163.776,257.874 163.122 C 257.983 162.688,258.206 162.333,258.369 162.333 C 258.533 162.333,258.667 162.052,258.667 161.707 C 258.667 161.363,258.892 160.895,259.167 160.667 C 259.442 160.438,259.667 159.970,259.667 159.626 C 259.667 159.282,259.817 159.000,260.000 159.000 C 260.183 159.000,260.333 158.712,260.333 158.360 C 260.333 158.009,260.544 157.296,260.802 156.777 C 265.107 148.119,266.074 131.995,263.248 116.000 C 262.811 113.525,262.360 111.275,262.248 111.000 C 262.135 110.725,261.973 109.900,261.889 109.167 C 261.805 108.433,261.486 106.858,261.179 105.667 C 260.872 104.475,260.541 102.900,260.443 102.167 C 260.345 101.433,260.130 100.691,259.966 100.517 C 259.801 100.343,259.667 99.797,259.667 99.305 C 259.667 98.812,259.443 97.980,259.169 97.455 C 258.895 96.930,258.670 96.096,258.669 95.603 C 258.668 95.110,258.533 94.623,258.369 94.522 C 258.205 94.420,257.999 93.774,257.912 93.085 C 257.825 92.397,257.501 91.008,257.192 90.000 C 256.883 88.992,256.552 87.792,256.457 87.333 C 256.361 86.875,256.162 86.200,256.014 85.833 C 255.865 85.467,255.505 84.342,255.213 83.333 C 254.921 82.325,254.379 80.494,254.008 79.264 C 253.637 78.034,253.333 76.751,253.333 76.414 C 253.333 76.076,253.194 75.657,253.023 75.483 C 252.758 75.212,252.154 73.216,251.013 68.833 C 250.870 68.283,250.603 67.458,250.419 67.000 C 249.787 65.422,249.333 63.784,249.333 63.079 C 249.333 62.691,249.183 62.280,249.000 62.167 C 248.817 62.053,248.661 61.557,248.655 61.064 C 248.648 60.570,248.429 59.792,248.167 59.333 C 247.905 58.875,247.685 58.096,247.678 57.603 C 247.672 57.110,247.537 56.626,247.378 56.528 C 247.220 56.430,247.009 55.849,246.909 55.237 C 246.648 53.628,245.338 51.000,244.797 51.000 C 244.542 51.000,244.333 50.859,244.333 50.687 C 244.333 50.167,241.958 49.992,231.500 49.740 L 221.500 49.500 221.333 37.774 C 221.174 26.539,221.137 26.008,220.470 25.107 C 219.213 23.410,216.732 22.680,214.759 23.427 M194.122 24.306 C 190.962 26.233,191.278 31.938,194.640 33.653 C 198.037 35.386,201.000 33.051,201.000 28.640 C 201.000 24.549,197.421 22.294,194.122 24.306 M203.833 102.345 C 202.550 102.685,201.395 102.972,201.267 102.982 C 200.327 103.055,197.038 106.486,196.057 108.417 C 194.753 110.984,194.428 116.237,195.481 117.740 C 195.766 118.148,196.000 118.748,196.000 119.074 C 196.000 119.400,196.150 119.667,196.333 119.667 C 196.517 119.667,196.667 119.871,196.667 120.121 C 196.667 120.836,199.769 123.554,201.551 124.400 C 209.887 128.357,221.189 119.352,218.035 111.266 C 217.870 110.845,217.542 109.849,217.305 109.054 C 216.291 105.654,209.672 101.202,206.363 101.696 C 206.255 101.712,205.117 102.004,203.833 102.345 M120.500 278.545 C 116.529 279.162,111.919 283.582,111.161 287.500 C 111.054 288.050,110.800 289.064,110.596 289.753 C 110.327 290.659,110.325 291.214,110.586 291.753 C 110.785 292.164,111.036 293.134,111.144 293.910 C 111.541 296.780,114.543 300.699,117.367 302.037 C 117.990 302.332,118.935 302.782,119.467 303.037 C 123.785 305.105,133.211 301.436,134.548 297.167 C 134.663 296.800,134.873 296.425,135.014 296.333 C 136.292 295.503,136.392 287.667,135.148 285.762 C 134.883 285.356,134.667 284.857,134.667 284.655 C 134.667 284.452,134.445 284.064,134.174 283.793 C 133.903 283.522,133.491 283.041,133.257 282.725 C 130.940 279.577,125.444 277.777,120.500 278.545 M370.072 295.395 C 369.766 295.701,369.667 299.559,369.667 311.198 C 369.667 324.931,369.610 326.617,369.139 326.798 C 368.849 326.909,366.974 327.000,364.973 327.000 L 361.333 327.000 361.333 336.000 L 361.333 345.000 365.083 345.005 C 367.146 345.008,369.020 345.129,369.248 345.274 C 369.574 345.481,369.682 352.741,369.748 379.019 L 369.833 412.500 379.500 412.500 L 389.167 412.500 389.333 378.833 L 389.500 345.167 393.987 345.073 C 397.063 345.009,398.554 344.852,398.732 344.573 C 398.874 344.350,398.992 340.308,398.995 335.592 L 399.000 327.018 394.250 326.926 L 389.500 326.833 389.333 311.000 L 389.167 295.167 379.822 295.078 C 372.833 295.012,370.375 295.092,370.072 295.395 M198.667 324.635 C 198.392 324.790,197.417 325.020,196.500 325.147 C 194.844 325.375,193.110 325.832,191.833 326.377 C 191.467 326.534,190.519 326.885,189.728 327.157 C 188.937 327.430,187.864 327.956,187.343 328.326 C 186.823 328.697,186.308 329.000,186.199 329.000 C 185.852 329.000,182.565 331.456,181.176 332.754 C 178.935 334.846,178.518 334.494,178.405 330.417 L 178.310 327.000 168.822 327.000 L 159.333 327.000 159.333 369.833 L 159.333 412.667 168.833 412.667 L 178.333 412.667 178.333 389.900 C 178.333 376.160,178.457 367.008,178.646 366.817 C 178.818 366.643,179.028 364.850,179.113 362.833 C 179.347 357.253,180.322 353.095,182.256 349.434 C 183.673 346.753,188.312 343.011,190.230 343.003 C 190.632 343.001,191.053 342.850,191.167 342.667 C 191.291 342.466,193.608 342.333,197.000 342.333 C 200.392 342.333,202.709 342.466,202.833 342.667 C 202.947 342.850,203.368 343.001,203.770 343.003 C 206.485 343.015,211.667 348.445,211.667 351.279 C 211.667 351.654,211.797 352.041,211.957 352.140 C 212.117 352.239,212.335 353.035,212.443 353.910 C 212.550 354.784,212.788 356.175,212.971 357.000 C 213.177 357.928,213.310 368.823,213.319 385.583 L 213.333 412.667 223.007 412.667 L 232.680 412.667 232.573 381.417 C 232.458 348.124,232.441 347.741,230.791 343.000 C 230.206 341.317,227.995 336.590,227.673 336.333 C 227.559 336.242,227.029 335.567,226.497 334.833 C 224.590 332.204,220.398 328.912,217.126 327.474 C 214.077 326.135,213.886 326.061,213.000 325.880 C 212.542 325.787,210.667 325.401,208.833 325.023 C 205.417 324.318,199.621 324.098,198.667 324.635 M295.952 324.493 C 295.864 324.580,294.377 324.886,292.646 325.173 C 287.781 325.980,287.544 326.027,286.833 326.326 C 286.467 326.481,285.354 326.857,284.360 327.162 C 282.651 327.687,277.692 329.912,277.333 330.314 C 277.242 330.417,276.717 330.726,276.167 331.000 C 275.617 331.274,275.047 331.687,274.900 331.916 C 274.753 332.146,274.439 332.333,274.201 332.333 C 273.963 332.333,273.258 332.826,272.634 333.428 C 272.011 334.030,271.157 334.761,270.737 335.052 C 268.048 336.917,262.522 343.187,260.703 346.439 C 260.377 347.022,259.734 348.175,259.275 349.000 C 258.480 350.431,257.138 353.745,256.779 355.167 C 256.687 355.533,256.485 356.133,256.331 356.500 C 256.176 356.867,255.958 357.617,255.844 358.167 C 255.731 358.717,255.470 359.842,255.263 360.667 C 254.736 362.777,254.768 376.353,255.306 378.500 C 255.535 379.417,255.801 380.730,255.897 381.419 C 255.992 382.107,256.205 382.754,256.369 382.855 C 256.533 382.956,256.668 383.368,256.669 383.770 C 256.670 384.171,256.895 384.930,257.169 385.455 C 257.443 385.980,257.667 386.562,257.667 386.748 C 257.667 387.150,260.692 393.426,261.002 393.667 C 261.120 393.758,261.500 394.321,261.847 394.917 C 262.194 395.512,262.595 396.000,262.739 396.000 C 262.882 396.000,263.002 396.188,263.005 396.417 C 263.018 397.567,272.476 407.000,273.616 407.000 C 273.797 407.000,273.994 407.131,274.056 407.292 C 274.198 407.664,277.994 409.945,280.167 410.962 C 281.083 411.392,282.231 411.951,282.718 412.205 C 283.205 412.459,283.887 412.667,284.235 412.667 C 284.582 412.667,285.009 412.793,285.183 412.946 C 285.497 413.224,286.694 413.509,291.833 414.534 C 294.999 415.164,305.235 415.248,307.833 414.664 C 309.745 414.234,311.874 413.821,313.925 413.480 C 314.708 413.350,315.430 413.114,315.528 412.955 C 315.626 412.796,315.911 412.667,316.162 412.667 C 316.413 412.667,317.755 412.142,319.144 411.500 C 320.533 410.858,321.766 410.333,321.885 410.333 C 322.125 410.333,327.405 407.003,327.667 406.686 C 327.758 406.575,328.283 406.198,328.833 405.848 C 331.630 404.067,338.667 396.559,338.667 395.356 C 338.667 395.160,338.817 395.000,339.000 395.000 C 339.183 395.000,339.333 394.782,339.333 394.517 C 339.333 394.251,339.523 393.913,339.755 393.767 C 340.179 393.498,342.169 389.645,343.164 387.167 C 343.458 386.433,343.842 385.573,344.016 385.255 C 344.191 384.936,344.333 384.308,344.333 383.858 C 344.333 383.408,344.483 382.947,344.667 382.833 C 344.850 382.720,345.000 382.176,345.000 381.625 C 345.000 381.074,345.152 380.339,345.337 379.993 C 346.568 377.694,346.559 362.290,345.326 359.986 C 345.147 359.651,345.000 359.040,345.000 358.629 C 345.000 357.691,344.662 356.597,343.004 352.167 C 342.481 350.768,340.822 347.495,340.583 347.389 C 340.446 347.328,340.333 347.078,340.333 346.833 C 340.333 346.589,340.215 346.339,340.070 346.278 C 339.925 346.217,339.334 345.391,338.756 344.443 C 335.891 339.744,327.075 331.748,322.500 329.700 C 322.133 329.536,320.858 328.954,319.667 328.407 C 318.475 327.860,316.900 327.235,316.167 327.017 C 315.433 326.799,314.533 326.491,314.167 326.333 C 313.800 326.175,313.050 325.975,312.500 325.889 C 311.950 325.804,309.728 325.418,307.561 325.033 C 303.985 324.398,296.400 324.044,295.952 324.493 M113.667 369.833 L 113.667 412.667 123.333 412.667 L 133.000 412.667 133.000 369.833 L 133.000 327.000 123.333 327.000 L 113.667 327.000 113.667 369.833 M41.167 328.319 C 39.517 328.455,37.792 328.673,37.333 328.803 C 36.875 328.934,35.825 329.196,35.000 329.386 C 31.784 330.126,29.823 330.844,25.667 332.802 C 24.462 333.370,23.292 334.042,23.000 334.333 C 21.123 336.210,20.000 335.648,20.000 332.833 L 20.000 330.333 10.667 330.333 L 1.333 330.333 1.333 389.500 L 1.333 448.667 10.667 448.667 L 20.000 448.667 20.000 430.186 C 20.000 419.354,20.126 411.628,20.305 411.517 C 20.649 411.305,22.393 411.895,22.660 412.314 C 22.928 412.736,28.652 415.457,30.333 415.962 C 31.158 416.210,32.399 416.620,33.090 416.873 C 33.781 417.126,34.785 417.333,35.320 417.333 C 35.856 417.333,36.373 417.462,36.470 417.618 C 37.154 418.724,52.796 418.733,57.167 417.629 C 64.495 415.779,68.947 413.871,73.645 410.564 C 76.729 408.394,82.962 402.505,83.707 401.057 C 83.959 400.568,84.259 400.092,84.373 400.000 C 84.908 399.569,87.333 395.838,87.333 395.445 C 87.333 395.200,87.483 395.000,87.667 395.000 C 87.850 395.000,88.000 394.700,88.000 394.333 C 88.000 393.967,88.112 393.666,88.250 393.665 C 88.388 393.665,88.776 392.952,89.113 392.082 C 89.450 391.212,89.856 390.200,90.014 389.833 C 92.652 383.724,93.581 368.263,91.665 362.333 C 91.517 361.875,90.978 360.150,90.466 358.500 C 89.561 355.580,86.782 349.702,85.975 349.000 C 85.869 348.908,85.500 348.346,85.153 347.750 C 84.806 347.154,84.405 346.667,84.261 346.667 C 84.118 346.667,84.000 346.506,84.000 346.310 C 84.000 346.113,83.813 345.759,83.583 345.522 C 83.354 345.285,82.642 344.445,82.000 343.656 C 80.452 341.753,77.151 338.607,76.141 338.073 C 75.697 337.838,75.333 337.538,75.333 337.406 C 75.332 337.274,74.620 336.723,73.749 336.181 C 72.879 335.639,72.092 335.114,72.000 335.014 C 71.523 334.496,65.314 331.333,64.775 331.333 C 64.532 331.333,64.333 331.183,64.333 331.000 C 64.333 330.817,63.913 330.667,63.400 330.667 C 62.887 330.667,62.324 330.526,62.150 330.354 C 60.716 328.940,48.285 327.735,41.167 328.319 M306.833 342.667 C 306.947 342.850,307.368 343.002,307.770 343.005 C 310.030 343.020,314.881 345.635,317.942 348.489 C 318.735 349.228,319.523 349.883,319.692 349.944 C 319.862 350.006,320.000 350.200,320.000 350.376 C 320.000 350.552,320.361 351.085,320.801 351.560 C 321.242 352.035,321.804 352.816,322.051 353.295 C 322.297 353.775,322.592 354.242,322.706 354.333 C 323.062 354.621,324.667 358.328,324.667 358.865 C 324.667 359.147,324.846 359.705,325.064 360.105 C 325.819 361.488,326.102 364.187,326.102 370.000 C 326.102 375.813,325.819 378.512,325.064 379.895 C 324.846 380.295,324.667 380.869,324.667 381.171 C 324.667 381.940,322.353 386.667,321.977 386.667 C 321.806 386.667,321.667 386.876,321.667 387.131 C 321.667 387.387,321.254 388.044,320.750 388.591 C 320.246 389.137,319.526 389.941,319.151 390.376 C 316.482 393.471,310.118 397.000,307.207 397.000 C 306.748 397.000,306.280 397.150,306.167 397.333 C 305.903 397.760,295.918 397.779,294.524 397.356 C 293.961 397.185,292.825 396.857,292.000 396.626 C 288.551 395.662,284.863 393.520,282.318 391.002 C 281.173 389.869,278.000 385.618,278.000 385.217 C 278.000 385.108,277.640 384.227,277.200 383.259 C 274.327 376.943,273.713 364.869,275.992 359.500 C 276.225 358.950,276.562 358.125,276.741 357.667 C 279.373 350.902,285.299 345.225,291.667 343.367 C 292.492 343.126,293.467 342.805,293.833 342.654 C 294.810 342.250,306.583 342.262,306.833 342.667 M50.000 345.676 C 51.192 345.853,52.917 346.155,53.833 346.347 C 54.750 346.539,55.913 346.782,56.417 346.886 C 56.921 346.990,57.333 347.209,57.333 347.371 C 57.333 347.534,57.561 347.667,57.840 347.667 C 58.119 347.667,58.941 348.042,59.667 348.500 C 60.393 348.958,61.148 349.333,61.345 349.333 C 63.125 349.333,71.000 359.660,71.000 361.994 C 71.000 362.342,71.125 362.704,71.277 362.799 C 71.523 362.951,71.846 364.495,72.536 368.833 C 73.141 372.633,72.256 383.596,71.297 384.189 C 71.133 384.290,71.000 384.630,71.000 384.946 C 71.000 385.515,68.495 390.666,68.059 390.994 C 67.933 391.089,67.385 391.767,66.842 392.500 C 66.298 393.233,65.496 394.119,65.058 394.469 C 64.620 394.819,64.015 395.357,63.714 395.665 C 62.134 397.281,57.192 399.901,55.075 400.246 C 54.475 400.343,53.904 400.553,53.806 400.712 C 53.708 400.870,52.670 401.000,51.500 401.000 C 50.330 401.000,49.280 401.150,49.167 401.333 C 49.053 401.517,48.078 401.667,47.000 401.667 C 45.922 401.667,44.947 401.517,44.833 401.333 C 44.720 401.150,43.670 401.000,42.500 401.000 C 41.330 401.000,40.280 400.850,40.167 400.667 C 40.053 400.483,39.632 400.332,39.230 400.331 C 38.829 400.330,38.115 400.128,37.644 399.883 C 37.174 399.637,36.411 399.341,35.948 399.225 C 32.690 398.408,24.667 390.960,24.667 388.754 C 24.667 388.523,24.550 388.333,24.406 388.333 C 24.143 388.333,23.436 386.860,22.966 385.333 C 20.423 377.063,20.348 369.410,22.741 362.167 C 23.114 361.036,24.080 358.919,24.337 358.667 C 24.430 358.575,24.805 357.908,25.170 357.185 C 25.993 355.555,31.088 350.272,32.667 349.412 C 33.308 349.062,34.508 348.404,35.333 347.949 C 38.736 346.071,45.546 345.016,50.000 345.676 " stroke="none" fill="#040404" fill-rule="evenodd"></path><path id="path2" d="M175.528 15.288 C 175.430 15.446,175.943 15.576,176.667 15.576 C 177.391 15.576,177.903 15.446,177.805 15.288 C 177.707 15.130,177.195 15.000,176.667 15.000 C 176.138 15.000,175.626 15.130,175.528 15.288 M171.465 19.805 C 171.365 20.065,171.338 20.702,171.403 21.222 C 171.501 21.993,171.553 21.906,171.687 20.750 C 171.856 19.292,171.782 18.979,171.465 19.805 M201.417 28.833 C 201.421 29.567,201.489 29.827,201.569 29.413 C 201.649 28.998,201.646 28.398,201.562 28.079 C 201.479 27.761,201.414 28.100,201.417 28.833 M201.406 59.564 C 201.366 66.015,201.446 71.364,201.583 71.449 C 201.811 71.590,201.805 62.532,201.571 52.000 C 201.520 49.708,201.446 53.112,201.406 59.564 M205.750 74.896 C 206.071 74.980,206.596 74.980,206.917 74.896 C 207.237 74.813,206.975 74.744,206.333 74.744 C 205.692 74.744,205.429 74.813,205.750 74.896 M204.917 90.911 C 205.696 90.981,206.971 90.981,207.750 90.911 C 208.529 90.841,207.892 90.783,206.333 90.783 C 204.775 90.783,204.137 90.841,204.917 90.911 M202.751 232.500 C 202.754 233.233,202.823 233.494,202.902 233.079 C 202.982 232.665,202.979 232.065,202.896 231.746 C 202.812 231.427,202.747 231.767,202.751 232.500 M196.100 236.000 C 196.100 237.008,196.162 237.421,196.239 236.917 C 196.315 236.412,196.315 235.588,196.239 235.083 C 196.162 234.579,196.100 234.992,196.100 236.000 M196.461 242.500 C 196.461 244.700,196.515 245.557,196.580 244.404 C 196.646 243.251,196.645 241.451,196.579 240.404 C 196.513 239.357,196.460 240.300,196.461 242.500 M122.250 277.908 C 122.846 277.982,123.821 277.982,124.417 277.908 C 125.013 277.834,124.525 277.773,123.333 277.773 C 122.142 277.773,121.654 277.834,122.250 277.908 M122.417 303.905 C 122.921 303.982,123.746 303.982,124.250 303.905 C 124.754 303.829,124.342 303.767,123.333 303.767 C 122.325 303.767,121.912 303.829,122.417 303.905 M133.333 369.600 L 133.500 412.500 133.585 369.851 C 133.631 346.394,133.556 327.089,133.418 326.951 C 133.280 326.813,133.242 346.005,133.333 369.600 M45.750 327.576 C 46.438 327.648,47.563 327.648,48.250 327.576 C 48.938 327.504,48.375 327.445,47.000 327.445 C 45.625 327.445,45.063 327.504,45.750 327.576 M42.254 327.902 C 42.669 327.982,43.269 327.979,43.587 327.896 C 43.906 327.812,43.567 327.747,42.833 327.751 C 42.100 327.754,41.839 327.823,42.254 327.902 M4.500 329.902 C 12.842 330.138,20.257 330.145,20.116 329.917 C 20.030 329.779,15.732 329.698,10.564 329.737 C 5.395 329.776,2.667 329.850,4.500 329.902 M233.000 383.900 C 232.908 399.887,232.947 412.853,233.085 412.715 C 233.224 412.576,233.299 399.496,233.252 383.648 L 233.167 354.833 233.000 383.900 M21.023 373.194 C 21.036 373.912,21.174 374.800,21.330 375.167 C 21.506 375.582,21.543 375.141,21.427 374.000 C 21.203 371.805,20.991 371.381,21.023 373.194 " stroke="none" fill="#7c7c7c" fill-rule="evenodd"></path><path id="path3" d="M216.088 1.239 C 216.595 1.316,217.345 1.314,217.755 1.235 C 218.165 1.156,217.750 1.093,216.833 1.095 C 215.917 1.098,215.581 1.163,216.088 1.239 M213.430 2.502 C 212.768 3.145,212.288 3.731,212.363 3.805 C 212.438 3.878,213.078 3.352,213.784 2.636 C 215.379 1.018,215.077 0.903,213.430 2.502 M219.783 2.425 C 220.361 3.025,221.012 3.812,221.230 4.175 C 221.449 4.537,221.636 4.673,221.647 4.477 C 221.671 4.045,219.394 1.333,219.007 1.333 C 218.857 1.333,219.206 1.824,219.783 2.425 M212.103 6.500 C 212.105 7.600,212.167 8.010,212.242 7.411 C 212.316 6.812,212.314 5.912,212.238 5.411 C 212.162 4.910,212.101 5.400,212.103 6.500 M221.360 8.341 C 221.181 11.783,215.344 12.797,213.048 9.785 L 212.322 8.833 212.716 9.752 C 213.347 11.227,216.341 12.541,217.934 12.043 C 219.810 11.456,221.944 9.204,221.547 8.230 C 221.448 7.986,221.376 8.029,221.360 8.341 M172.861 17.361 C 172.357 17.927,172.011 18.456,172.093 18.537 C 172.174 18.618,172.644 18.156,173.137 17.509 C 174.243 16.059,174.093 15.979,172.861 17.361 M171.762 21.167 C 171.765 22.083,171.829 22.419,171.906 21.912 C 171.982 21.405,171.980 20.655,171.901 20.245 C 171.822 19.835,171.760 20.250,171.762 21.167 M214.660 23.110 C 211.473 24.588,211.656 22.995,211.744 48.395 L 211.822 70.833 211.994 48.110 L 212.167 25.387 212.940 24.563 C 215.034 22.335,219.250 22.837,220.781 25.496 C 221.043 25.953,221.220 29.891,221.333 37.833 L 221.500 49.500 227.980 49.591 C 231.543 49.641,234.386 49.608,234.297 49.519 C 234.207 49.429,231.329 49.339,227.900 49.319 L 221.667 49.281 221.667 38.162 C 221.667 31.095,221.537 26.701,221.311 26.105 C 220.304 23.447,217.072 21.992,214.660 23.110 M172.000 23.596 C 172.001 23.947,174.305 26.473,174.472 26.306 C 174.551 26.227,174.027 25.532,173.308 24.761 C 172.588 23.990,172.000 23.466,172.000 23.596 M194.480 23.852 C 193.855 24.352,193.858 24.358,194.561 24.018 C 195.898 23.373,198.008 23.598,199.302 24.524 L 200.500 25.381 199.346 24.357 C 198.015 23.177,195.632 22.929,194.480 23.852 M179.295 25.328 C 178.674 25.875,178.287 26.325,178.435 26.328 C 178.582 26.331,179.182 25.884,179.768 25.335 C 181.151 24.038,180.765 24.033,179.295 25.328 M192.027 26.283 C 190.643 28.869,192.847 34.378,195.241 34.319 C 195.600 34.310,195.335 34.041,194.569 33.637 C 192.349 32.465,190.958 27.842,192.394 26.406 C 192.611 26.189,192.699 25.921,192.588 25.810 C 192.478 25.700,192.225 25.913,192.027 26.283 M176.083 26.563 C 176.404 26.647,176.929 26.647,177.250 26.563 C 177.571 26.479,177.308 26.411,176.667 26.411 C 176.025 26.411,175.762 26.479,176.083 26.563 M201.107 29.000 C 201.107 30.192,201.167 30.679,201.241 30.083 C 201.315 29.488,201.315 28.512,201.241 27.917 C 201.167 27.321,201.107 27.808,201.107 29.000 M199.944 32.627 C 199.883 32.788,199.236 33.238,198.505 33.627 C 197.774 34.015,197.353 34.333,197.569 34.333 C 198.142 34.333,200.333 32.986,200.333 32.634 C 200.333 32.249,200.089 32.245,199.944 32.627 M174.333 37.380 L 173.500 38.079 174.358 37.570 C 174.830 37.291,175.580 36.993,176.024 36.910 L 176.833 36.757 176.000 36.719 C 175.542 36.699,174.792 36.996,174.333 37.380 M178.167 36.911 C 178.717 36.991,179.692 37.429,180.333 37.885 L 181.500 38.715 180.346 37.691 C 179.543 36.978,178.884 36.682,178.179 36.717 L 177.167 36.767 178.167 36.911 M172.387 39.849 C 172.157 40.354,172.000 42.448,172.000 45.010 L 172.000 49.322 163.083 49.417 L 154.167 49.511 163.000 49.584 C 167.858 49.624,172.006 49.546,172.218 49.412 C 172.505 49.229,173.081 38.997,172.804 39.000 C 172.787 39.000,172.600 39.382,172.387 39.849 M193.500 45.333 C 192.207 46.190,192.648 46.190,194.246 45.333 C 194.930 44.967,195.267 44.668,194.995 44.669 C 194.723 44.670,194.050 44.969,193.500 45.333 M198.774 45.161 C 199.291 45.431,199.999 45.993,200.346 46.409 C 200.694 46.826,200.983 47.030,200.989 46.863 C 201.006 46.389,198.940 44.666,198.357 44.669 C 198.068 44.670,198.255 44.891,198.774 45.161 M192.061 46.739 C 191.567 47.233,191.485 95.181,191.977 95.486 C 192.148 95.591,192.396 95.502,192.528 95.287 C 192.679 95.044,192.625 94.986,192.385 95.135 C 192.095 95.314,192.000 89.390,192.000 71.214 C 192.000 52.189,192.089 47.024,192.417 46.907 C 192.646 46.825,192.748 46.665,192.644 46.551 C 192.541 46.437,192.278 46.522,192.061 46.739 M201.091 59.167 C 201.035 69.049,201.108 71.314,201.500 72.000 C 201.802 72.529,201.981 72.645,201.988 72.317 C 201.995 72.032,201.852 71.652,201.671 71.471 C 201.470 71.270,201.306 66.469,201.250 59.154 L 201.158 47.167 201.091 59.167 M235.333 49.871 C 237.140 50.097,243.953 50.157,243.410 49.942 C 243.093 49.816,240.958 49.725,238.667 49.740 C 236.375 49.755,234.875 49.814,235.333 49.871 M152.909 51.909 C 152.186 53.504,152.405 53.724,153.152 52.152 C 153.466 51.488,153.665 50.887,153.594 50.816 C 153.522 50.744,153.214 51.236,152.909 51.909 M245.333 51.222 C 245.333 51.406,245.446 51.668,245.583 51.805 C 245.721 51.943,246.087 52.680,246.398 53.444 C 246.709 54.208,246.971 54.575,246.981 54.260 C 246.992 53.945,246.684 53.120,246.298 52.427 C 245.473 50.948,245.333 50.773,245.333 51.222 M151.260 56.000 C 151.147 56.458,150.958 57.208,150.842 57.667 C 150.710 58.185,150.830 58.065,151.160 57.351 C 151.452 56.718,151.640 55.968,151.578 55.684 C 151.508 55.359,151.390 55.477,151.260 56.000 M247.681 58.000 C 247.692 58.598,248.638 60.333,248.655 59.788 C 248.661 59.580,248.443 58.980,248.169 58.455 C 247.895 57.930,247.675 57.725,247.681 58.000 M150.372 58.889 C 150.351 59.104,150.236 59.554,150.118 59.889 C 149.950 60.363,149.995 60.415,150.316 60.119 C 150.543 59.909,150.658 59.459,150.570 59.119 C 150.482 58.778,150.393 58.675,150.372 58.889 M149.372 62.549 C 149.123 63.305,149.000 64.128,149.100 64.378 C 149.199 64.628,149.293 64.451,149.307 63.983 C 149.321 63.516,149.497 62.969,149.698 62.769 C 149.898 62.568,150.009 62.128,149.944 61.789 C 149.866 61.382,149.673 61.637,149.372 62.549 M249.492 64.167 C 249.634 64.533,249.878 65.283,250.035 65.833 C 250.292 66.730,250.306 66.698,250.173 65.529 C 250.091 64.811,249.847 64.061,249.630 63.862 C 249.332 63.589,249.298 63.663,249.492 64.167 M147.260 70.000 C 147.147 70.458,146.958 71.208,146.842 71.667 C 146.710 72.185,146.830 72.065,147.160 71.351 C 147.452 70.718,147.640 69.968,147.578 69.684 C 147.508 69.359,147.390 69.477,147.260 70.000 M251.694 71.000 C 251.685 71.275,251.889 72.175,252.149 73.000 C 252.409 73.825,252.630 74.275,252.639 74.000 C 252.649 73.725,252.444 72.825,252.184 72.000 C 251.924 71.175,251.704 70.725,251.694 71.000 M210.002 73.606 C 209.171 74.481,209.069 74.683,209.644 74.309 C 210.331 73.862,211.659 72.288,211.291 72.356 C 211.222 72.369,210.642 72.931,210.002 73.606 M146.167 73.667 C 146.042 74.061,146.014 74.459,146.106 74.550 C 146.197 74.642,146.375 74.394,146.500 74.000 C 146.625 73.606,146.653 73.208,146.561 73.116 C 146.469 73.025,146.292 73.272,146.167 73.667 M204.929 75.060 C 205.687 75.361,207.343 75.348,208.142 75.035 C 208.524 74.885,207.887 74.793,206.572 74.808 C 205.355 74.822,204.616 74.935,204.929 75.060 M145.397 76.449 C 145.179 77.053,145.007 77.762,145.016 78.024 C 145.025 78.286,145.260 77.848,145.539 77.051 C 145.818 76.254,145.990 75.546,145.921 75.476 C 145.851 75.407,145.616 75.844,145.397 76.449 M253.467 77.000 C 253.748 78.581,255.257 83.701,255.511 83.934 C 255.651 84.062,255.681 83.867,255.578 83.500 C 255.476 83.133,255.083 81.696,254.706 80.307 C 254.329 78.917,253.863 77.417,253.670 76.974 L 253.319 76.167 253.467 77.000 M144.561 79.127 C 144.436 79.454,144.343 79.971,144.354 80.277 C 144.368 80.646,144.484 80.562,144.697 80.029 C 144.874 79.586,144.967 79.069,144.904 78.879 C 144.841 78.689,144.686 78.801,144.561 79.127 M144.039 81.223 C 144.017 81.437,143.903 81.887,143.784 82.223 C 143.617 82.696,143.661 82.748,143.982 82.452 C 144.210 82.242,144.324 81.792,144.237 81.452 C 144.149 81.112,144.060 81.009,144.039 81.223 M143.045 84.501 C 142.803 85.170,142.674 85.785,142.758 85.869 C 142.984 86.095,143.754 84.096,143.609 83.660 C 143.540 83.454,143.287 83.833,143.045 84.501 M256.367 86.878 C 256.349 87.270,256.567 88.095,256.852 88.712 C 257.364 89.821,257.337 89.581,256.675 87.167 C 256.469 86.412,256.393 86.341,256.367 86.878 M141.542 90.042 C 141.264 91.431,141.533 91.700,141.833 90.333 C 141.960 89.757,141.994 89.216,141.909 89.131 C 141.824 89.046,141.659 89.456,141.542 90.042 M202.833 90.650 C 202.458 90.802,203.404 90.849,205.000 90.758 C 207.572 90.611,209.157 90.800,214.000 91.830 C 215.339 92.115,212.323 91.130,210.579 90.713 C 208.779 90.283,203.841 90.242,202.833 90.650 M200.000 91.338 C 199.648 91.569,199.846 91.602,200.667 91.452 C 202.104 91.188,202.375 90.998,201.306 91.005 C 200.862 91.008,200.275 91.158,200.000 91.338 M140.749 92.991 C 140.163 94.869,140.261 95.465,140.869 93.727 C 141.147 92.936,141.327 92.147,141.269 91.974 C 141.212 91.801,140.977 92.259,140.749 92.991 M195.667 93.000 C 195.667 93.183,195.460 93.333,195.207 93.333 C 194.955 93.333,194.562 93.558,194.333 93.833 C 194.047 94.179,194.034 94.333,194.293 94.333 C 194.498 94.333,194.667 94.183,194.667 94.000 C 194.667 93.817,194.854 93.662,195.083 93.656 C 195.795 93.638,196.922 92.667,196.230 92.667 C 195.920 92.667,195.667 92.817,195.667 93.000 M258.005 93.564 C 258.002 93.965,258.150 94.387,258.333 94.500 C 258.758 94.762,258.758 93.990,258.333 93.333 C 258.071 92.927,258.009 92.970,258.005 93.564 M258.705 95.562 C 258.657 96.481,259.281 98.163,259.565 97.879 C 259.683 97.762,259.611 97.328,259.407 96.916 C 259.202 96.504,258.969 95.867,258.889 95.500 C 258.756 94.888,258.741 94.893,258.705 95.562 M140.039 95.556 C 140.017 95.770,139.903 96.220,139.784 96.556 C 139.617 97.030,139.661 97.081,139.982 96.785 C 140.210 96.576,140.324 96.126,140.237 95.785 C 140.149 95.445,140.060 95.342,140.039 95.556 M222.209 96.652 C 222.552 97.102,223.158 97.809,223.556 98.223 C 223.953 98.636,224.512 99.309,224.798 99.717 C 225.084 100.126,225.392 100.386,225.483 100.295 C 225.573 100.205,224.733 99.164,223.615 97.982 C 222.498 96.800,221.865 96.202,222.209 96.652 M139.372 97.889 C 139.351 98.104,139.236 98.554,139.118 98.889 C 138.950 99.363,138.995 99.415,139.316 99.119 C 139.543 98.909,139.658 98.459,139.570 98.119 C 139.482 97.778,139.393 97.675,139.372 97.889 M138.417 101.632 C 137.849 103.480,137.914 104.092,138.527 102.679 C 138.802 102.044,138.984 101.243,138.931 100.900 C 138.870 100.508,138.678 100.781,138.417 101.632 M203.833 102.000 L 203.167 102.286 203.833 102.277 C 204.200 102.271,204.875 102.147,205.333 102.000 L 206.167 101.733 205.333 101.723 C 204.875 101.718,204.200 101.842,203.833 102.000 M207.377 101.821 C 207.462 101.907,208.477 102.197,209.633 102.466 C 212.029 103.025,212.110 102.737,209.734 102.110 C 208.097 101.678,207.113 101.557,207.377 101.821 M260.351 102.333 C 260.347 102.608,260.560 103.433,260.824 104.167 C 261.134 105.029,261.309 105.249,261.319 104.788 C 261.327 104.397,261.114 103.572,260.846 102.955 C 260.579 102.338,260.356 102.058,260.351 102.333 M198.576 104.750 C 196.872 106.348,194.746 109.524,195.126 109.904 C 195.212 109.990,195.706 109.197,196.223 108.142 C 196.868 106.824,197.769 105.718,199.099 104.611 C 200.163 103.725,200.901 103.000,200.738 103.000 C 200.575 103.000,199.602 103.787,198.576 104.750 M212.496 103.436 C 212.860 103.655,214.023 104.703,215.079 105.765 C 216.136 106.827,217.000 107.576,217.000 107.429 C 217.000 106.985,212.710 102.998,212.256 103.020 C 212.023 103.030,212.132 103.218,212.496 103.436 M227.344 103.712 C 227.338 103.828,227.557 104.353,227.831 104.879 C 228.105 105.404,228.330 105.600,228.331 105.314 C 228.333 104.825,227.367 103.257,227.344 103.712 M137.576 104.535 C 137.443 104.668,137.333 105.008,137.333 105.289 C 137.333 105.664,137.432 105.701,137.704 105.429 C 137.908 105.225,138.017 104.886,137.947 104.675 C 137.877 104.464,137.710 104.401,137.576 104.535 M261.344 106.667 C 261.344 106.942,261.489 107.392,261.667 107.667 C 261.954 108.111,261.990 108.111,261.990 107.667 C 261.990 107.392,261.844 106.942,261.667 106.667 C 261.379 106.222,261.344 106.222,261.344 106.667 M136.705 108.033 C 136.501 108.619,136.340 109.340,136.349 109.633 C 136.358 109.927,136.594 109.515,136.873 108.718 C 137.152 107.921,137.312 107.201,137.229 107.117 C 137.145 107.034,136.910 107.446,136.705 108.033 M217.180 108.500 C 217.916 110.631,218.116 111.723,218.126 113.667 C 218.133 114.858,218.029 116.358,217.895 117.000 C 217.716 117.862,217.784 117.775,218.155 116.667 C 218.987 114.180,218.607 110.409,217.323 108.414 C 216.990 107.896,216.975 107.905,217.180 108.500 M229.029 109.167 C 229.060 110.305,229.615 111.368,229.638 110.333 C 229.648 109.875,229.511 109.275,229.333 109.000 C 229.067 108.587,229.013 108.616,229.029 109.167 M262.023 110.064 C 262.011 110.557,262.150 111.053,262.333 111.167 C 262.517 111.280,262.691 111.926,262.720 112.603 C 262.768 113.707,262.786 113.731,262.900 112.833 C 262.970 112.283,262.806 111.233,262.537 110.500 C 262.103 109.320,262.044 109.270,262.023 110.064 M194.520 112.750 C 194.417 113.529,194.462 114.692,194.621 115.333 C 194.860 116.302,194.911 116.063,194.922 113.917 C 194.936 111.029,194.800 110.633,194.520 112.750 M229.779 113.667 C 229.779 115.042,229.838 115.604,229.909 114.917 C 229.981 114.229,229.981 113.104,229.909 112.417 C 229.838 111.729,229.779 112.292,229.779 113.667 M135.240 114.111 C 134.841 115.124,134.936 115.977,135.366 115.240 C 135.556 114.913,135.659 114.388,135.596 114.073 C 135.490 113.550,135.459 113.553,135.240 114.111 M263.216 115.833 C 263.327 116.750,263.475 117.563,263.543 117.639 C 263.804 117.931,263.605 115.467,263.316 114.833 C 263.112 114.385,263.079 114.711,263.216 115.833 M134.597 117.333 C 134.020 121.322,133.980 122.650,134.511 120.167 C 134.785 118.883,134.966 117.383,134.912 116.833 C 134.830 115.998,134.778 116.080,134.597 117.333 M229.240 117.111 C 228.869 118.055,228.929 118.537,229.365 118.102 C 229.565 117.902,229.673 117.459,229.605 117.119 C 229.485 116.522,229.472 116.522,229.240 117.111 M195.011 117.564 C 195.005 117.782,195.150 118.053,195.333 118.167 C 195.517 118.280,195.667 118.645,195.667 118.979 C 195.667 119.312,195.892 119.772,196.167 120.000 C 196.512 120.287,196.667 120.299,196.667 120.041 C 196.667 119.835,196.517 119.667,196.333 119.667 C 196.150 119.667,196.000 119.395,196.000 119.064 C 196.000 118.400,195.028 116.925,195.011 117.564 M263.705 119.000 C 263.690 119.458,263.822 120.058,264.000 120.333 C 264.411 120.970,264.411 120.285,264.000 119.000 L 263.733 118.167 263.705 119.000 M228.566 120.464 C 228.429 120.811,228.396 121.174,228.492 121.270 C 228.796 121.574,229.064 121.076,228.936 120.443 C 228.820 119.863,228.802 119.864,228.566 120.464 M196.996 121.167 C 197.441 121.898,200.089 124.096,200.752 124.285 C 200.980 124.349,200.792 124.140,200.333 123.819 C 199.875 123.498,198.845 122.619,198.045 121.867 C 197.245 121.115,196.773 120.800,196.996 121.167 M213.391 123.192 C 212.597 123.820,212.072 124.332,212.224 124.330 C 212.376 124.328,213.159 123.803,213.964 123.163 C 214.769 122.524,215.294 122.012,215.130 122.026 C 214.967 122.040,214.184 122.565,213.391 123.192 M227.737 122.677 C 227.515 123.033,227.339 123.514,227.347 123.745 C 227.354 123.977,227.591 123.741,227.873 123.221 C 228.459 122.140,228.349 121.699,227.737 122.677 M264.612 124.667 C 264.899 128.099,264.882 139.283,264.585 142.333 L 264.342 144.833 264.854 141.833 C 265.406 138.595,265.317 127.640,264.710 124.000 C 264.437 122.369,264.426 122.442,264.612 124.667 M210.717 124.750 C 210.432 125.035,209.089 125.167,206.466 125.167 C 204.358 125.167,202.978 125.264,203.399 125.383 C 205.367 125.939,210.639 125.495,211.427 124.707 C 211.649 124.484,211.665 124.333,211.467 124.333 C 211.283 124.333,210.946 124.521,210.717 124.750 M133.548 128.083 C 133.439 129.962,133.476 132.475,133.629 133.667 C 133.862 135.470,133.916 134.896,133.954 130.250 C 134.006 123.922,133.841 123.040,133.548 128.083 M222.000 130.892 L 221.167 131.743 222.083 131.167 C 222.588 130.849,223.000 130.457,223.000 130.295 C 223.000 129.891,222.950 129.921,222.000 130.892 M191.827 132.062 C 191.734 132.306,191.699 137.529,191.750 143.669 L 191.843 154.833 191.921 143.583 C 192.000 132.350,192.066 131.780,193.159 132.873 C 193.456 133.170,193.775 133.336,193.868 133.243 C 193.962 133.149,193.579 132.746,193.018 132.346 C 192.238 131.791,191.957 131.724,191.827 132.062 M220.063 132.346 C 219.662 132.720,219.333 133.102,219.333 133.195 C 219.333 133.464,220.978 132.194,220.990 131.917 C 221.005 131.537,220.858 131.606,220.063 132.346 M196.000 134.500 C 196.458 134.762,196.983 134.976,197.167 134.976 C 197.350 134.976,197.125 134.762,196.667 134.500 C 196.208 134.238,195.683 134.024,195.500 134.024 C 195.317 134.024,195.542 134.238,196.000 134.500 M216.333 134.528 C 215.868 134.786,215.721 134.988,216.000 134.984 C 216.275 134.981,216.791 134.759,217.147 134.489 C 217.949 133.883,217.454 133.906,216.333 134.528 M206.500 136.667 L 203.167 136.871 206.167 136.916 C 207.817 136.941,209.767 136.837,210.500 136.686 C 212.079 136.359,211.561 136.357,206.500 136.667 M134.180 139.500 C 134.260 140.417,134.471 141.842,134.649 142.667 L 134.972 144.167 134.807 142.500 C 134.717 141.583,134.505 140.158,134.338 139.333 L 134.033 137.833 134.180 139.500 M135.029 144.667 C 135.039 144.942,135.176 145.467,135.333 145.833 L 135.620 146.500 135.638 145.833 C 135.648 145.467,135.511 144.942,135.333 144.667 C 135.046 144.222,135.012 144.222,135.029 144.667 M263.895 146.127 C 263.769 146.454,263.676 146.971,263.688 147.277 C 263.702 147.646,263.818 147.562,264.031 147.029 C 264.208 146.586,264.301 146.069,264.237 145.879 C 264.174 145.689,264.020 145.801,263.895 146.127 M135.667 148.127 C 135.667 148.402,135.817 148.720,136.000 148.833 C 136.183 148.947,136.333 148.814,136.333 148.539 C 136.333 148.264,136.183 147.947,136.000 147.833 C 135.817 147.720,135.667 147.852,135.667 148.127 M263.379 148.556 C 263.354 148.954,263.247 149.554,263.141 149.889 C 262.960 150.467,262.970 150.468,263.330 149.907 C 263.539 149.581,263.646 148.981,263.567 148.574 C 263.424 147.834,263.424 147.834,263.379 148.556 M136.346 150.045 C 136.339 150.345,136.557 151.020,136.831 151.545 C 137.472 152.774,137.483 152.088,136.846 150.622 C 136.579 150.005,136.354 149.745,136.346 150.045 M262.610 151.667 C 262.505 152.125,262.315 152.800,262.188 153.167 C 262.061 153.533,262.201 153.412,262.500 152.897 C 262.798 152.383,262.987 151.708,262.921 151.397 C 262.835 150.995,262.746 151.072,262.610 151.667 M138.024 154.833 C 138.024 155.017,138.238 155.542,138.500 156.000 C 138.762 156.458,138.976 156.683,138.976 156.500 C 138.976 156.317,138.762 155.792,138.500 155.333 C 138.238 154.875,138.024 154.650,138.024 154.833 M181.333 155.070 C 181.333 155.353,181.583 155.791,181.888 156.043 C 182.395 156.461,182.406 156.429,182.009 155.667 C 181.429 154.549,181.333 154.465,181.333 155.070 M190.854 156.183 C 189.623 158.060,186.274 158.970,184.228 157.982 C 183.525 157.642,183.522 157.648,184.147 158.148 C 185.925 159.573,190.099 158.284,191.376 155.917 C 191.853 155.032,191.485 155.219,190.854 156.183 M260.737 157.011 C 260.515 157.366,260.339 157.847,260.347 158.079 C 260.354 158.310,260.591 158.074,260.873 157.554 C 261.459 156.473,261.349 156.032,260.737 157.011 M140.401 160.493 C 140.799 161.314,141.183 161.928,141.253 161.858 C 141.404 161.708,140.057 159.000,139.831 159.000 C 139.745 159.000,140.002 159.672,140.401 160.493 M259.009 160.822 C 258.786 161.091,258.661 161.483,258.731 161.693 C 258.801 161.904,259.037 161.684,259.255 161.204 C 259.700 160.228,259.614 160.094,259.009 160.822 M141.667 163.087 C 141.667 163.475,144.066 167.307,144.571 167.726 C 144.854 167.960,144.367 167.030,143.490 165.659 C 141.693 162.851,141.667 162.814,141.667 163.087 M257.667 163.574 C 257.667 163.768,256.842 165.173,255.833 166.697 C 254.825 168.220,254.006 169.625,254.013 169.817 C 254.021 170.009,254.264 169.717,254.554 169.167 C 254.844 168.617,255.343 167.867,255.662 167.500 C 256.591 166.434,258.100 163.656,257.874 163.429 C 257.760 163.315,257.667 163.381,257.667 163.574 M252.226 171.705 C 251.525 172.600,251.075 173.327,251.226 173.320 C 251.535 173.306,253.789 170.339,253.613 170.179 C 253.551 170.122,252.927 170.809,252.226 171.705 M146.970 171.277 C 147.150 171.613,147.562 172.101,147.885 172.361 C 148.303 172.696,148.253 172.519,147.714 171.750 C 146.891 170.576,146.442 170.291,146.970 171.277 M149.062 173.833 C 149.461 174.292,149.838 174.667,149.901 174.667 C 149.964 174.667,149.770 174.292,149.469 173.833 C 149.169 173.375,148.792 173.000,148.631 173.000 C 148.469 173.000,148.664 173.375,149.062 173.833 M249.983 174.519 C 249.542 174.987,249.407 175.284,249.682 175.179 C 250.116 175.012,251.195 173.667,250.894 173.667 C 250.833 173.667,250.423 174.050,249.983 174.519 M150.333 175.283 C 150.333 175.580,155.839 180.959,156.833 181.633 C 157.200 181.882,156.636 181.279,155.579 180.293 C 154.523 179.307,152.911 177.718,151.996 176.763 C 151.082 175.807,150.333 175.141,150.333 175.283 M244.477 179.957 C 243.364 181.028,242.239 181.980,241.977 182.073 C 241.715 182.166,241.595 182.345,241.712 182.472 C 241.828 182.598,243.064 181.643,244.458 180.351 C 245.853 179.058,246.882 178.002,246.747 178.005 C 246.611 178.008,245.590 178.886,244.477 179.957 M159.255 183.637 C 159.854 184.203,160.516 184.667,160.727 184.667 C 160.938 184.667,161.049 184.623,160.972 184.570 C 160.896 184.517,160.233 184.053,159.500 183.540 L 158.167 182.607 159.255 183.637 M238.083 184.891 C 237.671 185.179,237.333 185.552,237.333 185.720 C 237.333 185.889,237.521 185.865,237.750 185.668 C 237.979 185.472,238.467 185.095,238.833 184.833 C 239.200 184.570,239.350 184.358,239.167 184.361 C 238.983 184.365,238.496 184.604,238.083 184.891 M233.500 188.065 C 233.133 188.273,232.758 188.533,232.667 188.643 C 232.575 188.752,231.787 189.202,230.915 189.641 C 230.043 190.081,229.379 190.490,229.439 190.550 C 229.605 190.716,232.716 189.088,233.667 188.339 C 234.593 187.609,234.519 187.487,233.500 188.065 M166.333 188.605 C 166.333 188.764,166.708 189.064,167.167 189.273 C 167.625 189.482,168.000 189.598,168.000 189.531 C 168.000 189.465,167.625 189.164,167.167 188.864 C 166.708 188.564,166.333 188.447,166.333 188.605 M171.853 191.823 C 172.209 192.092,172.650 192.312,172.833 192.312 C 173.017 192.312,172.875 192.092,172.520 191.823 C 172.164 191.554,171.723 191.333,171.539 191.333 C 171.356 191.333,171.497 191.554,171.853 191.823 M175.000 193.134 C 175.000 193.367,177.354 194.667,177.769 194.663 C 177.988 194.660,177.514 194.285,176.716 193.829 C 175.252 192.992,175.000 192.890,175.000 193.134 M222.585 193.754 C 221.899 194.136,221.385 194.497,221.444 194.555 C 221.584 194.695,224.333 193.366,224.333 193.159 C 224.333 192.881,223.868 193.040,222.585 193.754 M179.667 195.464 C 179.667 195.567,180.267 195.941,181.000 196.295 C 181.733 196.650,182.333 196.818,182.333 196.669 C 182.333 196.520,181.846 196.206,181.250 195.971 C 180.654 195.736,180.054 195.484,179.917 195.411 C 179.779 195.338,179.667 195.362,179.667 195.464 M218.083 195.937 C 217.487 196.221,217.000 196.574,217.000 196.721 C 217.000 196.942,219.166 195.910,219.639 195.464 C 219.923 195.196,219.132 195.437,218.083 195.937 M182.667 197.134 C 182.667 197.207,183.229 197.585,183.917 197.974 L 185.167 198.680 184.167 197.842 C 183.249 197.073,182.667 196.798,182.667 197.134 M213.833 198.677 C 212.199 199.894,209.667 202.365,209.667 202.745 C 209.667 202.898,210.130 202.496,210.695 201.852 C 211.261 201.207,212.626 200.002,213.728 199.173 C 214.831 198.345,215.605 197.671,215.450 197.676 C 215.294 197.681,214.567 198.132,213.833 198.677 M185.333 198.784 C 185.333 198.864,186.269 199.883,187.412 201.048 C 188.555 202.213,189.170 202.717,188.780 202.167 C 188.093 201.199,185.333 198.491,185.333 198.784 M208.727 204.167 C 208.518 204.625,208.402 205.000,208.469 205.000 C 208.535 205.000,208.836 204.625,209.136 204.167 C 209.436 203.708,209.553 203.333,209.395 203.333 C 209.236 203.333,208.936 203.708,208.727 204.167 M190.002 204.353 C 190.001 204.639,190.220 205.164,190.489 205.520 C 191.126 206.361,191.132 205.997,190.502 204.788 C 190.228 204.263,190.003 204.067,190.002 204.353 M207.357 207.030 C 206.977 207.816,206.675 208.618,206.684 208.813 C 206.694 209.007,207.068 208.428,207.515 207.526 C 207.963 206.623,208.266 205.821,208.188 205.743 C 208.110 205.666,207.736 206.245,207.357 207.030 M191.678 208.186 C 191.700 208.745,192.643 210.191,192.644 209.667 C 192.645 209.392,192.425 208.875,192.156 208.520 C 191.887 208.164,191.672 208.014,191.678 208.186 M206.087 210.250 C 205.319 212.400,205.002 213.587,205.034 214.190 C 205.067 214.819,205.138 214.622,205.940 211.667 C 206.114 211.025,206.365 210.237,206.497 209.917 C 206.630 209.596,206.665 209.333,206.576 209.333 C 206.487 209.333,206.267 209.746,206.087 210.250 M193.466 213.333 C 193.898 215.535,194.264 216.537,194.299 215.622 C 194.318 215.138,194.101 214.238,193.818 213.622 C 193.428 212.775,193.342 212.704,193.466 213.333 M204.561 215.461 C 204.436 215.787,204.343 216.305,204.354 216.611 C 204.368 216.979,204.484 216.895,204.697 216.362 C 204.874 215.919,204.967 215.402,204.904 215.212 C 204.841 215.022,204.686 215.134,204.561 215.461 M194.372 217.833 C 194.429 219.192,194.929 220.323,194.962 219.167 C 194.977 218.617,194.844 217.942,194.667 217.667 C 194.400 217.255,194.348 217.284,194.372 217.833 M203.914 220.111 C 203.503 221.126,203.599 222.317,204.032 221.574 C 204.222 221.248,204.328 220.648,204.269 220.240 C 204.171 219.574,204.136 219.561,203.914 220.111 M195.160 224.167 C 195.295 224.900,195.525 226.700,195.669 228.167 C 195.914 230.650,195.923 230.583,195.803 227.188 C 195.728 225.046,195.518 223.396,195.294 223.188 C 195.010 222.924,194.976 223.173,195.160 224.167 M203.433 224.667 C 203.433 225.675,203.496 226.088,203.572 225.583 C 203.648 225.079,203.648 224.254,203.572 223.750 C 203.496 223.246,203.433 223.658,203.433 224.667 M202.905 227.833 C 202.778 228.567,202.691 229.692,202.711 230.333 C 202.737 231.168,202.832 230.930,203.044 229.500 C 203.380 227.233,203.259 225.788,202.905 227.833 M196.238 234.833 C 196.338 236.850,196.475 238.563,196.543 238.639 C 196.780 238.905,196.615 234.156,196.336 232.667 C 196.149 231.665,196.116 232.384,196.238 234.833 M202.210 239.083 C 201.888 240.286,201.980 245.453,202.333 246.000 C 202.552 246.338,202.658 245.176,202.662 242.417 C 202.667 238.316,202.582 237.694,202.210 239.083 M196.372 246.856 C 196.348 247.280,195.915 247.754,195.250 248.085 C 194.637 248.390,194.404 248.633,194.713 248.645 C 195.606 248.680,196.761 247.546,196.576 246.817 C 196.420 246.203,196.409 246.205,196.372 246.856 M203.092 248.235 C 203.361 248.504,203.913 248.674,204.319 248.612 C 204.916 248.521,204.823 248.428,203.830 248.123 C 202.752 247.792,202.663 247.806,203.092 248.235 M192.167 249.000 C 191.746 249.181,191.685 249.286,192.000 249.286 C 192.275 249.286,192.800 249.158,193.167 249.000 C 193.587 248.819,193.648 248.714,193.333 248.714 C 193.058 248.714,192.533 248.842,192.167 249.000 M205.667 248.985 C 205.942 249.171,206.454 249.325,206.806 249.328 C 207.658 249.335,207.392 249.144,206.167 248.870 C 205.436 248.707,205.302 248.738,205.667 248.985 M186.586 250.763 C 185.534 251.141,184.735 251.513,184.811 251.589 C 184.941 251.719,189.002 250.395,189.306 250.124 C 189.640 249.826,188.350 250.129,186.586 250.763 M211.333 250.845 C 212.525 251.290,213.637 251.612,213.805 251.559 C 214.186 251.440,210.272 249.994,209.632 250.017 C 209.376 250.027,210.142 250.399,211.333 250.845 M180.833 252.667 C 180.720 252.850,180.299 253.017,179.897 253.039 C 179.444 253.063,179.363 253.130,179.684 253.217 C 179.968 253.294,180.718 253.132,181.351 252.858 C 182.256 252.465,182.345 252.357,181.770 252.346 C 181.368 252.339,180.947 252.483,180.833 252.667 M217.520 252.823 C 217.875 253.092,218.542 253.300,219.000 253.284 C 219.679 253.261,219.710 253.226,219.167 253.096 C 218.800 253.007,218.357 252.800,218.183 252.634 C 218.009 252.469,217.643 252.333,217.370 252.333 C 216.997 252.333,217.035 252.456,217.520 252.823 M175.167 254.408 C 173.319 255.030,172.150 255.623,172.730 255.645 C 173.040 255.657,173.387 255.517,173.500 255.333 C 173.613 255.150,173.980 255.000,174.315 255.000 C 174.650 255.000,175.428 254.781,176.045 254.513 C 177.308 253.965,176.699 253.892,175.167 254.408 M168.333 256.667 C 168.058 256.844,167.458 257.009,167.000 257.034 C 166.470 257.061,166.371 257.131,166.728 257.225 C 167.036 257.307,167.936 257.147,168.728 256.869 C 169.519 256.592,169.867 256.360,169.500 256.354 C 169.133 256.348,168.608 256.489,168.333 256.667 M230.500 256.889 C 231.417 257.172,232.489 257.555,232.884 257.740 C 233.278 257.926,233.791 258.014,234.024 257.936 C 234.481 257.784,230.133 256.320,229.324 256.354 C 229.054 256.365,229.583 256.606,230.500 256.889 M163.333 258.417 C 163.333 258.554,179.524 258.667,199.314 258.667 C 219.103 258.667,235.364 258.554,235.448 258.417 C 235.533 258.279,219.342 258.167,199.468 258.167 C 179.594 258.167,163.333 258.279,163.333 258.417 M120.168 278.293 C 119.618 278.410,121.021 278.506,123.284 278.506 C 125.547 278.506,127.047 278.407,126.616 278.286 C 125.623 278.007,121.482 278.011,120.168 278.293 M115.631 280.460 C 114.167 281.587,112.491 283.333,112.874 283.333 C 112.985 283.333,113.547 282.826,114.122 282.205 C 114.696 281.584,115.750 280.684,116.463 280.205 C 117.176 279.726,117.610 279.333,117.428 279.333 C 117.245 279.333,116.437 279.841,115.631 280.460 M130.960 280.667 C 131.888 281.400,132.737 282.000,132.847 282.000 C 133.124 282.000,132.390 281.311,130.969 280.238 C 129.088 278.818,129.081 279.181,130.960 280.667 M134.677 284.876 C 134.699 285.467,135.667 286.506,135.667 285.938 C 135.667 285.650,135.442 285.228,135.167 285.000 C 134.892 284.772,134.671 284.716,134.677 284.876 M111.339 285.656 C 111.129 286.048,111.025 286.623,111.107 286.934 C 111.224 287.378,111.264 287.353,111.295 286.817 C 111.316 286.441,111.511 285.956,111.728 285.739 C 111.945 285.522,112.032 285.254,111.921 285.144 C 111.811 285.033,111.549 285.264,111.339 285.656 M135.902 288.351 C 136.006 289.166,136.146 289.896,136.213 289.972 C 136.484 290.285,136.300 287.796,136.018 287.351 C 135.820 287.038,135.779 287.391,135.902 288.351 M110.338 289.083 C 110.342 289.905,110.421 290.046,110.667 289.667 C 111.090 289.012,111.090 288.000,110.667 288.000 C 110.483 288.000,110.336 288.487,110.338 289.083 M110.333 292.461 C 110.333 292.919,110.483 293.387,110.667 293.500 C 110.855 293.616,111.000 293.343,111.000 292.873 C 111.000 292.414,110.850 291.947,110.667 291.833 C 110.478 291.717,110.333 291.990,110.333 292.461 M136.049 292.333 C 136.017 292.792,135.908 293.542,135.806 294.000 C 135.646 294.718,135.673 294.752,135.998 294.243 C 136.205 293.918,136.314 293.168,136.241 292.576 C 136.136 291.739,136.094 291.685,136.049 292.333 M111.039 294.853 C 111.017 295.230,111.220 295.830,111.489 296.186 C 111.759 296.542,111.984 296.676,111.989 296.483 C 111.995 296.291,111.865 295.991,111.699 295.817 C 111.533 295.642,111.326 295.200,111.238 294.833 C 111.081 294.183,111.076 294.183,111.039 294.853 M135.372 295.583 C 135.351 295.996,135.183 296.333,135.000 296.333 C 134.817 296.333,134.667 296.515,134.667 296.738 C 134.667 297.002,134.851 296.958,135.199 296.611 C 135.491 296.318,135.659 295.799,135.571 295.456 C 135.438 294.939,135.404 294.960,135.372 295.583 M369.497 295.750 C 369.397 296.162,369.358 303.175,369.411 311.333 L 369.507 326.167 369.587 310.983 C 369.646 299.710,369.770 295.697,370.067 295.400 C 370.371 295.096,370.372 295.000,370.073 295.000 C 369.857 295.000,369.597 295.337,369.497 295.750 M112.471 297.833 C 113.121 299.189,114.957 301.002,116.625 301.938 C 118.457 302.966,118.396 302.629,116.555 301.550 C 115.214 300.764,113.408 298.987,112.412 297.474 C 112.180 297.121,112.207 297.283,112.471 297.833 M134.332 297.583 C 134.331 297.721,133.873 298.321,133.315 298.917 C 132.756 299.512,132.415 300.000,132.556 300.000 C 132.698 300.000,133.230 299.512,133.739 298.917 C 134.610 297.898,134.881 297.333,134.500 297.333 C 134.408 297.333,134.333 297.446,134.332 297.583 M129.917 301.857 C 128.671 302.533,128.746 302.815,130.000 302.167 C 130.550 301.882,131.000 301.578,131.000 301.491 C 131.000 301.277,130.964 301.289,129.917 301.857 M119.102 303.200 C 119.616 303.479,120.441 303.646,120.935 303.570 C 121.764 303.444,121.751 303.429,120.770 303.383 C 120.185 303.356,119.613 303.183,119.500 303.000 C 119.387 302.817,119.040 302.673,118.730 302.680 C 118.353 302.689,118.476 302.861,119.102 303.200 M127.549 302.895 C 127.424 303.021,126.686 303.227,125.910 303.353 C 124.697 303.551,124.646 303.589,125.545 303.625 C 126.120 303.648,127.095 303.448,127.712 303.180 C 128.329 302.912,128.596 302.687,128.306 302.680 C 128.015 302.673,127.675 302.769,127.549 302.895 M197.167 324.667 C 196.556 324.929,196.570 324.955,197.333 324.971 C 197.792 324.982,198.392 324.844,198.667 324.667 C 199.323 324.243,198.153 324.243,197.167 324.667 M207.167 324.667 C 207.717 324.807,208.467 324.928,208.833 324.937 L 209.500 324.953 208.833 324.667 C 208.467 324.509,207.717 324.387,207.167 324.396 L 206.167 324.412 207.167 324.667 M293.333 324.667 C 292.523 324.926,292.528 324.934,293.500 324.934 C 294.050 324.934,294.875 324.813,295.333 324.667 C 296.144 324.407,296.139 324.400,295.167 324.400 C 294.617 324.400,293.792 324.520,293.333 324.667 M305.500 324.667 C 306.997 325.048,308.387 325.048,307.500 324.667 C 307.133 324.509,306.308 324.387,305.667 324.396 L 304.500 324.412 305.500 324.667 M193.500 325.519 C 192.654 325.932,192.628 325.977,193.333 325.808 C 193.792 325.698,194.692 325.489,195.333 325.343 C 196.486 325.080,196.488 325.076,195.500 325.053 C 194.950 325.041,194.050 325.250,193.500 325.519 M210.667 325.354 C 213.407 326.004,213.946 326.051,212.667 325.528 C 212.025 325.265,211.050 325.057,210.500 325.064 C 209.514 325.076,209.516 325.081,210.667 325.354 M288.833 325.535 L 287.500 326.000 288.667 325.820 C 289.308 325.721,290.433 325.515,291.167 325.362 L 292.500 325.083 291.333 325.077 C 290.692 325.073,289.567 325.279,288.833 325.535 M309.667 325.334 C 312.543 325.969,313.297 326.034,311.833 325.520 C 311.100 325.262,310.050 325.057,309.500 325.064 C 308.523 325.076,308.527 325.083,309.667 325.334 M365.078 326.582 L 360.989 326.687 361.078 335.927 L 361.167 345.167 364.500 345.249 C 366.333 345.295,368.170 345.410,368.582 345.505 L 369.330 345.679 369.417 378.923 L 369.503 412.167 369.585 378.786 C 369.659 348.606,369.616 345.385,369.139 345.202 C 368.849 345.091,366.974 345.000,364.973 345.000 L 361.333 345.000 361.333 336.000 L 361.333 327.000 365.083 326.995 C 367.146 326.992,369.058 326.844,369.333 326.667 C 369.608 326.489,369.683 326.374,369.500 326.411 C 369.317 326.447,367.327 326.525,365.078 326.582 M389.551 326.750 C 389.636 326.887,391.797 327.000,394.353 327.000 L 399.000 327.000 399.000 335.473 C 399.000 346.087,399.553 345.000,394.151 345.000 C 391.706 345.000,389.636 345.113,389.551 345.250 C 389.465 345.387,391.551 345.455,394.186 345.400 L 398.976 345.299 399.168 344.233 C 399.274 343.647,399.317 339.492,399.264 335.000 L 399.167 326.833 394.281 326.667 C 391.594 326.575,389.465 326.612,389.551 326.750 M113.489 327.078 C 113.401 327.310,113.368 346.625,113.416 370.000 L 113.503 412.500 113.585 369.750 L 113.667 327.000 123.333 327.000 L 133.000 327.000 133.000 369.828 L 133.000 412.657 123.333 412.753 L 113.666 412.849 123.417 412.841 L 133.167 412.833 133.167 369.833 L 133.167 326.833 123.408 326.745 C 115.781 326.676,113.615 326.749,113.489 327.078 M158.894 326.884 C 158.343 327.435,158.640 412.585,159.194 412.798 C 159.882 413.062,177.785 413.062,178.473 412.798 C 178.946 412.616,179.000 410.262,179.000 389.611 C 179.000 374.374,178.888 366.697,178.667 366.833 C 178.450 366.967,178.333 375.003,178.333 389.853 L 178.333 412.667 168.833 412.667 L 159.333 412.667 159.333 369.833 L 159.333 327.000 168.822 327.000 L 178.310 327.000 178.405 330.413 C 178.487 333.341,178.582 333.841,179.078 333.936 C 179.640 334.044,182.315 332.096,182.327 331.570 C 182.334 331.296,181.857 331.647,180.499 332.917 C 179.184 334.146,179.029 333.882,178.928 330.250 L 178.833 326.833 168.977 326.745 C 163.556 326.697,159.019 326.759,158.894 326.884 M283.000 327.224 C 281.871 327.610,278.321 329.432,278.449 329.560 C 278.524 329.635,279.467 329.265,280.543 328.737 C 281.619 328.209,282.875 327.613,283.333 327.411 C 284.173 327.042,283.930 326.906,283.000 327.224 M187.068 328.067 C 186.463 328.441,186.039 328.817,186.125 328.903 C 186.211 328.989,186.853 328.671,187.551 328.196 C 189.045 327.182,188.665 327.081,187.068 328.067 M217.361 327.440 C 218.081 327.991,220.000 328.920,220.000 328.717 C 220.000 328.574,219.470 328.204,218.822 327.895 C 217.776 327.396,216.981 327.148,217.361 327.440 M318.667 327.900 C 319.308 328.203,320.396 328.728,321.083 329.066 C 321.771 329.404,322.333 329.527,322.333 329.340 C 322.333 329.153,322.183 329.000,321.998 329.000 C 321.814 329.000,320.886 328.625,319.936 328.167 C 318.986 327.708,318.049 327.337,317.854 327.341 C 317.659 327.345,318.025 327.597,318.667 327.900 M41.833 327.976 C 40.550 328.081,42.875 328.167,47.000 328.167 C 51.395 328.167,53.465 328.081,52.000 327.960 C 48.980 327.711,44.991 327.717,41.833 327.976 M36.833 328.667 L 36.167 328.953 36.833 328.971 C 37.200 328.982,37.725 328.844,38.000 328.667 C 38.663 328.238,37.830 328.238,36.833 328.667 M55.667 328.667 C 56.951 329.078,57.637 329.078,57.000 328.667 C 56.725 328.489,56.125 328.356,55.667 328.372 L 54.833 328.400 55.667 328.667 M34.000 329.333 C 33.337 329.762,34.170 329.762,35.167 329.333 L 35.833 329.047 35.167 329.029 C 34.800 329.018,34.275 329.156,34.000 329.333 M58.028 329.120 C 58.420 329.458,60.036 329.660,59.842 329.347 C 59.724 329.156,59.236 329.000,58.758 329.000 C 58.280 329.000,57.951 329.054,58.028 329.120 M184.756 329.451 C 184.347 329.653,183.936 330.019,183.842 330.264 C 183.743 330.522,184.090 330.410,184.669 329.998 C 185.450 329.443,186.054 328.810,185.583 329.041 C 185.537 329.063,185.165 329.248,184.756 329.451 M31.167 330.179 C 29.821 330.795,30.626 330.796,32.045 330.180 C 32.662 329.912,32.942 329.699,32.667 329.707 C 32.392 329.715,31.717 329.927,31.167 330.179 M61.788 330.169 C 62.313 330.443,62.913 330.661,63.121 330.655 C 63.667 330.638,61.931 329.692,61.333 329.681 C 61.058 329.675,61.263 329.895,61.788 330.169 M222.000 330.375 C 222.458 330.752,223.321 331.501,223.917 332.038 C 224.512 332.576,225.000 332.912,225.000 332.786 C 225.000 332.443,221.887 329.689,221.500 329.689 C 221.317 329.689,221.542 329.997,222.000 330.375 M323.333 330.167 C 323.562 330.442,323.898 330.667,324.082 330.667 C 324.268 330.667,324.231 330.446,324.000 330.167 C 323.772 329.892,323.435 329.667,323.252 329.667 C 323.066 329.667,323.102 329.888,323.333 330.167 M0.878 330.745 C 0.571 331.890,0.637 448.104,0.945 448.589 C 1.153 448.916,3.330 448.991,10.690 448.922 L 20.167 448.833 20.253 430.417 L 20.339 412.000 21.103 412.000 C 21.523 412.000,22.047 412.180,22.267 412.400 C 22.538 412.672,22.667 412.682,22.667 412.433 C 22.667 412.001,20.726 411.257,20.295 411.524 C 20.130 411.626,20.000 419.825,20.000 430.186 L 20.000 448.667 10.667 448.667 L 1.333 448.667 1.333 389.500 L 1.333 330.333 10.667 330.333 L 20.000 330.333 20.000 332.833 C 20.000 334.208,20.112 335.334,20.250 335.334 C 20.387 335.334,20.425 334.172,20.333 332.751 L 20.167 330.167 10.624 330.078 L 1.080 329.990 0.878 330.745 M26.853 331.844 C 26.397 332.189,26.348 332.330,26.686 332.323 C 26.950 332.317,27.458 332.092,27.814 331.823 C 28.270 331.478,28.319 331.336,27.980 331.344 C 27.716 331.350,27.209 331.575,26.853 331.844 M66.147 331.844 C 66.503 332.113,66.944 332.333,67.127 332.333 C 67.311 332.333,67.170 332.113,66.814 331.844 C 66.458 331.575,66.017 331.355,65.833 331.355 C 65.650 331.355,65.791 331.575,66.147 331.844 M326.487 332.164 C 327.030 332.608,327.555 332.882,327.654 332.773 C 327.752 332.664,327.643 332.508,327.411 332.425 C 327.178 332.342,326.776 332.062,326.518 331.804 C 326.259 331.545,325.924 331.339,325.774 331.345 C 325.623 331.352,325.944 331.720,326.487 332.164 M69.000 333.134 C 69.000 333.307,71.302 334.667,71.596 334.667 C 71.720 334.667,71.270 334.292,70.595 333.833 C 69.414 333.031,69.000 332.849,69.000 333.134 M272.285 333.229 C 272.220 333.378,271.430 334.092,270.529 334.817 C 268.479 336.465,264.489 340.507,263.602 341.833 C 263.182 342.462,263.449 342.276,264.320 341.333 C 266.637 338.828,270.132 335.333,270.321 335.333 C 270.710 335.331,272.793 333.348,272.604 333.160 C 272.493 333.049,272.350 333.080,272.285 333.229 M329.308 334.208 C 331.516 336.143,335.736 340.365,336.586 341.489 C 336.997 342.033,337.333 342.355,337.333 342.204 C 337.333 342.053,336.973 341.501,336.532 340.977 C 336.091 340.453,335.679 339.907,335.615 339.762 C 335.419 339.315,330.031 334.398,328.902 333.637 C 328.207 333.168,328.349 333.368,329.308 334.208 M226.513 334.910 C 227.056 335.685,227.623 336.322,227.773 336.326 C 228.117 336.335,226.892 334.597,226.112 333.970 C 225.790 333.712,225.971 334.134,226.513 334.910 M72.694 335.441 C 72.771 335.501,73.358 335.888,74.000 336.302 L 75.167 337.055 74.167 336.196 C 73.617 335.723,73.029 335.336,72.861 335.335 C 72.693 335.334,72.618 335.382,72.694 335.441 M228.000 336.799 C 228.000 336.872,228.373 337.585,228.829 338.383 C 229.825 340.125,229.941 339.845,228.993 337.987 C 228.410 336.843,228.000 336.353,228.000 336.799 M75.333 337.489 C 75.333 337.575,75.697 337.838,76.141 338.073 C 76.585 338.308,77.733 339.245,78.692 340.155 C 79.652 341.065,80.376 341.652,80.302 341.459 C 79.952 340.549,75.333 336.859,75.333 337.489 M230.361 341.667 C 230.364 342.283,231.269 344.314,231.306 343.788 C 231.321 343.580,231.114 342.905,230.846 342.288 C 230.579 341.671,230.360 341.392,230.361 341.667 M80.667 341.910 C 80.667 342.074,81.004 342.565,81.417 343.001 C 81.829 343.437,82.504 344.245,82.917 344.795 C 83.329 345.346,83.667 345.646,83.667 345.462 C 83.667 345.277,82.992 344.336,82.167 343.370 C 81.342 342.403,80.667 341.746,80.667 341.910 M294.000 342.667 C 293.556 342.954,293.556 342.990,294.000 342.990 C 294.275 342.990,294.725 342.844,295.000 342.667 C 295.444 342.379,295.444 342.344,295.000 342.344 C 294.725 342.344,294.275 342.489,294.000 342.667 M305.028 342.453 C 305.420 342.792,307.036 342.994,306.842 342.680 C 306.724 342.489,306.236 342.333,305.758 342.333 C 305.280 342.333,304.951 342.387,305.028 342.453 M337.704 342.503 C 338.065 343.443,339.868 346.333,340.094 346.333 C 340.237 346.333,339.806 345.471,339.137 344.417 C 337.899 342.468,337.472 341.898,337.704 342.503 M188.219 343.705 C 187.514 344.077,187.023 344.467,187.127 344.572 C 187.232 344.676,187.544 344.573,187.822 344.343 C 188.100 344.112,188.891 343.722,189.580 343.476 C 190.285 343.225,190.542 343.029,190.167 343.029 C 189.800 343.029,188.923 343.334,188.219 343.705 M204.622 343.513 C 205.238 343.781,205.838 343.995,205.955 343.988 C 206.389 343.964,204.480 343.024,204.000 343.025 C 203.725 343.026,204.005 343.245,204.622 343.513 M262.000 344.000 C 261.608 344.550,261.363 345.000,261.455 345.000 C 261.546 345.000,261.942 344.550,262.333 344.000 C 262.725 343.450,262.970 343.000,262.879 343.000 C 262.787 343.000,262.392 343.450,262.000 344.000 M309.226 343.609 C 310.175 343.919,311.062 344.284,311.198 344.420 C 311.544 344.766,312.078 344.729,311.858 344.373 C 311.652 344.040,308.602 342.989,307.937 343.022 C 307.697 343.034,308.276 343.298,309.226 343.609 M289.480 344.156 C 288.639 344.793,289.003 344.799,290.212 344.169 C 290.737 343.895,290.933 343.670,290.647 343.669 C 290.361 343.668,289.836 343.887,289.480 344.156 M207.759 345.364 C 208.635 346.172,209.717 347.433,210.165 348.167 C 210.613 348.900,210.984 349.385,210.990 349.243 C 211.009 348.765,209.414 346.505,208.454 345.650 C 206.722 344.107,206.134 343.866,207.759 345.364 M231.552 345.833 C 231.664 346.567,231.810 347.229,231.878 347.306 C 232.130 347.592,231.941 345.807,231.651 345.167 C 231.441 344.702,231.411 344.904,231.552 345.833 M286.107 346.008 C 285.009 346.745,283.673 347.827,283.138 348.412 C 282.300 349.330,282.364 349.304,283.601 348.223 C 284.390 347.533,285.403 346.802,285.851 346.598 C 286.300 346.394,286.667 346.100,286.667 345.946 C 286.667 345.793,286.854 345.662,287.083 345.656 C 287.589 345.643,288.937 344.667,288.449 344.667 C 288.259 344.667,287.206 345.270,286.107 346.008 M46.083 345.572 C 46.587 345.648,47.413 345.648,47.917 345.572 C 48.421 345.496,48.008 345.433,47.000 345.433 C 45.992 345.433,45.579 345.496,46.083 345.572 M41.833 346.000 L 41.167 346.286 41.833 346.291 C 42.200 346.293,43.100 346.171,43.833 346.019 L 45.167 345.743 43.833 345.728 C 43.100 345.720,42.200 345.842,41.833 346.000 M50.167 346.019 C 50.900 346.171,51.800 346.293,52.167 346.291 L 52.833 346.286 52.167 346.000 C 51.800 345.842,50.900 345.720,50.167 345.728 L 48.833 345.743 50.167 346.019 M38.500 346.667 C 38.080 346.847,38.018 346.953,38.333 346.953 C 38.608 346.953,39.133 346.824,39.500 346.667 C 39.920 346.486,39.982 346.380,39.667 346.380 C 39.392 346.380,38.867 346.509,38.500 346.667 M84.650 347.059 C 85.022 347.458,85.413 348.058,85.519 348.392 C 85.625 348.726,85.854 349.000,86.027 349.000 C 86.201 349.000,85.946 348.400,85.460 347.667 C 84.975 346.933,84.442 346.333,84.276 346.333 C 84.110 346.333,84.278 346.660,84.650 347.059 M259.722 347.556 C 259.299 348.202,259.019 348.797,259.101 348.879 C 259.184 348.961,259.575 348.478,259.972 347.806 C 260.908 346.219,260.721 346.032,259.722 347.556 M183.458 347.583 C 182.597 348.766,182.120 349.703,182.822 348.833 C 183.118 348.467,183.653 347.829,184.011 347.417 C 184.369 347.004,184.541 346.667,184.394 346.667 C 184.246 346.667,183.825 347.079,183.458 347.583 M34.581 348.305 C 33.248 349.159,33.002 349.505,34.167 348.888 C 35.563 348.147,36.226 347.673,35.833 347.696 C 35.650 347.707,35.086 347.981,34.581 348.305 M58.455 348.169 C 59.670 348.803,59.979 348.807,59.147 348.177 C 58.791 347.908,58.275 347.684,58.000 347.679 C 57.725 347.675,57.930 347.895,58.455 348.169 M341.000 347.873 C 341.000 348.056,341.220 348.497,341.489 348.853 C 341.759 349.209,341.979 349.350,341.979 349.167 C 341.979 348.983,341.759 348.542,341.489 348.186 C 341.220 347.830,341.000 347.689,341.000 347.873 M232.066 348.667 C 232.066 349.125,232.187 349.875,232.333 350.333 L 232.600 351.167 232.600 350.333 C 232.600 349.875,232.480 349.125,232.333 348.667 L 232.066 347.833 232.066 348.667 M31.750 349.910 C 31.337 350.188,31.000 350.557,31.000 350.731 C 31.000 350.905,31.222 350.825,31.494 350.554 C 31.766 350.282,32.178 349.992,32.411 349.909 C 32.643 349.826,32.758 349.679,32.667 349.582 C 32.575 349.485,32.162 349.633,31.750 349.910 M61.500 349.833 C 61.867 350.095,62.354 350.472,62.583 350.668 C 62.813 350.865,63.000 350.888,63.000 350.718 C 63.000 350.388,61.529 349.326,61.095 349.344 C 60.951 349.350,61.133 349.570,61.500 349.833 M86.333 349.481 C 86.333 349.810,87.759 352.018,87.888 351.890 C 87.965 351.813,87.706 351.207,87.314 350.542 C 86.666 349.444,86.333 349.084,86.333 349.481 M258.210 350.455 C 257.440 352.079,257.559 352.436,258.345 350.860 C 258.704 350.141,258.943 349.498,258.876 349.431 C 258.809 349.364,258.509 349.825,258.210 350.455 M181.714 350.381 C 181.479 350.757,181.360 351.138,181.450 351.228 C 181.539 351.317,181.787 351.065,182.000 350.667 C 182.504 349.725,182.270 349.491,181.714 350.381 M211.203 350.500 C 211.478 351.726,211.668 351.992,211.662 351.139 C 211.659 350.787,211.504 350.275,211.318 350.000 C 211.071 349.635,211.040 349.770,211.203 350.500 M279.999 351.750 C 279.508 352.420,279.428 352.653,279.788 352.361 C 280.334 351.917,281.161 350.667,280.908 350.667 C 280.844 350.667,280.435 351.154,279.999 351.750 M342.677 351.421 C 342.671 351.561,342.804 351.936,342.972 352.255 C 343.140 352.573,343.460 353.326,343.684 353.927 C 343.907 354.529,344.138 354.973,344.197 354.915 C 344.255 354.856,344.120 354.289,343.895 353.654 C 343.452 352.402,342.693 351.011,342.677 351.421 M211.690 352.230 C 211.765 353.096,212.287 353.830,212.310 353.103 C 212.323 352.701,212.183 352.280,212.000 352.167 C 211.817 352.053,211.677 352.082,211.690 352.230 M88.021 352.500 C 88.021 352.683,88.241 353.125,88.511 353.480 C 88.780 353.836,89.000 353.977,89.000 353.794 C 89.000 353.611,88.780 353.170,88.511 352.814 C 88.241 352.458,88.021 352.317,88.021 352.500 M257.037 353.370 C 256.793 353.921,256.665 354.443,256.752 354.530 C 256.839 354.617,257.101 354.228,257.333 353.667 C 257.885 352.334,257.615 352.064,257.037 353.370 M232.748 382.578 L 232.667 412.657 222.917 412.750 L 213.167 412.844 222.927 412.922 C 230.487 412.982,232.723 412.906,232.846 412.583 C 232.934 412.354,232.966 398.742,232.918 382.333 L 232.830 352.500 232.748 382.578 M67.172 355.333 C 68.833 357.725,69.664 358.577,68.496 356.690 C 67.994 355.878,67.204 354.828,66.741 354.357 C 66.200 353.806,66.354 354.156,67.172 355.333 M180.039 355.215 C 179.789 355.971,179.667 356.794,179.766 357.045 C 179.866 357.295,179.959 357.117,179.974 356.650 C 179.988 356.183,180.164 355.636,180.365 355.435 C 180.565 355.235,180.676 354.794,180.611 354.456 C 180.532 354.048,180.340 354.304,180.039 355.215 M322.333 354.524 C 322.333 354.629,322.558 354.939,322.833 355.214 C 323.376 355.757,323.444 355.676,323.131 354.861 C 322.941 354.365,322.333 354.109,322.333 354.524 M212.380 355.667 C 212.380 356.125,212.509 356.800,212.667 357.167 C 212.928 357.774,212.953 357.760,212.953 357.000 C 212.953 356.542,212.824 355.867,212.667 355.500 C 212.406 354.892,212.380 354.907,212.380 355.667 M256.372 355.223 C 256.351 355.437,256.236 355.887,256.118 356.223 C 255.950 356.696,255.995 356.748,256.316 356.452 C 256.543 356.242,256.658 355.792,256.570 355.452 C 256.482 355.112,256.393 355.009,256.372 355.223 M277.360 355.950 C 277.162 356.320,277.001 356.820,277.002 357.061 C 277.003 357.303,277.231 357.065,277.508 356.534 C 277.785 356.002,277.946 355.502,277.866 355.422 C 277.786 355.342,277.559 355.579,277.360 355.950 M25.353 356.875 C 24.960 357.540,24.694 358.138,24.761 358.205 C 24.827 358.271,25.218 357.728,25.629 356.996 C 26.562 355.335,26.323 355.231,25.353 356.875 M255.537 358.000 C 255.255 359.400,254.964 361.782,255.191 360.833 C 255.278 360.467,255.515 359.622,255.716 358.955 C 255.917 358.289,256.012 357.539,255.927 357.289 C 255.842 357.038,255.666 357.358,255.537 358.000 M90.351 357.833 C 90.347 358.017,90.560 358.767,90.824 359.500 C 91.088 360.233,91.311 360.588,91.319 360.288 C 91.327 359.988,91.114 359.238,90.846 358.622 C 90.579 358.005,90.356 357.650,90.351 357.833 M213.159 385.167 C 213.159 400.200,213.200 406.301,213.250 398.725 C 213.300 391.149,213.300 378.849,213.250 371.392 C 213.200 363.935,213.159 370.133,213.159 385.167 M345.177 359.000 C 345.622 361.835,345.914 362.900,345.953 361.833 C 345.973 361.283,345.766 360.158,345.492 359.333 C 345.062 358.039,345.019 357.993,345.177 359.000 M179.228 359.127 C 179.103 359.454,179.015 360.196,179.033 360.777 C 179.066 361.806,179.075 361.799,179.374 360.522 C 179.704 359.114,179.603 358.149,179.228 359.127 M275.704 360.244 C 275.470 360.808,275.346 361.622,275.427 362.052 C 275.549 362.694,275.584 362.653,275.621 361.817 C 275.646 361.257,275.834 360.633,276.037 360.429 C 276.241 360.225,276.345 359.869,276.268 359.638 C 276.191 359.408,275.937 359.680,275.704 360.244 M23.404 360.344 C 23.182 360.700,23.001 361.180,23.002 361.412 C 23.003 361.644,23.231 361.399,23.508 360.867 C 24.086 359.759,24.009 359.375,23.404 360.344 M324.877 360.333 C 325.008 360.792,325.222 361.692,325.353 362.333 L 325.590 363.500 325.617 362.333 C 325.631 361.692,325.417 360.792,325.141 360.333 L 324.639 359.500 324.877 360.333 M70.011 360.183 C 70.005 360.376,70.135 360.676,70.301 360.850 C 70.467 361.024,70.674 361.467,70.762 361.833 C 70.919 362.484,70.924 362.483,70.961 361.814 C 70.983 361.436,70.780 360.836,70.511 360.480 C 70.241 360.125,70.016 359.991,70.011 360.183 M91.344 361.333 C 91.344 361.608,91.489 362.058,91.667 362.333 C 91.954 362.778,91.990 362.778,91.990 362.333 C 91.990 362.058,91.844 361.608,91.667 361.333 C 91.379 360.889,91.344 360.889,91.344 361.333 M22.479 362.917 C 22.369 363.421,22.121 364.251,21.928 364.761 C 21.735 365.271,21.657 365.768,21.755 365.866 C 21.853 365.964,22.085 365.547,22.270 364.939 C 22.787 363.240,23.030 362.000,22.846 362.000 C 22.754 362.000,22.589 362.412,22.479 362.917 M254.545 363.880 C 254.282 365.802,254.338 374.153,254.623 375.479 C 254.739 376.017,254.833 373.279,254.833 369.395 C 254.833 361.566,254.841 361.720,254.545 363.880 M274.880 363.737 C 274.768 364.157,274.695 365.400,274.718 366.500 C 274.759 368.478,274.763 368.471,275.015 365.833 C 275.278 363.081,275.235 362.412,274.880 363.737 M92.078 364.167 C 92.078 364.717,92.193 365.617,92.333 366.167 C 92.686 367.553,92.702 366.189,92.352 364.500 C 92.121 363.379,92.077 363.326,92.078 364.167 M346.063 365.167 C 346.054 366.267,346.176 367.467,346.333 367.833 C 346.702 368.692,346.702 365.616,346.333 364.167 C 346.131 363.371,346.076 363.576,346.063 365.167 M325.833 370.001 C 325.833 373.449,325.944 376.097,326.078 375.885 C 326.213 375.673,326.323 373.025,326.323 370.000 C 326.323 366.975,326.213 364.327,326.078 364.116 C 325.944 363.904,325.833 366.553,325.833 370.001 M71.723 365.167 C 71.718 365.533,71.842 366.133,72.000 366.500 C 72.365 367.349,72.365 366.473,72.000 365.333 C 71.785 364.663,71.731 364.631,71.723 365.167 M21.176 369.393 C 21.040 370.435,21.000 371.485,21.087 371.727 C 21.173 371.969,21.355 371.315,21.491 370.273 C 21.627 369.232,21.667 368.182,21.580 367.940 C 21.493 367.698,21.311 368.352,21.176 369.393 M92.797 373.333 C 92.797 375.808,92.850 376.821,92.914 375.583 C 92.978 374.346,92.978 372.321,92.914 371.083 C 92.850 369.846,92.797 370.858,92.797 373.333 M72.362 373.500 C 72.374 376.041,72.485 377.257,72.667 376.833 C 73.063 375.912,73.063 370.613,72.667 370.000 C 72.449 369.663,72.350 370.802,72.362 373.500 M274.690 373.194 C 274.703 374.462,274.836 375.800,274.986 376.167 C 275.141 376.545,275.184 375.606,275.085 374.000 C 274.870 370.517,274.658 370.085,274.690 373.194 M346.250 372.111 C 346.113 372.446,346.015 373.571,346.033 374.611 L 346.067 376.500 346.380 375.167 C 346.752 373.587,346.647 371.140,346.250 372.111 M21.043 375.667 C 21.040 376.308,21.163 377.433,21.314 378.167 C 21.590 379.499,21.590 379.498,21.605 377.667 C 21.613 376.658,21.491 375.533,21.333 375.167 C 21.101 374.625,21.046 374.719,21.043 375.667 M325.274 378.000 C 325.154 378.642,324.959 379.467,324.840 379.833 C 324.722 380.200,324.868 380.079,325.166 379.565 C 325.464 379.050,325.659 378.225,325.599 377.731 C 325.500 376.903,325.474 376.924,325.274 378.000 M275.367 377.878 C 275.349 378.270,275.567 379.095,275.852 379.712 C 276.364 380.821,276.337 380.581,275.675 378.167 C 275.469 377.412,275.393 377.341,275.367 377.878 M345.598 378.500 C 345.482 379.233,345.294 380.283,345.181 380.833 C 345.055 381.447,345.181 381.277,345.508 380.395 C 345.801 379.603,345.988 378.553,345.925 378.061 C 345.829 377.313,345.775 377.384,345.598 378.500 M255.156 378.667 C 255.224 379.308,255.438 380.358,255.631 381.000 C 256.081 382.496,255.887 380.921,255.364 378.833 C 255.044 377.555,255.036 377.548,255.156 378.667 M72.050 380.056 C 72.022 380.545,71.914 381.220,71.808 381.556 C 71.627 382.133,71.637 382.134,71.996 381.575 C 72.205 381.249,72.314 380.574,72.238 380.075 L 72.100 379.167 72.050 380.056 M92.235 380.625 C 92.106 381.244,92.016 382.144,92.037 382.625 C 92.061 383.202,92.175 382.989,92.372 382.000 C 92.537 381.175,92.627 380.275,92.571 380.000 C 92.516 379.725,92.365 380.006,92.235 380.625 M21.695 380.833 C 21.685 381.200,21.822 381.725,22.000 382.000 C 22.428 382.663,22.428 381.830,22.000 380.833 L 21.714 380.167 21.695 380.833 M324.167 381.667 C 324.042 382.061,324.014 382.459,324.106 382.550 C 324.197 382.642,324.375 382.394,324.500 382.000 C 324.625 381.606,324.653 381.208,324.561 381.116 C 324.469 381.025,324.292 381.272,324.167 381.667 M22.338 383.194 C 22.341 383.546,22.496 384.058,22.682 384.333 C 22.929 384.698,22.960 384.564,22.797 383.833 C 22.522 382.608,22.332 382.342,22.338 383.194 M277.024 382.833 C 277.024 383.017,277.238 383.542,277.500 384.000 C 277.762 384.458,277.976 384.683,277.976 384.500 C 277.976 384.317,277.762 383.792,277.500 383.333 C 277.238 382.875,277.024 382.650,277.024 382.833 M322.854 384.688 C 322.374 385.643,322.038 386.482,322.107 386.552 C 322.176 386.621,322.634 385.904,323.125 384.958 C 323.616 384.013,323.952 383.174,323.872 383.094 C 323.792 383.015,323.334 383.732,322.854 384.688 M70.418 385.714 C 70.194 386.305,70.080 386.858,70.163 386.941 C 70.362 387.140,71.051 385.320,70.923 384.935 C 70.868 384.772,70.641 385.122,70.418 385.714 M256.669 385.064 C 256.668 385.374,256.817 385.720,257.000 385.833 C 257.183 385.947,257.333 386.243,257.333 386.492 C 257.333 387.121,258.648 390.130,258.839 389.938 C 258.925 389.853,258.696 389.164,258.331 388.407 C 257.966 387.651,257.667 386.892,257.667 386.721 C 257.667 386.550,257.443 385.980,257.169 385.455 C 256.854 384.851,256.670 384.707,256.669 385.064 M23.024 385.500 C 23.022 385.867,23.241 386.458,23.511 386.814 C 24.130 387.633,24.131 387.378,23.513 385.955 C 23.176 385.178,23.025 385.038,23.024 385.500 M90.916 386.833 C 90.788 387.383,90.596 388.208,90.490 388.667 C 90.361 389.224,90.473 389.117,90.829 388.345 C 91.122 387.710,91.314 386.885,91.256 386.512 C 91.174 385.984,91.098 386.056,90.916 386.833 M343.087 387.237 C 342.860 387.721,342.735 388.179,342.810 388.254 C 343.010 388.455,343.728 387.015,343.605 386.659 C 343.547 386.492,343.314 386.752,343.087 387.237 M279.999 388.250 C 280.435 388.846,280.844 389.333,280.908 389.333 C 281.161 389.333,280.334 388.083,279.788 387.639 C 279.428 387.347,279.508 387.580,279.999 388.250 M320.667 388.167 C 320.236 388.625,320.005 389.000,320.153 389.000 C 320.403 389.000,321.667 387.706,321.667 387.449 C 321.667 387.191,321.411 387.374,320.667 388.167 M24.667 388.873 C 24.667 389.056,24.887 389.497,25.156 389.853 C 25.425 390.209,25.645 390.350,25.645 390.167 C 25.645 389.983,25.425 389.542,25.156 389.186 C 24.887 388.830,24.667 388.689,24.667 388.873 M68.694 389.283 C 68.149 390.300,68.262 390.584,68.867 389.719 C 69.161 389.300,69.323 388.879,69.228 388.783 C 69.132 388.688,68.892 388.913,68.694 389.283 M259.000 390.413 C 259.000 390.761,260.450 393.327,260.576 393.202 C 260.644 393.134,260.376 392.498,259.981 391.789 C 259.209 390.406,259.000 390.112,259.000 390.413 M317.000 392.020 C 316.175 392.753,314.773 393.734,313.884 394.199 C 312.994 394.664,312.334 395.112,312.416 395.194 C 312.608 395.386,315.304 393.882,316.169 393.100 C 316.535 392.769,317.332 392.087,317.942 391.583 C 318.552 391.079,318.927 390.671,318.776 390.677 C 318.624 390.682,317.825 391.286,317.000 392.020 M65.833 393.199 C 63.656 395.608,63.666 395.593,64.865 394.647 C 65.733 393.963,67.934 391.310,67.605 391.344 C 67.547 391.350,66.750 392.185,65.833 393.199 M88.964 392.475 C 88.727 393.130,88.413 393.667,88.266 393.667 C 88.120 393.667,88.000 393.826,88.000 394.020 C 88.000 394.214,88.146 394.282,88.324 394.172 C 88.774 393.894,89.794 391.683,89.574 391.463 C 89.475 391.364,89.201 391.820,88.964 392.475 M283.060 391.750 C 284.597 393.204,288.283 395.495,288.590 395.187 C 288.689 395.089,288.244 394.789,287.603 394.521 C 286.961 394.253,285.668 393.426,284.728 392.684 C 283.116 391.410,282.097 390.839,283.060 391.750 M26.740 392.327 C 26.967 392.690,27.348 393.062,27.587 393.154 C 27.861 393.259,27.802 393.019,27.427 392.504 C 26.718 391.529,26.150 391.383,26.740 392.327 M261.683 395.190 C 262.259 396.028,262.807 396.638,262.899 396.545 C 262.991 396.453,262.754 396.041,262.371 395.630 C 261.988 395.219,261.587 394.609,261.481 394.275 C 261.375 393.940,261.141 393.667,260.962 393.667 C 260.782 393.667,261.106 394.352,261.683 395.190 M29.738 395.258 C 31.638 396.862,32.229 397.167,30.667 395.735 C 29.842 394.980,29.049 394.355,28.905 394.348 C 28.761 394.340,29.136 394.750,29.738 395.258 M63.333 395.591 C 63.333 395.733,62.808 396.131,62.167 396.477 C 61.525 396.822,61.000 397.233,61.000 397.391 C 61.000 397.548,61.600 397.279,62.333 396.794 C 63.485 396.031,64.043 395.333,63.500 395.333 C 63.408 395.333,63.333 395.449,63.333 395.591 M86.410 397.191 C 85.998 397.819,85.774 398.332,85.914 398.331 C 86.182 398.329,87.422 396.311,87.256 396.145 C 87.203 396.092,86.822 396.562,86.410 397.191 M337.667 397.000 C 337.275 397.550,337.030 398.000,337.121 398.000 C 337.213 398.000,337.608 397.550,338.000 397.000 C 338.392 396.450,338.637 396.000,338.545 396.000 C 338.454 396.000,338.058 396.450,337.667 397.000 M308.000 396.667 C 307.313 396.887,307.284 396.939,307.833 396.962 C 308.200 396.977,308.725 396.844,309.000 396.667 C 309.584 396.289,309.179 396.289,308.000 396.667 M263.005 397.092 C 262.990 397.907,272.471 407.306,272.888 406.890 C 272.975 406.803,272.501 406.305,271.836 405.783 C 270.147 404.458,266.468 400.844,264.588 398.664 C 263.720 397.657,263.007 396.950,263.005 397.092 M294.667 397.333 C 294.942 397.511,295.542 397.648,296.000 397.638 C 296.763 397.621,296.777 397.596,296.167 397.333 C 295.180 396.909,294.011 396.909,294.667 397.333 M304.833 397.333 C 304.238 397.589,304.263 397.622,305.064 397.643 C 305.557 397.656,306.053 397.517,306.167 397.333 C 306.413 396.935,305.759 396.935,304.833 397.333 M33.333 397.827 C 33.333 397.914,33.933 398.293,34.667 398.667 C 36.319 399.510,36.417 399.312,34.814 398.366 C 33.593 397.646,33.333 397.551,33.333 397.827 M59.520 398.177 C 59.164 398.446,59.023 398.667,59.206 398.667 C 59.389 398.667,59.830 398.446,60.186 398.177 C 60.542 397.908,60.683 397.688,60.500 397.688 C 60.317 397.688,59.875 397.908,59.520 398.177 M336.324 398.583 C 336.312 398.897,333.638 401.713,331.577 403.583 C 330.718 404.363,330.160 405.000,330.337 405.000 C 330.755 405.000,336.667 399.071,336.667 398.652 C 336.667 398.279,336.338 398.214,336.324 398.583 M84.725 399.505 C 83.698 400.685,83.821 401.019,84.867 399.891 C 85.344 399.377,85.670 398.892,85.592 398.814 C 85.513 398.736,85.123 399.047,84.725 399.505 M55.333 399.854 C 54.598 400.132,54.413 400.297,54.833 400.299 C 55.200 400.302,55.950 400.097,56.500 399.845 C 57.773 399.263,56.879 399.269,55.333 399.854 M40.158 400.653 C 40.276 400.844,40.764 401.000,41.242 401.000 C 42.287 401.000,42.166 400.840,40.889 400.534 C 40.269 400.385,40.018 400.426,40.158 400.653 M52.333 400.667 C 51.538 400.922,51.548 400.935,52.564 400.967 C 53.149 400.985,53.720 400.850,53.833 400.667 C 54.070 400.283,53.530 400.283,52.333 400.667 M44.833 401.333 C 44.947 401.517,45.922 401.667,47.000 401.667 C 48.078 401.667,49.053 401.517,49.167 401.333 C 49.297 401.123,48.497 401.000,47.000 401.000 C 45.503 401.000,44.703 401.123,44.833 401.333 M80.114 405.022 C 78.434 406.679,77.182 407.990,77.330 407.934 C 77.862 407.735,83.659 401.994,83.318 402.005 C 83.235 402.007,81.793 403.365,80.114 405.022 M328.869 405.832 C 328.523 406.094,328.073 406.369,327.869 406.442 C 327.666 406.516,327.603 406.686,327.728 406.821 C 327.854 406.957,328.377 406.677,328.891 406.200 C 329.901 405.264,329.889 405.060,328.869 405.832 M273.333 407.169 C 273.333 407.435,278.053 410.391,278.217 410.227 C 278.298 410.147,277.382 409.506,276.182 408.804 C 274.982 408.102,274.000 407.409,274.000 407.264 C 274.000 407.119,273.850 407.000,273.667 407.000 C 273.483 407.000,273.333 407.076,273.333 407.169 M326.247 407.638 C 325.104 408.371,324.800 408.667,325.194 408.665 C 325.362 408.664,325.950 408.294,326.500 407.844 C 327.665 406.888,327.556 406.799,326.247 407.638 M75.167 409.519 C 74.545 410.047,74.429 410.243,74.861 410.036 C 75.480 409.739,76.604 408.664,76.291 408.668 C 76.223 408.669,75.717 409.052,75.167 409.519 M323.343 409.516 C 322.706 409.966,322.331 410.333,322.509 410.332 C 322.688 410.331,323.283 409.961,323.833 409.510 C 325.117 408.458,324.837 408.461,323.343 409.516 M319.167 411.495 C 317.883 412.113,316.936 412.630,317.061 412.643 C 317.384 412.676,321.434 410.945,321.817 410.610 C 322.449 410.057,321.474 410.382,319.167 411.495 M71.833 411.863 L 70.833 412.722 71.917 412.005 C 72.512 411.611,73.000 411.223,73.000 411.144 C 73.000 410.894,72.859 410.981,71.833 411.863 M280.520 411.489 C 280.875 411.759,281.399 411.984,281.683 411.989 C 281.967 411.995,282.377 412.178,282.594 412.394 C 282.811 412.611,283.066 412.712,283.161 412.617 C 283.255 412.523,282.920 412.253,282.416 412.017 C 281.912 411.782,281.240 411.456,280.921 411.294 C 280.025 410.838,279.802 410.947,280.520 411.489 M369.885 412.750 C 369.970 412.887,374.380 413.000,379.686 413.000 C 384.992 413.000,389.333 412.887,389.333 412.750 C 389.333 412.613,384.923 412.500,379.532 412.500 C 374.141 412.500,369.800 412.613,369.885 412.750 M23.000 412.830 C 23.000 413.058,25.041 414.070,25.193 413.918 C 25.266 413.845,24.802 413.537,24.162 413.232 C 23.523 412.927,23.000 412.746,23.000 412.830 M69.167 413.356 C 68.617 413.708,68.317 413.996,68.500 413.996 C 68.683 413.996,69.283 413.698,69.833 413.333 C 70.383 412.969,70.683 412.681,70.500 412.693 C 70.317 412.705,69.717 413.004,69.167 413.356 M286.333 413.667 C 287.473 414.032,288.349 414.032,287.500 413.667 C 287.133 413.509,286.533 413.385,286.167 413.390 C 285.631 413.398,285.663 413.452,286.333 413.667 M312.833 413.667 C 311.984 414.032,312.860 414.032,314.000 413.667 C 314.670 413.452,314.703 413.398,314.167 413.390 C 313.800 413.385,313.200 413.509,312.833 413.667 M66.053 414.720 C 65.258 415.086,64.679 415.457,64.767 415.545 C 64.930 415.708,68.000 414.365,68.000 414.130 C 68.000 413.900,67.531 414.042,66.053 414.720 M290.000 414.514 C 291.008 414.766,292.283 414.966,292.833 414.958 C 293.486 414.949,293.139 414.788,291.833 414.493 C 289.214 413.903,287.624 413.921,290.000 414.514 M309.559 414.219 C 309.439 414.339,308.777 414.559,308.087 414.708 L 306.833 414.978 308.167 414.824 C 308.900 414.740,310.100 414.537,310.833 414.374 L 312.167 414.077 310.972 414.038 C 310.315 414.017,309.679 414.098,309.559 414.219 M297.540 415.396 C 299.028 415.540,301.353 415.539,302.706 415.395 C 304.788 415.173,304.372 415.132,300.000 415.133 C 295.420 415.134,295.141 415.164,297.540 415.396 M29.333 416.000 C 29.608 416.178,30.058 416.323,30.333 416.323 C 30.778 416.323,30.778 416.287,30.333 416.000 C 30.058 415.822,29.608 415.677,29.333 415.677 C 28.889 415.677,28.889 415.713,29.333 416.000 M32.167 416.843 C 33.894 417.465,34.495 417.450,33.045 416.820 C 32.428 416.552,31.678 416.340,31.378 416.348 C 31.079 416.356,31.433 416.579,32.167 416.843 M60.167 416.845 C 59.368 417.211,59.305 417.306,59.850 417.318 C 60.226 417.327,60.676 417.198,60.850 417.032 C 61.024 416.867,61.467 416.659,61.833 416.571 L 62.500 416.411 61.833 416.399 C 61.467 416.393,60.717 416.594,60.167 416.845 M35.167 417.667 C 36.093 418.065,36.746 418.065,36.500 417.667 C 36.387 417.483,35.890 417.344,35.397 417.357 C 34.596 417.378,34.571 417.411,35.167 417.667 M57.000 417.667 C 56.556 417.954,56.556 417.990,57.000 417.990 C 57.275 417.990,57.725 417.844,58.000 417.667 C 58.444 417.379,58.444 417.344,58.000 417.344 C 57.725 417.344,57.275 417.489,57.000 417.667 M39.667 418.510 C 42.112 419.089,51.630 419.002,54.333 418.375 C 55.663 418.067,55.569 418.053,53.500 418.251 C 50.428 418.545,42.772 418.536,39.833 418.235 L 37.500 417.996 39.667 418.510 " stroke="none" fill="#595959" fill-rule="evenodd"></path><path id="path4" d="M213.146 2.417 L 212.167 3.500 213.250 2.521 C 213.846 1.983,214.333 1.495,214.333 1.438 C 214.333 1.180,214.058 1.407,213.146 2.417 M211.762 6.500 C 211.765 7.417,211.829 7.752,211.906 7.245 C 211.982 6.739,211.980 5.989,211.901 5.579 C 211.822 5.169,211.760 5.583,211.762 6.500 M174.543 15.508 C 174.384 15.922,174.470 15.950,175.008 15.663 C 175.780 15.249,175.853 15.000,175.202 15.000 C 174.947 15.000,174.650 15.228,174.543 15.508 M181.437 21.167 C 181.438 22.267,181.501 22.676,181.575 22.077 C 181.649 21.478,181.648 20.578,181.572 20.077 C 181.495 19.576,181.435 20.067,181.437 21.167 M211.491 48.000 C 211.491 60.375,211.532 65.438,211.583 59.250 C 211.634 53.063,211.634 42.938,211.583 36.750 C 211.532 30.563,211.491 35.625,211.491 48.000 M181.496 96.500 C 181.496 128.400,181.535 141.401,181.583 125.390 C 181.631 109.380,181.631 83.280,181.583 67.390 C 181.535 51.501,181.496 64.600,181.496 96.500 M201.817 59.833 C 201.817 66.250,201.862 68.828,201.916 65.562 C 201.971 62.296,201.971 57.046,201.916 53.895 C 201.861 50.744,201.817 53.417,201.817 59.833 M153.884 49.250 C 153.799 49.387,156.378 49.462,159.615 49.415 C 170.483 49.257,171.562 49.139,162.770 49.069 C 157.968 49.031,153.970 49.112,153.884 49.250 M222.694 49.122 C 222.771 49.189,227.408 49.317,233.000 49.408 C 239.251 49.508,241.369 49.477,238.500 49.326 C 233.491 49.063,222.465 48.921,222.694 49.122 M205.755 101.573 C 206.261 101.649,207.011 101.647,207.421 101.568 C 207.831 101.489,207.417 101.426,206.500 101.429 C 205.583 101.431,205.248 101.496,205.755 101.573 M229.167 113.702 C 229.167 115.538,229.264 116.694,229.383 116.270 C 229.672 115.245,229.678 111.647,229.393 110.931 C 229.269 110.618,229.167 111.865,229.167 113.702 M218.773 113.667 C 218.773 114.858,218.834 115.346,218.908 114.750 C 218.982 114.154,218.982 113.179,218.908 112.583 C 218.834 111.987,218.773 112.475,218.773 113.667 M263.714 117.333 C 263.714 117.608,263.842 118.133,264.000 118.500 C 264.181 118.920,264.286 118.982,264.286 118.667 C 264.286 118.392,264.158 117.867,264.000 117.500 C 263.819 117.080,263.714 117.018,263.714 117.333 M133.493 124.449 C 133.366 125.641,133.327 126.815,133.408 127.058 C 133.489 127.301,133.659 126.390,133.785 125.035 C 133.911 123.679,133.949 122.504,133.870 122.425 C 133.790 122.346,133.621 123.256,133.493 124.449 M264.960 124.740 C 265.114 125.665,265.161 125.712,265.266 125.045 C 265.334 124.611,265.252 124.119,265.084 123.951 C 264.899 123.766,264.851 124.077,264.960 124.740 M205.243 125.907 C 205.834 125.981,206.884 125.982,207.576 125.910 C 208.267 125.838,207.783 125.778,206.500 125.776 C 205.217 125.775,204.651 125.834,205.243 125.907 M265.417 129.167 C 265.421 129.900,265.489 130.161,265.569 129.746 C 265.649 129.331,265.646 128.731,265.562 128.413 C 265.479 128.094,265.414 128.433,265.417 129.167 M133.107 130.333 C 133.107 131.525,133.167 132.012,133.241 131.417 C 133.315 130.821,133.315 129.846,133.241 129.250 C 133.167 128.654,133.107 129.142,133.107 130.333 M265.448 133.833 C 265.449 135.300,265.507 135.859,265.578 135.075 C 265.648 134.291,265.647 133.091,265.576 132.408 C 265.504 131.725,265.446 132.367,265.448 133.833 M133.367 134.361 C 133.385 135.354,133.517 136.542,133.660 137.000 C 133.807 137.470,133.845 136.744,133.748 135.333 C 133.543 132.372,133.319 131.803,133.367 134.361 M205.243 136.574 C 205.834 136.648,206.884 136.649,207.576 136.577 C 208.267 136.504,207.783 136.444,206.500 136.443 C 205.217 136.441,204.651 136.500,205.243 136.574 M265.417 137.833 C 265.421 138.567,265.489 138.827,265.569 138.413 C 265.649 137.998,265.646 137.398,265.562 137.079 C 265.479 136.761,265.414 137.100,265.417 137.833 M264.857 142.190 C 264.735 142.679,264.699 143.143,264.777 143.222 C 264.856 143.300,265.020 142.965,265.143 142.476 C 265.265 141.988,265.301 141.524,265.223 141.445 C 265.144 141.367,264.980 141.702,264.857 142.190 M204.039 222.056 C 204.017 222.362,203.914 222.887,203.808 223.223 C 203.626 223.801,203.636 223.802,203.997 223.240 C 204.207 222.913,204.310 222.388,204.228 222.073 C 204.092 221.557,204.074 221.555,204.039 222.056 M195.073 225.500 C 195.076 225.867,195.193 226.617,195.333 227.167 C 195.562 228.065,195.588 228.082,195.594 227.333 C 195.597 226.875,195.480 226.125,195.333 225.667 C 195.124 225.014,195.068 224.978,195.073 225.500 M195.762 232.833 C 195.765 233.750,195.829 234.085,195.906 233.579 C 195.982 233.072,195.980 232.322,195.901 231.912 C 195.822 231.502,195.760 231.917,195.762 232.833 M202.776 235.833 C 202.778 237.117,202.838 237.601,202.910 236.909 C 202.982 236.218,202.981 235.168,202.907 234.576 C 202.834 233.984,202.775 234.550,202.776 235.833 M195.333 247.610 C 194.579 248.346,194.569 248.387,195.231 248.043 C 195.634 247.834,196.061 247.504,196.181 247.309 C 196.592 246.646,196.168 246.796,195.333 247.610 M235.667 258.278 C 235.667 258.571,226.767 258.687,199.417 258.748 L 163.167 258.830 199.315 258.917 C 233.622 258.999,236.709 258.931,235.894 258.117 C 235.769 257.991,235.667 258.064,235.667 258.278 M136.429 290.833 C 136.431 291.750,136.496 292.085,136.573 291.579 C 136.649 291.072,136.647 290.322,136.568 289.912 C 136.489 289.502,136.426 289.917,136.429 290.833 M110.077 290.667 C 110.077 291.308,110.146 291.571,110.230 291.250 C 110.314 290.929,110.314 290.404,110.230 290.083 C 110.146 289.762,110.077 290.025,110.077 290.667 M369.381 295.110 C 368.961 295.615,368.661 326.806,369.080 326.387 C 369.216 326.251,369.366 319.171,369.413 310.653 L 369.500 295.167 379.500 294.993 L 389.500 294.818 379.624 294.743 C 371.746 294.682,369.674 294.756,369.381 295.110 M389.487 310.833 C 389.487 319.450,389.530 323.023,389.583 318.773 C 389.636 314.523,389.636 307.473,389.583 303.106 C 389.530 298.739,389.487 302.217,389.487 310.833 M200.402 324.247 C 201.632 324.311,203.732 324.311,205.069 324.248 C 206.406 324.184,205.400 324.132,202.833 324.132 C 200.267 324.131,199.173 324.183,200.402 324.247 M297.766 324.248 C 299.380 324.310,301.930 324.309,303.433 324.248 C 304.937 324.186,303.617 324.136,300.500 324.136 C 297.383 324.137,296.153 324.187,297.766 324.248 M133.500 369.667 C 133.500 393.282,133.612 412.533,133.750 412.448 C 133.887 412.364,134.000 393.112,134.000 369.667 C 134.000 346.222,133.887 326.970,133.750 326.885 C 133.612 326.800,133.500 346.052,133.500 369.667 M399.167 335.948 L 399.167 345.167 394.667 345.348 L 390.167 345.530 394.517 345.598 C 397.537 345.646,398.989 345.544,399.267 345.267 C 399.718 344.816,399.862 327.160,399.417 326.885 C 399.279 326.800,399.167 330.878,399.167 335.948 M360.813 336.000 C 360.813 341.042,360.859 343.104,360.916 340.583 C 360.972 338.063,360.972 333.938,360.916 331.417 C 360.859 328.896,360.813 330.958,360.813 336.000 M42.583 327.569 C 42.996 327.648,43.671 327.648,44.083 327.569 C 44.496 327.489,44.158 327.424,43.333 327.424 C 42.508 327.424,42.171 327.489,42.583 327.569 M49.750 327.563 C 50.071 327.647,50.596 327.647,50.917 327.563 C 51.237 327.479,50.975 327.411,50.333 327.411 C 49.692 327.411,49.429 327.479,49.750 327.563 M55.361 328.120 C 55.438 328.186,55.950 328.340,56.500 328.463 C 57.230 328.627,57.365 328.596,57.000 328.349 C 56.550 328.044,55.027 327.831,55.361 328.120 M20.471 332.473 C 20.493 334.210,20.624 334.821,21.000 334.944 C 21.401 335.076,21.421 335.013,21.102 334.626 C 20.883 334.361,20.645 333.249,20.573 332.155 C 20.449 330.263,20.444 330.278,20.471 332.473 M0.415 389.517 C 0.352 435.066,0.425 448.625,0.733 448.933 C 1.029 449.229,3.606 449.314,10.650 449.258 L 20.167 449.182 10.500 449.008 L 0.833 448.833 0.665 389.667 L 0.497 330.500 0.415 389.517 M273.500 332.196 L 272.500 333.055 273.583 332.338 C 274.179 331.944,274.667 331.556,274.667 331.477 C 274.667 331.228,274.526 331.315,273.500 332.196 M304.000 342.667 C 305.140 343.032,306.016 343.032,305.167 342.667 C 304.800 342.509,304.200 342.385,303.833 342.390 C 303.297 342.398,303.330 342.452,304.000 342.667 M363.417 345.578 C 364.287 345.647,365.712 345.647,366.583 345.578 C 367.454 345.510,366.742 345.453,365.000 345.453 C 363.258 345.453,362.546 345.510,363.417 345.578 M44.333 345.963 C 43.692 346.078,44.892 346.174,47.000 346.177 C 49.546 346.181,50.385 346.102,49.500 345.944 C 47.935 345.664,45.967 345.671,44.333 345.963 M389.494 379.167 C 389.494 397.683,389.534 405.307,389.583 396.109 C 389.633 386.910,389.633 371.760,389.583 362.442 C 389.534 353.124,389.494 360.650,389.494 379.167 M369.081 379.183 C 369.019 404.769,369.093 412.626,369.400 412.933 C 369.697 413.230,372.346 413.314,379.650 413.257 L 389.500 413.182 379.500 413.007 L 369.500 412.833 369.331 379.333 L 369.162 345.833 369.081 379.183 M51.833 346.667 C 50.911 346.901,50.898 346.924,51.667 346.955 C 52.125 346.974,52.725 346.844,53.000 346.667 C 53.567 346.300,53.274 346.300,51.833 346.667 M345.167 356.667 C 345.042 357.061,345.014 357.459,345.106 357.550 C 345.197 357.642,345.375 357.394,345.500 357.000 C 345.625 356.606,345.653 356.208,345.561 356.116 C 345.469 356.025,345.292 356.272,345.167 356.667 M212.573 358.833 C 212.676 359.933,212.813 360.896,212.880 360.972 C 213.113 361.241,212.930 358.490,212.660 357.667 C 212.491 357.149,212.458 357.591,212.573 358.833 M212.747 387.517 C 212.686 406.620,212.761 412.628,213.067 412.933 C 213.363 413.230,215.976 413.314,223.150 413.258 L 232.833 413.182 223.000 413.008 L 213.167 412.833 212.997 387.667 L 212.827 362.500 212.747 387.517 M346.776 369.833 C 346.778 371.117,346.838 371.601,346.910 370.909 C 346.982 370.218,346.981 369.168,346.907 368.576 C 346.834 367.984,346.775 368.550,346.776 369.833 M274.744 369.667 C 274.744 370.308,274.813 370.571,274.896 370.250 C 274.980 369.929,274.980 369.404,274.896 369.083 C 274.813 368.762,274.744 369.025,274.744 369.667 M21.433 373.000 C 21.433 374.008,21.496 374.421,21.572 373.917 C 21.648 373.412,21.648 372.587,21.572 372.083 C 21.496 371.579,21.433 371.992,21.433 373.000 M275.333 376.147 C 275.333 376.411,275.483 376.720,275.667 376.833 C 275.850 376.947,276.000 376.730,276.000 376.353 C 276.000 375.976,275.850 375.667,275.667 375.667 C 275.483 375.667,275.333 375.883,275.333 376.147 M92.744 379.333 C 92.744 379.975,92.813 380.238,92.896 379.917 C 92.980 379.596,92.980 379.071,92.896 378.750 C 92.813 378.429,92.744 378.692,92.744 379.333 M345.023 382.583 C 345.115 383.561,345.621 384.105,345.643 383.250 C 345.656 382.746,345.517 382.333,345.333 382.333 C 345.150 382.333,345.011 382.446,345.023 382.583 M304.000 397.045 C 303.542 397.230,301.639 397.333,299.772 397.274 C 297.828 397.213,296.592 397.286,296.879 397.446 C 297.475 397.779,303.533 397.517,305.667 397.067 C 307.108 396.762,307.121 396.749,306.000 396.730 C 305.358 396.718,304.458 396.860,304.000 397.045 M49.417 400.896 C 49.737 400.980,50.262 400.980,50.583 400.896 C 50.904 400.813,50.642 400.744,50.000 400.744 C 49.358 400.744,49.096 400.813,49.417 400.896 M333.812 402.083 L 332.833 403.167 333.917 402.188 C 334.926 401.275,335.153 401.000,334.896 401.000 C 334.838 401.000,334.351 401.488,333.812 402.083 M20.486 412.417 C 20.399 412.646,20.366 421.008,20.414 431.000 L 20.500 449.167 20.667 430.583 C 20.758 420.362,20.791 412.000,20.740 412.000 C 20.688 412.000,20.574 412.188,20.486 412.417 M113.621 413.089 C 113.762 413.229,118.217 413.304,123.522 413.255 L 133.167 413.166 123.266 413.000 C 117.821 412.908,113.481 412.948,113.621 413.089 M158.885 413.083 C 158.970 413.221,163.447 413.333,168.833 413.333 C 174.220 413.333,178.697 413.221,178.782 413.083 C 178.867 412.946,174.390 412.833,168.833 412.833 C 163.277 412.833,158.800 412.946,158.885 413.083 M295.917 415.569 C 296.329 415.648,297.004 415.648,297.417 415.569 C 297.829 415.489,297.492 415.424,296.667 415.424 C 295.842 415.424,295.504 415.489,295.917 415.569 M302.755 415.573 C 303.261 415.649,304.011 415.647,304.421 415.568 C 304.831 415.489,304.417 415.426,303.500 415.429 C 302.583 415.431,302.248 415.496,302.755 415.573 M299.250 415.902 C 299.662 415.981,300.337 415.981,300.750 415.902 C 301.162 415.822,300.825 415.757,300.000 415.757 C 299.175 415.757,298.837 415.822,299.250 415.902 M53.333 418.667 C 52.663 418.881,52.631 418.935,53.167 418.943 C 53.533 418.949,54.133 418.824,54.500 418.667 C 55.349 418.302,54.473 418.302,53.333 418.667 " stroke="none" fill="#848484" fill-rule="evenodd"></path></g></svg>
\ No newline at end of file
diff --git a/assets/images/pinot-architecture-f75b926076ed34c98eb24be7ed1c1107.png b/assets/images/pinot-architecture-f75b926076ed34c98eb24be7ed1c1107.png
deleted file mode 100644
index 338953c..0000000
--- a/assets/images/pinot-architecture-f75b926076ed34c98eb24be7ed1c1107.png
+++ /dev/null
Binary files differ
diff --git a/assets/images/pinot-overview-f1b5a17c2e53228461f1510ea2fe0e9b.png b/assets/images/pinot-overview-f1b5a17c2e53228461f1510ea2fe0e9b.png
deleted file mode 100644
index b07e500..0000000
--- a/assets/images/pinot-overview-f1b5a17c2e53228461f1510ea2fe0e9b.png
+++ /dev/null
Binary files differ
diff --git a/assets/images/pql-query-console-9172787dd283a81158000e46310114f3.png b/assets/images/pql-query-console-9172787dd283a81158000e46310114f3.png
deleted file mode 100644
index 7f4eb02..0000000
--- a/assets/images/pql-query-console-9172787dd283a81158000e46310114f3.png
+++ /dev/null
Binary files differ
diff --git a/assets/js/00a15675.e6313939.js b/assets/js/00a15675.e6313939.js
deleted file mode 100644
index fa08251..0000000
--- a/assets/js/00a15675.e6313939.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1177],{1064:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"timestamp","name":"timestamp","count":1,"permalink":"/blog/tags/timestamp"}')}}]);
\ No newline at end of file
diff --git a/assets/js/0188af5a.197d88be.js b/assets/js/0188af5a.197d88be.js
deleted file mode 100644
index 4735af8..0000000
--- a/assets/js/0188af5a.197d88be.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9049],{4137:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return f}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),p=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=p(e.components);return a.createElement(c.Provider,{value:t},e.children)},u="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=r,f=u["".concat(c,".").concat(m)]||u[m]||g[m]||o;return n?a.createElement(f,i(i({ref:t},s),{},{components:n})):a.createElement(f,i({ref:t},s))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},7199:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return c},default:function(){return m},frontMatter:function(){return l},metadata:function(){return p},toc:function(){return s}});var a=n(7462),r=n(3366),o=(n(7294),n(4137)),i=["components"],l={title:"Deploying Apache Pinot at a Large Retail Chain",author:"PinotDev",author_title:"Pinot Editorial Team",author_url:"https://medium.com/apache-pinot-developer-blog",author_image_url:"https://pinot.apache.org/authors/pinot_team.jpg",description:"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain",keywords:["Pinot","Retail Chain Use case","User-Facing Analytics","Real-time data platform"],tags:["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},c=void 0,p={permalink:"/blog/2021/04/27/DevBlog-PinotInRetailChain",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2021-04-27-DevBlog-PinotInRetailChain.md",source:"@site/blog/2021-04-27-DevBlog-PinotInRetailChain.md",title:"Deploying Apache Pinot at a Large Retail Chain",description:"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain",date:"2021-04-27T00:00:00.000Z",formattedDate:"April 27, 2021",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"DevBlog",permalink:"/blog/tags/dev-blog"},{label:"ThirdEye",permalink:"/blog/tags/third-eye"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.175,truncated:!1,prevItem:{title:"Automating Merchant Live Monitoring with Real-Time Analytics - Charon",permalink:"/blog/2021/04/29/Uber-Charon"},nextItem:{title:"Solving for the cardinality of set intersection at scale with Pinot and Theta Sketches",permalink:"/blog/2021/04/16/LinkedIn-Theta"}},s=[],u={toc:s},g="wrapper";function m(e){var t=e.components,n=(0,r.Z)(e,i);return(0,o.kt)(g,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://medium.com/apache-pinot-developer-blog/deploying-apache-pinot-at-a-large-retail-chain-42aed2921a38"},"Read More at https://medium.com/apache-pinot-developer-blog/deploying-apache-pinot-at-a-large-retail-chain-42aed2921a38")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://miro.medium.com/max/1400/1*EtqD0vTPEe569jybXCt69w.png",alt:"Deploying Apache Pinot at a Large Retail Chain"})))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/01a85c17.b1bc2e9e.js b/assets/js/01a85c17.b1bc2e9e.js
deleted file mode 100644
index add5558..0000000
--- a/assets/js/01a85c17.b1bc2e9e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4013,0],{4112:function(e,t,a){a.d(t,{Z:function(){return o}});var r=a(7294),l=a(6010),n=a(2511),s={sidebar:"sidebar_q+wC",sidebarItemTitle:"sidebarItemTitle_9G5K",sidebarItemList:"sidebarItemList_6T4b",sidebarItem:"sidebarItem_cjdF",sidebarItemLink:"sidebarItemLink_zyXk",sidebarItemLinkActive:"sidebarItemLinkActive_wcJs"},i=a(7130);function o(e){var t=e.sidebar;return 0===t.items.length?null:r.createElement("nav",{className:(0,l.Z)(s.sidebar,"thin-scrollbar"),"aria-label":(0,i.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},r.createElement("div",{className:(0,l.Z)(s.sidebarItemTitle,"margin-bottom--md")},t.title),r.createElement("ul",{className:s.sidebarItemList},t.items.map((function(e){return r.createElement("li",{key:e.permalink,className:s.sidebarItem},r.createElement(n.Z,{isNavLink:!0,to:e.permalink,className:s.sidebarItemLink,activeClassName:s.sidebarItemLinkActive},e.title))}))))}},9488:function(e,t,a){a.r(t);var r=a(7294),l=a(3865),n=a(2511),s=a(4112),i=a(7130),o=a(4395);t.default=function(e){var t=e.tags,a=e.sidebar,c=(0,i.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"}),m={};Object.keys(t).forEach((function(e){var t=function(e){return e[0].toUpperCase()}(e);m[t]=m[t]||[],m[t].push(e)}));var u=Object.entries(m).sort((function(e,t){var a=e[0],r=t[0];return a.localeCompare(r)})).map((function(e){var a=e[0],l=e[1];return r.createElement("article",{key:a},r.createElement("h2",null,a),l.map((function(e){return r.createElement(n.Z,{className:"padding-right--md",href:t[e].permalink,key:e},t[e].name," (",t[e].count,")")})),r.createElement("hr",null))})).filter((function(e){return null!=e}));return r.createElement(l.Z,{title:c,wrapperClassName:o.kM.wrapper.blogPages,pageClassName:o.kM.page.blogTagsListPage,searchMetadatas:{tag:"blog_tags_list"}},r.createElement("div",{className:"container margin-vert--lg"},r.createElement("div",{className:"row"},r.createElement("aside",{className:"col col--3"},r.createElement(s.Z,{sidebar:a})),r.createElement("main",{className:"col col--7"},r.createElement("h1",null,c),r.createElement("section",{className:"margin-vert--lg"},u)))))}},283:function(e,t,a){a.d(t,{Z:function(){return b}});var r=a(7462),l=a(3366),n=a(7294),s=a(6010),i=a(2511),o=a(4395),c=a(9524),m={footerLogoLink:"footerLogoLink_94kH",footerCopyright:"footerCopyright_-piB"},u=a(4087),d=["to","href","label","prependBaseUrlToHref"];function f(e){var t=e.to,a=e.href,s=e.label,o=e.prependBaseUrlToHref,m=(0,l.Z)(e,d),u=(0,c.Z)(t),f=(0,c.Z)(a,{forcePrependBaseUrl:!0});return n.createElement(i.Z,(0,r.Z)({className:"footer__link-item"},a?{href:o?f:a}:{to:u},m),s)}var g=function(e){var t=e.sources,a=e.alt;return n.createElement(u.Z,{className:"footer__logo",alt:a,sources:t})};var b=function(){var e=(0,o.LU)().footer,t=e||{},a=t.copyright,r=t.links,l=void 0===r?[]:r,u=t.logo,d=void 0===u?{}:u,b={light:(0,c.Z)(d.src),dark:(0,c.Z)(d.srcDark||d.src)};return e?n.createElement("footer",{className:(0,s.Z)("footer",{"footer--dark":"dark"===e.style})},n.createElement("div",{className:"container"},l&&l.length>0&&n.createElement("div",{className:"row footer__links"},l.map((function(e,t){return n.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.createElement("li",{key:e.href||e.to,className:"footer__item"},n.createElement(f,e))}))):null)}))),(d||a)&&n.createElement("div",{className:"footer__bottom text--center"},d&&(d.src||d.srcDark)&&n.createElement("div",{className:"margin-bottom--sm"},d.href?n.createElement(i.Z,{href:d.href,className:m.footerLogoLink},n.createElement(g,{alt:d.alt,sources:b})):n.createElement(g,{alt:d.alt,sources:b})),a?n.createElement("div",{className:m.footerCopyright,dangerouslySetInnerHTML:{__html:a}}):null))):null}}}]);
\ No newline at end of file
diff --git a/assets/js/02784236.7886b90d.js b/assets/js/02784236.7886b90d.js
deleted file mode 100644
index 93b36ca..0000000
--- a/assets/js/02784236.7886b90d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[682],{5187:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"upsert","name":"upsert","count":1,"permalink":"/blog/tags/upsert"}')}}]);
\ No newline at end of file
diff --git a/assets/js/02982aa0.5c3cfebf.js b/assets/js/02982aa0.5c3cfebf.js
deleted file mode 100644
index d8348c1..0000000
--- a/assets/js/02982aa0.5c3cfebf.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6169],{1880:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"potential","name":"potential","count":1,"permalink":"/blog/tags/potential"}')}}]);
\ No newline at end of file
diff --git a/assets/js/06afc357.1175cdf8.js b/assets/js/06afc357.1175cdf8.js
deleted file mode 100644
index 446015f..0000000
--- a/assets/js/06afc357.1175cdf8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8812],{5506:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"null-support","name":"null support","count":1,"permalink":"/blog/tags/null-support"}')}}]);
\ No newline at end of file
diff --git a/assets/js/09e16f0c.388813d8.js b/assets/js/09e16f0c.388813d8.js
deleted file mode 100644
index 15bc1ef..0000000
--- a/assets/js/09e16f0c.388813d8.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 09e16f0c.388813d8.js.LICENSE.txt */
-(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6392],{4137:function(e,t,n){"use strict";n.d(t,{Zo:function(){return l},kt:function(){return v}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var u=r.createContext({}),s=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=s(e.components);return r.createElement(u.Provider,{value:t},e.children)},f="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,u=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),f=s(n),p=i,v=f["".concat(u,".").concat(p)]||f[p]||d[p]||o;return n?r.createElement(v,a(a({ref:t},l),{},{components:n})):r.createElement(v,a({ref:t},l))}));function v(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=p;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c[f]="string"==typeof e?e:i,a[1]=c;for(var s=2;s<o;s++)a[s]=n[s];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}p.displayName="MDXCreateElement"},2511:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var r=n(3366),i=n(7294),o=n(3727),a=n(9962),c=n(2735),u=n(6136),s=(0,i.createContext)({collectLink:function(){}}),l=function(){return(0,i.useContext)(s)},f=n(9524),d=n(3905),p=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"],v=function(e){return e.startsWith("/")};var m=function(e){var t,n,s=e.isNavLink,m=e.to,b=e.href,h=e.activeClassName,y=e.isActive,g=e["data-noBrokenLinkCheck"],O=e.autoAddBaseUrl,w=void 0===O||O,j=(0,r.Z)(e,p),k=(0,a.Z)().siteConfig.trailingSlash,P=(0,f.C)().withBaseUrl,E=l(),C=m||b,N=(0,c.Z)(C),x=null==C?void 0:C.replace("pathname://",""),_=void 0!==x?(n=x,w&&v(n)?P(n):n):void 0;_&&N&&(_=(0,d.applyTrailingSlash)(_,k));var Z,T=(0,i.useRef)(!1),D=s?o.OL:o.rU,S=u.Z.canUseIntersectionObserver;(0,i.useEffect)((function(){return!S&&N&&null!=_&&window.docusaurus.prefetch(_),function(){S&&Z&&Z.disconnect()}}),[_,S,N]);var M=null!==(t=null==_?void 0:_.startsWith("#"))&&void 0!==t&&t,U=!_||!N||M;return _&&N&&!M&&!g&&E.collectLink(_),U?i.createElement("a",Object.assign({href:_},C&&!N&&{target:"_blank",rel:"noopener noreferrer"},j)):i.createElement(D,Object.assign({},j,{onMouseEnter:function(){T.current||null==_||(window.docusaurus.preload(_),T.current=!0)},innerRef:function(e){var t,n;S&&e&&N&&(t=e,n=function(){null!=_&&window.docusaurus.prefetch(_)},(Z=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(Z.unobserve(t),Z.disconnect(),n())}))}))).observe(t))},to:_||""},s&&{isActive:y,activeClassName:h}))}},2735:function(e,t,n){"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function i(e){return void 0!==e&&!r(e)}n.d(t,{Z:function(){return i},b:function(){return r}})},9524:function(e,t,n){"use strict";n.d(t,{C:function(){return o},Z:function(){return a}});var r=n(9962),i=n(2735);function o(){var e=(0,r.Z)().siteConfig,t=void 0===e?{}:e,n=t.baseUrl,o=void 0===n?"/":n,a=t.url;return{withBaseUrl:function(e,t){return function(e,t,n,r){var o=void 0===r?{}:r,a=o.forcePrependBaseUrl,c=void 0!==a&&a,u=o.absolute,s=void 0!==u&&u;if(!n)return n;if(n.startsWith("#"))return n;if((0,i.b)(n))return n;if(c)return t+n;var l=n.startsWith(t)?n:t+n.replace(/^\//,"");return s?e+l:l}(a,o,e,t)}}}function a(e,t){return void 0===t&&(t={}),(0,o().withBaseUrl)(e,t)}},4136:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e.startsWith("#"))return e;if(void 0===t)return e;var n,r=e.split(/[#?]/)[0],i="/"===r?"/":t?(n=r).endsWith("/")?n:n+"/":function(e){return e.endsWith("/")?e.slice(0,-1):e}(r);return e.replace(r,i)}},3905:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.uniq=t.applyTrailingSlash=void 0;var i=n(4136);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(i).default}});var o=n(3509);Object.defineProperty(t,"uniq",{enumerable:!0,get:function(){return r(o).default}})},3509:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Array.from(new Set(e))}},9342:function(e,t,n){"use strict";var r=n(7294),i=n(2511),o=n(4184),a=n.n(o);t.Z=function(e){var t=e.children,n=e.className,o=e.badge,c=e.icon,u=e.size,s=e.target,l=e.to,f=a()("jump-to","jump-to--"+u,n),d=r.createElement("div",{className:"jump-to--inner"},r.createElement("div",{className:"jump-to--inner-2"},r.createElement("div",{className:"jump-to--main"},o?r.createElement("span",{className:"badge badge--primary badge--right"},o):"",t),r.createElement("div",{className:"jump-to--right"},r.createElement("i",{className:"feather icon-"+(c||"chevron-right")+" arrow"}))));return s?r.createElement("a",{href:l,target:s,className:f},d):r.createElement(i.Z,{to:l,className:f},d)}},5369:function(e,t,n){"use strict";n.r(t),n.d(t,{contentTitle:function(){return s},default:function(){return v},frontMatter:function(){return u},metadata:function(){return l},toc:function(){return f}});var r=n(7462),i=n(3366),o=(n(7294),n(4137)),a=n(9342),c=["components"],u={title:"Install Pinot On Containers",sidebar_label:"hidden",hide_pagination:!0,draft:!0},s=void 0,l={unversionedId:"administration/installation/containers",id:"administration/installation/containers",isDocsHomePage:!1,title:"Install Pinot On Containers",description:"Docker",source:"@site/docs/administration/installation/containers.md",sourceDirName:"administration/installation",slug:"/administration/installation/containers",permalink:"/docs/administration/installation/containers",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/administration/installation/containers.md",version:"current",frontMatter:{title:"Install Pinot On Containers",sidebar_label:"hidden",hide_pagination:!0,draft:!0}},f=[],d={toc:f},p="wrapper";function v(e){var t=e.components,n=(0,i.Z)(e,c);return(0,o.kt)(p,(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)(a.Z,{to:"/docs/setup/installation/containers/docker/",mdxType:"Jump"},"Docker"),(0,o.kt)("p",null,"Pinot on contianers"))}v.isMDXComponent=!0},4184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var a=i.apply(null,n);a&&e.push(a)}}else if("object"===o)if(n.toString===Object.prototype.toString)for(var c in n)r.call(n,c)&&n[c]&&e.push(c);else e.push(n.toString())}}return e.join(" ")}e.exports?(i.default=i,e.exports=i):void 0===(n=function(){return i}.apply(t,[]))||(e.exports=n)}()}}]);
\ No newline at end of file
diff --git a/assets/js/09e16f0c.388813d8.js.LICENSE.txt b/assets/js/09e16f0c.388813d8.js.LICENSE.txt
deleted file mode 100644
index 0c20a87..0000000
--- a/assets/js/09e16f0c.388813d8.js.LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
-  Copyright (c) 2018 Jed Watson.
-  Licensed under the MIT License (MIT), see
-  http://jedwatson.github.io/classnames
-*/
diff --git a/assets/js/0b390f71.74df6dd5.js b/assets/js/0b390f71.74df6dd5.js
deleted file mode 100644
index 80270ee..0000000
--- a/assets/js/0b390f71.74df6dd5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1052],{1494:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"json","name":"json","count":1,"permalink":"/blog/tags/json"}')}}]);
\ No newline at end of file
diff --git a/assets/js/0b8045ed.7bfbaa3d.js b/assets/js/0b8045ed.7bfbaa3d.js
deleted file mode 100644
index 9b4f965..0000000
--- a/assets/js/0b8045ed.7bfbaa3d.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 0b8045ed.7bfbaa3d.js.LICENSE.txt */
-(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7550],{4137:function(e,t,r){"use strict";r.d(t,{Zo:function(){return c},kt:function(){return m}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var A=n.createContext({}),s=function(e){var t=n.useContext(A),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},c=function(e){var t=s(e.components);return n.createElement(A.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,A=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=s(r),d=a,m=u["".concat(A,".").concat(d)]||u[d]||p[d]||o;return r?n.createElement(m,l(l({ref:t},c),{},{components:r})):n.createElement(m,l({ref:t},c))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,l=new Array(o);l[0]=d;var i={};for(var A in t)hasOwnProperty.call(t,A)&&(i[A]=t[A]);i.originalType=e,i[u]="string"==typeof e?e:a,l[1]=i;for(var s=2;s<o;s++)l[s]=r[s];return n.createElement.apply(null,l)}return n.createElement.apply(null,r)}d.displayName="MDXCreateElement"},8448:function(e,t,r){"use strict";var n=r(7294);t.Z=function(e){var t=e.children,r=e.hidden,a=e.className;return n.createElement("div",{role:"tabpanel",hidden:r,className:a},t)}},2168:function(e,t,r){"use strict";r.d(t,{Z:function(){return A}});var n=r(7294),a=r(50),o=r(6010),l={tabItem:"tabItem_vU9c",tabItemActive:"tabItemActive_cw6a",blink:"blink_4cVI"};var i={left:37,right:39};var A=function(e){var t=e.lazy,r=e.block,A=e.defaultValue,s=e.values,c=e.groupId,u=e.className,p=(0,a.Z)(),d=p.tabGroupChoices,m=p.setTabGroupChoices,k=(0,n.useState)(A),f=k[0],b=k[1],h=n.Children.toArray(e.children),v=[];if(null!=c){var S=d[c];null!=S&&S!==f&&s.some((function(e){return e.value===S}))&&b(S)}var y=function(e){var t=e.currentTarget,r=v.indexOf(t),n=s[r].value;b(n),null!=c&&(m(c,n),setTimeout((function(){var e,r,n,a,o,i,A,s;(e=t.getBoundingClientRect(),r=e.top,n=e.left,a=e.bottom,o=e.right,i=window,A=i.innerHeight,s=i.innerWidth,r>=0&&o<=s&&a<=A&&n>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(l.tabItemActive),setTimeout((function(){return t.classList.remove(l.tabItemActive)}),2e3))}),150))},Z=function(e){var t,r;switch(e.keyCode){case i.right:var n=v.indexOf(e.target)+1;r=v[n]||v[0];break;case i.left:var a=v.indexOf(e.target)-1;r=v[a]||v[v.length-1]}null==(t=r)||t.focus()};return n.createElement("div",{className:"tabs-container"},n.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},u)},s.map((function(e){var t=e.value,r=e.label;return n.createElement("li",{role:"tab",tabIndex:f===t?0:-1,"aria-selected":f===t,className:(0,o.Z)("tabs__item",l.tabItem,{"tabs__item--active":f===t}),key:t,ref:function(e){return v.push(e)},onKeyDown:Z,onFocus:y,onClick:y},r)}))),t?(0,n.cloneElement)(h.filter((function(e){return e.props.value===f}))[0],{className:"margin-vert--md"}):n.createElement("div",{className:"margin-vert--md"},h.map((function(e,t){return(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==f})}))))}},2713:function(e,t,r){"use strict";var n=(0,r(7294).createContext)(void 0);t.Z=n},50:function(e,t,r){"use strict";var n=r(7294),a=r(2713);t.Z=function(){var e=(0,n.useContext)(a.Z);if(null==e)throw new Error('"useUserPreferencesContext" is used outside of "Layout" component.');return e}},6261:function(e,t,r){"use strict";var n=r(7294),a=r(4184),o=r.n(a);t.Z=function(e){var t=e.children,r=e.classNames,a=e.fill,l=e.icon,i=e.type,A=null;switch(i){case"danger":case"warning":A="alert-triangle";break;case"success":A="check-circle";break;default:A="info"}return n.createElement("div",{className:o()(r,"alert","alert--"+i,{"alert--fill":a,"alert--icon":!1!==l}),role:"alert"},!1!==l&&n.createElement("i",{className:o()("feather","icon-"+(l||A))}),t)}},9152:function(e,t,r){"use strict";r.r(t),r.d(t,{contentTitle:function(){return u},default:function(){return f},frontMatter:function(){return c},metadata:function(){return p},toc:function(){return d}});var n=r(7462),a=r(3366),o=r(7294),l=r(4137),i=(r(6261),r(2168)),A=r(8448),s=["components"],c={title:"Cluster",sidebar_label:"cluster",description:"Cluster",draft:!0},u=void 0,p={unversionedId:"components/cluster",id:"components/cluster",isDocsHomePage:!1,title:"Cluster",description:"Cluster",source:"@site/docs/components/cluster.md",sourceDirName:"components",slug:"/components/cluster",permalink:"/docs/components/cluster",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/components/cluster.md",version:"current",frontMatter:{title:"Cluster",sidebar_label:"cluster",description:"Cluster",draft:!0},sidebar:"docs",previous:{title:"broker",permalink:"/docs/components/broker"},next:{title:"PQL",permalink:"/docs/components/controller"}},d=[{value:"Cluster components",id:"cluster-components",children:[{value:"Participant",id:"participant",children:[]},{value:"Spectator",id:"spectator",children:[]},{value:"Controller",id:"controller",children:[]}]},{value:"Logical view",id:"logical-view",children:[]},{value:"Setup a Pinot Cluster",id:"setup-a-pinot-cluster",children:[{value:"Using docker images",id:"using-docker-images",children:[]}]}],m={toc:d},k="wrapper";function f(e){var t=e.components,c=(0,a.Z)(e,s);return(0,l.kt)(k,(0,n.Z)({},m,c,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"Cluster is a set a nodes comprising of servers, brokers, controllers and minions."),(0,l.kt)("p",null,"Pinot leverages ",(0,l.kt)("a",{parentName:"p",href:"http://helix.apache.org"},"Apache Helix")," for cluster management. Helix is a cluster management framework to manage replicated, partitioned resources in a distributed system. Helix uses Zookeeper to store cluster state and metadata."),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"Cluster Components",src:r(817).Z})),(0,l.kt)("h2",{id:"cluster-components"},"Cluster components"),(0,l.kt)("p",null,"Briefly, Helix divides nodes into three logical components based on their responsibilities"),(0,l.kt)("h3",{id:"participant"},"Participant"),(0,l.kt)("p",null,"The nodes that host distributed, partitioned resources"),(0,l.kt)("h3",{id:"spectator"},"Spectator"),(0,l.kt)("p",null,"The nodes that observe the current state of each Participant and use that information to access the resources. Spectators are notified of state changes in the cluster (state of a participant, or that of a partition in a participant)."),(0,l.kt)("h3",{id:"controller"},"Controller"),(0,l.kt)("p",null,"The node that observes and controls the Participant nodes. It is responsible for coordinating all transitions in the cluster and ensuring that state constraints are satisfied while maintaining cluster stability."),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Pinot Servers are modeled as Participants, more details about server nodes can be found in ",(0,l.kt)("a",{parentName:"li",href:"../../docs/components/server"},"Server")),(0,l.kt)("li",{parentName:"ul"},"Pinot Brokers are modeled as Spectators, more details about broker nodes can be found in ",(0,l.kt)("a",{parentName:"li",href:"../../docs/components/broker"},"Broker")),(0,l.kt)("li",{parentName:"ul"},"Pinot Controllers are modeled as Controllers, more details about controller nodes can be found in ",(0,l.kt)("a",{parentName:"li",href:"../../docs/components/controller"},"Controller"))),(0,l.kt)("h2",{id:"logical-view"},"Logical view"),(0,l.kt)("p",null,"Another way to visualize the cluster is a logical view, wherein a cluster contains ",(0,l.kt)("a",{parentName:"p",href:"../../docs/components/segments"},"tenants"),", tenants contain ",(0,l.kt)("a",{parentName:"p",href:"../../docs/components/tables"},"tables"),", and tables contain ",(0,l.kt)("a",{parentName:"p",href:"../../docs/components/segments"},"segments"),"."),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"Logical View",src:r(664).Z})),(0,l.kt)("h2",{id:"setup-a-pinot-cluster"},"Setup a Pinot Cluster"),(0,l.kt)("p",null,"Typically, there is only cluster per environment/data center. There is no needed to create multiple Pinot clusters since Pinot supports the concept of ",(0,l.kt)("a",{parentName:"p",href:"../../docs/components/tenants"},"tenants"),"."),(0,l.kt)("p",null,"At LinkedIn, the largest Pinot cluster consists of 1000+ nodes."),(0,l.kt)("p",null,"To setup a Pinot cluster, we need to first start Zookeeper:"),(0,l.kt)(i.Z,{className:"Install",defaultValue:"launcher",values:[{label:(0,l.kt)(o.Fragment,null,(0,l.kt)("i",{className:"Using docker images"})," Using docker images"),value:"docker"},{label:(0,l.kt)(o.Fragment,null,(0,l.kt)("i",{className:"Using launcher scripts"})," Using launcher scripts"),value:"launcher"}],mdxType:"Tabs"},(0,l.kt)(A.Z,{value:"docker",mdxType:"TabItem"},(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"Create a Network\nCreate an isolated bridge network in docker")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"docker network create -d bridge pinot-demo\n")),(0,l.kt)("ol",{start:2},(0,l.kt)("li",{parentName:"ol"},"Start Zookeeper")),(0,l.kt)("p",null,"Start Zookeeper in daemon."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n    --network=pinot-demo \\\n    --name pinot-zookeeper \\\n    --restart always \\\n    -p 2181:2181 \\\n    -d zookeeper:3.5.6\n")),(0,l.kt)("ol",{start:3},(0,l.kt)("li",{parentName:"ol"},"Start Zookeeper UI\nStart  ZKUI to browse Zookeeper data at http://localhost:9090.")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n    --network pinot-demo --name=zkui \\\n    -p 9090:9090 \\\n    -e ZK_SERVER=pinot-zookeeper:2181 \\\n    -d qnib/plain-zkui:latest\n")),(0,l.kt)("ol",{start:4},(0,l.kt)("li",{parentName:"ol"}))),(0,l.kt)(A.Z,{value:"launcer",mdxType:"TabItem"},(0,l.kt)("p",null,"Download Pinot Distribution using instructions in Download"),(0,l.kt)("p",null,"Start Zookeeper"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"bin/pinot-admin.sh StartZookeeper\n")),(0,l.kt)("ol",{start:2},(0,l.kt)("li",{parentName:"ol"},"Start Zooinspector")),(0,l.kt)("p",null,"Install ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/jfim/zooinspector"},"zooinspector")," to view the data in Zookeeper, and connect to localhost:2181"))),(0,l.kt)("p",null,"Once we've started Zookeeper, we can start other components to join this cluster. If you're using docker, pull the latest ",(0,l.kt)("inlineCode",{parentName:"p"},"apachepinot/pinot")," image."),(0,l.kt)("h3",{id:"using-docker-images"},"Using docker images"),(0,l.kt)("h4",{id:"pull-pinot-docker-image"},"Pull pinot docker image"),(0,l.kt)("p",null,"(Optional) You can also follow the instructions here to build your own images.",(0,l.kt)("br",null)),(0,l.kt)("p",null,"You can try out pre-built Pinot all-in-one docker image."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sql"},"export PINOT_VERSION=0.3.0-SNAPSHOT\nexport PINOT_IMAGE=apachepinot/pinot:${PINOT_VERSION}\ndocker pull ${PINOT_IMAGE}\n")),(0,l.kt)("p",null,"To start other components to join the cluster"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Start Controller"),(0,l.kt)("li",{parentName:"ul"},"Start Broker"),(0,l.kt)("li",{parentName:"ul"},"Start Server")),(0,l.kt)("p",null,"Explore your cluster via Pinot Data Explorer"))}f.isMDXComponent=!0},4184:function(e,t){var r;!function(){"use strict";var n={}.hasOwnProperty;function a(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)){if(r.length){var l=a.apply(null,r);l&&e.push(l)}}else if("object"===o)if(r.toString===Object.prototype.toString)for(var i in r)n.call(r,i)&&r[i]&&e.push(i);else e.push(r.toString())}}return e.join(" ")}e.exports?(a.default=a,e.exports=a):void 0===(r=function(){return a}.apply(t,[]))||(e.exports=r)}()},6010:function(e,t,r){"use strict";function n(e){var t,r,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(r=n(e[t]))&&(a&&(a+=" "),a+=r);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}t.Z=function(){for(var e,t,r=0,a="";r<arguments.length;)(e=arguments[r++])&&(t=n(e))&&(a&&(a+=" "),a+=t);return a}},664:function(e,t,r){"use strict";t.Z=r.p+"assets/images/ClusterLogical-a82f8d136804e81aa069c9cb7f1f53ec.png"},817:function(e,t){"use strict";t.Z="data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCAC9ASMDASIAAhEBAxEB/8QAHQABAAMAAwEBAQAAAAAAAAAAAAYHCAEEBQMCCf/EAFUQAAAFAgMDBQkLCQUFCQAAAAABAgMEBQYHERUSEyEIFFZhYhgiMVKUlqHS1BcjMjhBUViks7XVFjdXZ3V3k7TjCXSio9MkM0KlsUNEU2Nxc4GRsv/EABwBAQABBQEBAAAAAAAAAAAAAAAHAgMEBQYBCP/EADkRAAIBAQMICAYCAgIDAAAAAAABAgMEBRESFCExUaGx0RNBUlNhYnGRBhUWF8HwMoEiMwfxNELh/9oADAMBAAIRAxEAPwD+qYAAAAAAAAAAAAAAAAAAAAAArLlKJ28FbhR4xwi+uMizRXHKHRvMIa0jxnoBfXWBnXXot1HHtx4ow7w/8Srh2ZcGYa01XzGGmq+YxL9L7IaX2R9EdPR7K9kQV0VbtP3ZENNV8xhpqvmMS/S+yGl9kOno9leyHRVu0/dkQ01XzGGmq+YxL9L7IaX2Q6ej2V7IdFW7T92XbyNWTYhXWg//ABYZ/wCF0aQFAclJjm5XU3ll38I/Q8L/ABBHxS1K967WrFcETP8ADqauuinrw/LAAA0BugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr7HtG8wtqaPGlU4vrzAsEQTG5G8w5mI8afSy+vxxl3e8LXSfmjxRjWxY2aovK+BmKsuUq3qTMrtcnMQKfAZXIlSX1khtltJGalKUfAiIiEIh40YYS2KlIfqdTpqaXS3626mqUOdBcdgMp2nZDKH2UKfQksjPdkoyzLhxLOX8oWxq/dmENdpNr03UKo2qHUGIRqJPPOay2ZKo+Z8M3Esqb45Ee1xMvCK+xPuio4tWFeVFsnCy5nUIsavb6ZV7dlwZTU12KbbMGI282lbzzhmvb3ZKSRISWZmoiEm2i9qlOTUGtCx1N4vT49Wj3I7oXZCpFOSevalhq8Ov8ABabVPQ80l5os0OJJSTyyzI+JDq1hyl0CnPVetTGocOPs71908kIzUSSzPrMyL/5FNMR7qhXHGsU7Ju9yb7p0asuSkUeScFulqYSonjlbG52drvDSStpKtrMiIjMVuxhhVJ9p3pRTw5rtabXRClzJU62Z8KpHMZnsrKNKQpS2KnKJs3jTIjZmaWzLwOJztTv2aX+MdOnr61/RdhcsW/8AKWjR1dXua50rshpXZGa6JYd6O44JlHDqsKaV4MzKfIbs2obabcShG7ZOorlNxWY3N82lxza3iXDP3tS8jF4cmjDRFmYT0k5dHnwa1VG+d1Yp5u85U/tKIiWTnfJJKdlKU5ERJIiIheoXzOtPJccFp047MPDXpLVa6YUo5Sli9HVt/wCjQXJvY5vMulvLLhBP0PC7hUWBbHN6zdDeWXvcA/txboj2/Z9JeFSW3DgjurmjkWGnHw/LAAA1BswAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhWMKN5YrqPGqlJL/mMcTURDFRG8tFKPGrFHL/AJlGGRZHhaIPxXEs2hY0ZrwfAgml9QaX1CY6UfihpR+KOm+YeJzuYkO0vqDS+oTHSj8UNKPxQ+YeIzEh2l9QaX1CY6UfihpR+KHzDxGYnmYUsc3ua528v+wp5/bizBBLFY5veVzN5f8Adacf8wJ2OevCfSWiUtuHBG9sUcihGOzHiwAAMIywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjl/02pVS3Ob0mEcuSzUKdMJgnEoNxDE1l5ZEpRkkj2W1ZZn4RIwFUJunJTXUUyipxcX1kN1a5/0cVLy+H/qjnVrn/RxUvL4f+qJiAvZx5Vv5lvoVte7kQ3Vrn/RxUvL4f+qIrhZjLExmsKk4mYfWVVZ9v1tDq4Uhx+Owpwm3VtKzQ4slJyW2ouJfJmLcGZP7NP4kOGH92qP3lKDOPKt/MdCtr3ci6tWuf9HFR8vh/wCqGrXP+jio+Xw/9UTEAzjyrfzHQra93IiVpQ6z+UVbrNToT1Mbmx4bTSHXmnDUps3tr/dqVw79Phy8PUJaAC1Um6ksplyEVBYIAACgqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzJ/Zp/Ehwx/u1R+8pQ02Mx/2aXxIcMf7vUfvOUANOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK1uLHWiUO7apZlPsq9Lin0VLB1BdFoypDMdTze8bQpZqSRqNBkrhmXEuOeZEBZQCqvd9/Urir5uf1A9339SuKvm5/UAFqgKq9339SuKvm5/UD3ff1K4q+bn9QAWqAqr3ff1K4q+bn9QPd9/Urir5uf1ABaoCqvd9/Urir5uf1A9339SuKvm5/UAFqgKHuPlawLerlNtpOAeMdTq1ViS50eHCtxnenHjLYQ87k5IR3qVSmEmZZ8XE/OOv3WlV+iXj/wCbUP2wAaAAZ/7rSq/RLx/82oftgd1pVfol4/8Am1D9sAGgBmP+zR+JDhl/7FS+85Q9zutKr9EvH/zah+2CqORzfeJuBXJssrCu7+SpjDKq1DYlc4dgQaYbCt9LefRs72c24Rkh1JGSkJMjIyy4ADa4Cju6Xun6JOOHkFG/Eg7pe6fok44eQUb8SAF4gKO7pe6fok44eQUb8SDul7p+iTjh5BRvxIAXiAoiLyqZ0i6Idmv8mbGKFV6hAl1OLHkw6QjfRozkdt9aT1Ey7xcuORkZ5++FlnkeUi9266fo14q/w6N+IAC1QFVe7ddP0a8Vf4dG/EA9266fo14q/wAOjfiAAtUBVXu3XT9GvFX+HRvxAPduun6NeKv8OjfiAAtUBVXu3XT9GvFX+HRvxAPduun6NeKv8OjfiAAtUBVXu3XT9GvFX+HRvxAPduun6NeKv8OjfiAAtUBXFo40IuW942H9Zw1vG0qrOpUysQtbahE3JjxXozT+wqNJeyUlU2PwUScyXwzyMWOAAAAAAAAAAAAAqrDT89eMX9+on3a2LVFVYafnrxi/v9F+7GgBaoAAAAAAAAAAAAAAqq4/jT4efu/vL7xtwWqKquP40+Hn7v7y+8bcFqgAAAAAAAAAAAAAAAKquP402Hn7v7y+8bcFqiqrj+NNh5+7+8vvG3BaoAAAAAAAAAAAAAAACqrj+NNh5+7+8vvG3Baoqq4/jTYefu/vL7xtwWqAAAAAAAAAAAAAqrDP89WMf7Qov3Y0LDuS4aNaNu1S67imlDpVFhP1GdINClkzHZQbji9lJGo8kpUeREZnlwIxnnDDlC4HvYy3u7ExTtyX+XNZocS3UxJyH11J06a0kyaQ3moySrvVqMiJCuCjSfAAaYAAAAAAAAAAAAAAFVXH8afDz9395feNuC1Rji8+WxyaqTj7RbsqmIzMNmzrXvSgVeFJiPtT2ajqdCS3HKKtBOmtzm7xoIk8SbWfDZVs7BiSm5sRmayl5LchtLqEvMracIlFmRKQsiUhXHilREZHwMiMAfYAAAAAAAAAAAAAAVVcfxpsPP3f3l9424LVGOLz5bHJqpOPlFuyqYjMw2bOte9KBV4UmI+1PZqOp0JLccoq0E6a3ObvGgiTxJtZ8NlWzsGJKbmxGZrKXktyG0uoS8ytpwiUWZEpCyJSFceKVERkfAyIwB9gAAAAAAAAAAAAABVVx/Gmw8/d/eX3jbgtUY4vPlscmqk4+UW7KpiMzDZs6170oFXhSYj7U9mo6nQktxyirQTprc5u8aCJPEm1nw2VbOwYkpubEZmspeS3IbS6hLzK2nCJRZkSkLIlIVx4pURGR8DIjAH2AAAAAAAVx3RODHTmN5M/6gd0Tgx05jeTP+oMQM03eMoXl8JJH6B+9K6hLtP/AI8u+cFJ156V4ciMKnx1bYTcVRjoe1m2X+UFglJZcjSb0hutOpNDja4rykrSZZGRkbeRkZfIMJckjk94K4Ccq7ELFaq3VDVbdNWpvD41JW5k3MSan1mkiNaFsIM4xGsi2yccURZbJj1NK6g0rqFf26u7v57uRR9eW7uY+7Nud0Tgx05jeTP+oHdE4MdOY3kz/qDEeldQaV1B9uru7+e7kPry3dzH3Zu+3MZMNLuq7NBty6WZs+QSjbZQw6RmSUmpR5qQRFkRH4TE0GKuTbD5tjFRlZeFqWX+QsbVEf8AxLdFG5bbmtCTkslPF4deOw7e4Lzq3vY85qxUXi1gvADrVKow6RTpVWqL5MxITK5D7hkZkhtCTUpWRcTyIjPgOyI1ib+ba7P2HP8A5dY0VOKnNRfWzczeTFtEd7onBjpzG8mf9QO6JwY6cxvJn/UGI9K6g0rqEu/bq7+/nu5EX/Xlu7mPuz1cSMBOTzfnLdtjlLqvujptyMwmo12mKjyd5Kq8bJMVaUk3sbtXvalkfhNlWee9zLY/dE4MdOY3kz/qDEeldQaV1B9uru7+e7kPry3dzH3ZtzuicGOnMbyZ/wBQO6JwY6cxvJn/AFBiPSuoNK6g+3V3d/PdyH15bu5j7s3vaeKlgX1UHaValxtVCUyychxtDLqdlslEk1ZqSReFSS+fiJYMl8kiLzbESqcPhUVz7dka0Ec/EF2Urot87JRk5RWGl69Kx6jvLkvCpelijaqsUm8dC8HgB51w3DR7Vo8iv1+amJAiEk3nlIUokbSiSXBJGfhUReD5R6IrflEp28G7iR4yYxfWWhrrHRjaLRToy1Skl7vAz7TVdChOrHXFN+yOe6JwY6cxvJn/AFA7onBjpzG8mf8AUGI9K6g0rqEr/bq7u/nu5EafXlu7mPuz1cSMBOTzfnLdtjlLqvujptyMwmo12mKjyd5Kq8bJMVaUk3sbtXvalkfhNlWee9zLY/dE4MdOY3kz/qDEeldQaV1B9uru7+e7kPry3dzH3ZtzuicGOnMbyZ/1A7onBjpzG8mf9QYj0rqDSuoPt1d3fz3ch9eW7uY+7P6AWfiJZl/FLO0a43USg7vnGw24jY29rZ+Gks89hXg+YSMZt5HMfm6rvb+fTz/mBpIRpfdgp3Zb6lkpNuMWtL16kyQbotk7wsVO01Fg5LUvVgeLdd423ZFNRWLpqiYENbyWEuqbWst4ZGZF3pGZcEnx8HAe0KW5WTW+wzit+NWGPs3RYuyywttspWabwUpJNrxLt4WiVkstSvBYuKb9iRd0Tgx05jeTP+oHdE4MdOY3kz/qDEeldQaV1CUvt1d3fz3ciOfry3dzH3Z6uJGAnJ5vzlu2xyl1X3R025GYTUa7TFR5O8lVeNkmKtKSb2N2r3tSyPwmyrPPe5lsfuicGOnMbyZ/1BiPSuoNK6g+3V3d/PdyH15bu5j7s253RODHTmN5M/6gd0Tgx05jeTP+oMR6V1BpXUH26u7v57uQ+vLd3Mfdm3e6IwZ6cxvJn/UAYQmNbiQtrxcv+gDlrR8M2WjWnTU5NJtdXU/Q6mz35XrUYVHFJtJ9fWvUnVMpu8psReXwmGz/AMJDs6V1CKNYxQINPkHR7Auu4qVbbTcetVelx4648N1LSVOoShbyHn1NkZGsmW15cS4qI0lYH5SWWVWg0Bd1Uhuq1NgpMKnuTW0SpDRlmS0MqMlqLLPwF8hjvKN7U3FRUtWHL+zha12TU3Jx14nlaV1BpXUPvNv/AA2gx6pIcvigunRYTlRnMs1Flx1iOjwuKQSsyLPhmZZZmRD6Ua+MPq9Bg1Cm3hRnEVGGU6Og5zROKZ3e8NWztZkSUEZq+YiPPwC4r1pt4ZSx9S38tnhjkv2OppXUGldQ/buIFjuRaLPotZi12HXaumiRpVJksymUyVNuOd+tK8iIiaVnlmZGZcPm/Ns4h2Jc9CtetIrkOmLvCCzUKTT6jKZZmPtupJSUpa2z2lFnkZINRZ/KY8V7U28MpfuHND5ZNLHJ/f1E5wMh82xZoS8vCmUX1dwa4GU8Hatb0rGCj0um1ynyp0Q5fOIzEpDjrOTDqT20JPNPfJUniXhIy8JDVgjL4vrKveCmn/6riyRPhek6NgyX2n+AI1ib+be6/wBhzvsFiSiNYmfm3uv9hzvsFjm6H+2PquJ0FX+D9DGJUrvS4fIOdK6hL0UrvC735BW1Mxgo1YqcdEGzLndoUyquUSPcKIzC4K5jb6o6kGlLpyEI3qFIJxTRIzL4WXETlO9YU8FJ6yG43bKpi4rUe1pXUGldQ9huv2c9PqVKZuqjLm0do3qjGTPaN2G2RZmt5G1m2ki8JqIiHEO4bMqMeoS6fddFlMUps3Z7jM9paIiC281OmSsmy97c4qyLvFfMY9+Zx7RT8ulsPI0rqDSuoe0zWrTk1w7Zj3LSXawTJSdPRNaVJ3RlmTm6JW1smRkeeWWRj7UWfbtysOSrcrlOqrLSkpW5ClNvpSpSErSRmgzIjNC0qL5yUR+AyHqvOL0Jj5fJaWibcmiLzbEabw+FRHvt2BpwZ6wJi82xHf4ZbVEkfbsDQoin4qqdLec5+C4EmfDcOju6EfXiBXuPydvCWuI8Y4hfWmhYQgWOadvC+rI8Z2EX1tkai73hbKT80eKNpbVjZqi8r4GStK6g0rqEnqjTFJpsuqyW1qahsOSHCQRGo0oSajIszIs8i+cVzamNFFuOdb8Sp2Tc9ssXXAcqVGm1dMLm8tlDJPq76PIdNsyaPbycJHAj+UshNU72hTkoyelkQwuyc05RWo9/SuoNK6h3JN74bwozM2Zf1tsR5Mk4bLrtVjpQ7IIiM2kqNeSlkSknslx74uHEcxbstp+sVuiyZSYLlCnRaa87McbaaekSGW3mkNKNXfGZOpTkZEZqzIiPgZ+/NYaspfuk8+Wz15J0tK6g0rqHrN3HZTz9Vis3bRFvUJCnao2moMmqAhJGalPltZtEREZmasssjHoUxVKrcXn1GqMSfG21tb6K8l1G2hRpWnaSZlmlRGky+QyMjFSvKMtTPHd7WtFmclePzeddqMvC3Tj9MkaAFIcnWPzatXW3llnHpp/4pQu8RF8ST6S9KstrXBEpXDDIu6lHwfFgVDynGt9YVPb8asM/ZPC3hVnKIa31o0pv560z9i8Ma5pZF4UZbJLiZF6xyrFVXlfAzBpXUGldQ9G/7gpeHNmVi+K1DmSYNFiqlvsw20rfWlPyISpSSNXUZkItXcabCoVHw/ra01CZHxJnwIFGKK0hSknLJOw68SllsNpNxtKzLaMjWkiIxMU73p03hOWGGnfhxIohddSok4xx/cT2NK6g0rqH1av6xG6bFqNbuSk0PnitlpipVOK04o96ttOWy4pJ7Sm15ZKPPIy8JGRfeZd9pUjWXrkq8GhRKJNagPTKlOjMMLccYbeTko3O94OkWy4SFGZGZJNJpUqr5rDDHKPPls8cMk6eldQaV1D0qnddh0VEZys3pQICJiGnIypVSZaJ5LpmTakGpRbRKNKtky8OR5Z5D39K7IqV5RloTKXYGtLRS9xtbisyGvF2P/wQDu321uLqnNZfB3X2aQHN15ZdWUtrfE6uzRyaMI7EuB8bGo+NOGdsV607OwzduBVxTZFctyvFPiNQIipyUurTOQ46l8ty8tw/e23NtGyRZHmRfK4MGr8kXLcttOWC7VX7nu6hXCzfCXYjaIUWIUE3kKSp0pCHGzivk0htCkHv05mRbwassam7yybfXs/CpUQ/B/5KR7mldn0DRznD+Dk8F6aNa2ePr4maoSTy1FYv18OXoY1gcnK5otrWfCjWVBi1KOxdTVXcJcclEc5qRudtaVGbhLcUyZ5bWWRZ5bPDzmeTvd1asu7ZkzDduBXJ9tWzAhRZb8Q3ZBQS2pcHeNuLQ2h40G2o9okqJ0jM+HDbeldn0BpXZ9Aoxo6v3Vhs2FWFXX+68eJkCm4T3tXr6axBjYbSrUgSbnoj6qPKkQkusxoUGY27MWmO6tvNS5LTRJStSzQygzSXyVXTuTBjDEpEK3KzblyuKrVs23TFKpc2hpj0x2GwlDzUl+S09Ia3bqVPIVE2iUpZ5ZK4j+ieldn0BpXZ9A8l0U9bfXv19R7HpIakurdqKb5NOGzli4lTapUrfjQKjcN316oqkI3anZUZaHjjrUtBmeW7IskmeaflIjzGwxT9Jh82v61l5ZZyJRfVXRcA0F8NOtHJ1ZP5Zu7qTVF5W38ICNYmfm4uv9iTvsFiSiN4l/m4ur9iTvsFjXUP9sfVGwq/wfoUi3Sve0978hDL8fCfEZN4wp9v4VVSzrrRc7Uys3DRq20xbdVp3O9p9xcLnKnHXXo+0RpVHJROqzNwiIlHtBql+9I73/hL5OofvSuz6B3Fa0xrYZT1fv7gcbSs8qWOC1mALZ5NmK0WJJoVToNyvzqLSrmaROfmURqnVGROYfbb3BsslNeN5TqHFlJcQSFIIzNWyRCeXfybbi2rJodjW1Ag0CrUWJa17x2ltNJYpzD7UnaSkj99UokzIx7O0f8Atm14EmY2HpXZ9AaV2fQMePQxjk4v9/8Amj0L8nVlLKwX7+4mJLdwDxFhYvGurUi5XoLN9T7rbqyJNGbphRXTdU0RK3Kqkt0kOFHUyakt7JHkskElIuTk74Wu4a4K2faM+3Y1HqsOkRiqsdndn/t27LfqUtszStRrzzURnn85kL30rs+gNK7PoF2jVp0JZUXp078ORbq051o5Mls3Y8zo4UxebYk5ZZbVDk/zEcXaKqsqLzbEpgsstqhy/wCYjC1RzV81OltTntSOguqHR2ZR8WBCMaE7eHNRR40iCX1xkTcQ3F1O3YctHjTKeX11kYdjeFppvzLiZdpWNCa8HwKNuq3pNRtisU+ExvJEqBIZZRmRbS1NqJJZnwLMzLwjJ9m8ny/GGLOTSsGK1adVoFtyqXXKpVrmjTWqilymrZOLGYblPknblbhzbMmiSlrLjnsjeuldn0BpXZ9A7KtWhXkpSer08Hs4HJ0aU6MXGK1+pi6VghX7Hg0FFJwSRdEd7DpFqrpsV2AhFLqWRqdcd37qEqQ+ayS662a1e8EeSs+PWtvk4YoWXiNSb73ci4maE9RqWcCRJjm3IYKjx4cmrM7ai2ZTTrZ/DMjU0TqUFm4W1trSuz6A0rs+gWsaWKeL0aV+8y5hUwaw16Gfzzt/kzYus2VVLVn21cj1XpFk3HRWZcudRGoFRmzI6m0JjKYaKU8l5ey6pUt1GwpJbRqVmY2Na1mUy17dp1v0ekxqdEgxm2W4sZtKG2yJPEiJPDw//YsbSuz6A0rs+gXLPVp2bTF+5RXpztH8kfvBSPza5roRllnDph/45YtwVrhlH5teNzIyyzp9MP8AzJgsocte0+ktk5bcOCOku2ORZYR2Y8WBW+ObW+oFEby+FW2vsHhZAgWLrW+gW+3l8KttfYPi3d0si1QlsZct0cqzzj4GcMdrFrt44Q3VbFs0/nlUqMBTMVjeIb3izUR5bSzJJeD5TIUhJ5OmKDl3KS5Q2n6DaF2Uhy0lFMZ2jpb1caqVRcNJqI0EyhtlhKDLbUmOeyStos9uaV2fQGldn0Dra1anXllSfh+8f6Ry1KlOjHJivHh/1/bMVUjk3XW/Qq+zclhw5Ex7D2o0KBv3YzplNenz3iaSe2extJcjK2syTxLM80mRGMHsRrav1GIdWwzmXTBiVdLukxpUFb7hOUCmReeoS+8hs1tPxJDWSlpVsuqUnMsjPauldn0BpXZ9At40kkk3ow2dX9FzCo221r9esxPQuTLczdt1qLXbGgyJMrDmdSaew47GdKHNlTp0koDajVklLSXo7ZLLJGTaclcOGk7XoE2FbNJhVJo0y48GO1ISaiUZOJbIlFmRmR8SPiRixdK7PoDSuz6BeoV4UP4MtVaM638jJ2KTW4vuptZfB3P2KAHcxqa3GJlZa8Xm/wDLtgNlGWXFS2ltRyf8dhrTDmm7zD22HNn4VGhH/kIEi0rsjpUG0b+t6h06gQ7vt1yPTIjMNpbtvPmtSG0EhJqMppEZ5EWeRF/6DvaRiP0rtjzdke2jh6lqTm2prX48jpo2fCKTjw5nGldkNK7I50jEfpXbHm7I9tDSMR+ldsebsj20U5z51v5FWbrsvdzONK7IaV2RzpGI/Su2PN2R7aGkYj9K7Y83ZHtoZz51v5DN12Xu5nkyYXNr1tNeWWcuUX1R0WGIjGte6n69S6vXrjpEhmluOuoZh0h2OpaltKb4rXJcLIiWZ/B+TwiXDFtVRVXFp46PyzIs8OjTWGGn8ICN4l/m5ur9iTvsFiSDzbmo/wCUNuVWgc45vqcF+Hvtjb3e8bNG1s5lnlnnlmWfzizSkozi3tRemm4tI8Bmle8o73/hL/oP3pXZBFGxGQgkFdds5JIi427I9tHOkYj9K7Y83ZHto2Gc+db+Rg5uuzw5nGldkNK7I50jEfpXbHm7I9tDSMR+ldsebsj20M58638hm67L3czjSuyGldkc6RiP0rtjzdke2hpGI/Su2PN2R7aGc+db+Qzddl7uZ51Li82xMhcMtqhTf5iKJ8ItRrauJm5W7iuCvU2YpiC9CaahUxyKRE442s1KNb7uf+6IiIiLwmJSMO01FUkmnjoMmhDIi1gBEsUk7dmuo8afTS+usCWjxruoT9x0J2lRZzcN5T0d9t5xg3kJU08h0tpBKSaiM0ZHkovD4RRQkoVYyepNcSurFypyitjPK0rshpXZHOkYj9K7Y83ZHtoaRiP0rtjzdke2jPznzrfyMPN12Xu5nGldkNK7I50jEfpXbHm7I9tDSMR+ldsebsj20M58638hm67L3czjSuyGldkc6RiP0rtjzdke2hpGI/Su2PN2R7aGc+db+Qzddl7uZ1LQj82v2428ss6XSz/zZonAjdtW5WqbWanXa7WYM6RUI8WMlMOAuKhtDKnlEZkt501GZvH8pfBLgJIMK0zVSo5J46uCMqhDIpqL8eIENxIa335NN5Z7Vcb/AJd8TIeDdtAn15inqpdTjwZVOnJmtrkRVSG1GTa0bKkJcbPwOGeZKLwDyzzUKik2e1o5UGkefpXZDSuyOdIxH6V2x5uyPbQ0jEfpXbHm7I9tGdnPnW/kYmbrsvdzONK7IaV2RzpGI/Su2PN2R7aGkYj9K7Y83ZHtoZz51v5DN12Xu5nGldkNK7I50jEfpXbHm7I9tDSMR+ldsebsj20M58638hm67L3czG3KAZ3GLteay+DzX+VaAXre3JcqV+XPNuur4hRWJc7d7xuNRFJbLYbS2WRKkqPwILPMz45gOjoXxY4UoxlPSksdD2ehqalgtDm3GOjHauZ//9k="}}]);
\ No newline at end of file
diff --git a/assets/js/0b8045ed.7bfbaa3d.js.LICENSE.txt b/assets/js/0b8045ed.7bfbaa3d.js.LICENSE.txt
deleted file mode 100644
index 0c20a87..0000000
--- a/assets/js/0b8045ed.7bfbaa3d.js.LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
-  Copyright (c) 2018 Jed Watson.
-  Licensed under the MIT License (MIT), see
-  http://jedwatson.github.io/classnames
-*/
diff --git a/assets/js/0c29b70e.573381c6.js b/assets/js/0c29b70e.573381c6.js
deleted file mode 100644
index 4ef48d1..0000000
--- a/assets/js/0c29b70e.573381c6.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3583],{4137:function(e,t,a){a.d(t,{Zo:function(){return p},kt:function(){return b}});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var s=r.createContext({}),c=function(e){var t=r.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},g=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(a),g=n,b=u["".concat(s,".").concat(g)]||u[g]||m[g]||o;return a?r.createElement(b,i(i({ref:t},p),{},{components:a})):r.createElement(b,i({ref:t},p))}));function b(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=g;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:n,i[1]=l;for(var c=2;c<o;c++)i[c]=a[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}g.displayName="MDXCreateElement"},5822:function(e,t,a){a.r(t),a.d(t,{contentTitle:function(){return s},default:function(){return g},frontMatter:function(){return l},metadata:function(){return c},toc:function(){return p}});var r=a(7462),n=a(3366),o=(a(7294),a(4137)),i=["components"],l={title:"Real-time Analytics with Presto and Apache Pinot",author:"PinotDev",author_title:"Pinot Editorial Team",author_url:"https://medium.com/apache-pinot-developer-blog",author_image_url:"https://www.startree.ai/wp-content/uploads/2021/05/team-xiang-150x150.jpg",description:"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain",keywords:["Pinot","LinkedIn","Trino","Presto","User-Facing Analytics","Real-time data platform"],tags:["Pinot","Presto","Trino","PrestoSQL","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},s=void 0,c={permalink:"/blog/2021/02/02/DevBlog-PrestoPinot",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2021-02-02-DevBlog-PrestoPinot.md",source:"@site/blog/2021-02-02-DevBlog-PrestoPinot.md",title:"Real-time Analytics with Presto and Apache Pinot",description:"Blog gives an overview of our use of Apache Pinot to solve some of biggest challenges around Data Analytics in Large Retail Chain",date:"2021-02-02T00:00:00.000Z",formattedDate:"February 2, 2021",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Presto",permalink:"/blog/tags/presto"},{label:"Trino",permalink:"/blog/tags/trino"},{label:"PrestoSQL",permalink:"/blog/tags/presto-sql"},{label:"DevBlog",permalink:"/blog/tags/dev-blog"},{label:"ThirdEye",permalink:"/blog/tags/third-eye"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.31,truncated:!1,prevItem:{title:"Introduction to Upserts in Apache Pinot",permalink:"/blog/2021/04/08/DevBlog-UpsertsIntro"},nextItem:{title:"Change Data Analysis with Debezium and Apache Pinot",permalink:"/blog/2021/01/08/DevBlog-DebeziumCDC"}},p=[],u={toc:p},m="wrapper";function g(e){var t=e.components,a=(0,n.Z)(e,i);return(0,o.kt)(m,(0,r.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"In this world, most analytics products either focus on ad-hoc analytics, which requires query flexibility without guaranteed latency, or low latency analytics with limited query capability. In this blog, we will explore how to get the best of both worlds using Apache Pinot and Presto."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.startree.ai/blogs/real-time-analytics-with-presto-and-apache-pinot-part-i/"},"Read Part 1 at https://www.startree.ai/blogs/real-time-analytics-with-presto-and-apache-pinot-part-i/")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.startree.ai/blogs/real-time-analytics-with-presto-and-apache-pinot-part-ii/"},"Read Part 2 at https://www.startree.ai/blogs/real-time-analytics-with-presto-and-apache-pinot-part-ii/")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://miro.medium.com/max/1400/0*hJc6aV9aBJaKyXcx",alt:"Real-time Analytics with Presto and Apache Pinot"})))}g.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/11ce4159.1e47a6a8.js b/assets/js/11ce4159.1e47a6a8.js
deleted file mode 100644
index e0a316e..0000000
--- a/assets/js/11ce4159.1e47a6a8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1531],{5034:function(e){e.exports=JSON.parse('{"permalink":"/blog/page/5","page":5,"postsPerPage":10,"totalPages":5,"totalCount":47,"previousPage":"/blog/page/4","nextPage":null,"blogDescription":"Blog","blogTitle":"Blog - Apache Pinot: User-Facing Analytics"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1212.3b4f74bd.js b/assets/js/1212.3b4f74bd.js
deleted file mode 100644
index 8ceb283..0000000
--- a/assets/js/1212.3b4f74bd.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1212],{1212:function(e,s,t){t.r(s)}}]);
\ No newline at end of file
diff --git a/assets/js/166ce901.c8305e79.js b/assets/js/166ce901.c8305e79.js
deleted file mode 100644
index da18955..0000000
--- a/assets/js/166ce901.c8305e79.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9434],{4137:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return f}});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},s=Object.keys(e);for(a=0;a<s.length;a++)n=s[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)n=s[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,s=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(n),g=o,f=u["".concat(l,".").concat(g)]||u[g]||m[g]||s;return n?a.createElement(f,r(r({ref:t},c),{},{components:n})):a.createElement(f,r({ref:t},c))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var s=n.length,r=new Array(s);r[0]=g;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[u]="string"==typeof e?e:o,r[1]=i;for(var p=2;p<s;p++)r[p]=n[p];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}g.displayName="MDXCreateElement"},3221:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return l},default:function(){return g},frontMatter:function(){return i},metadata:function(){return p},toc:function(){return c}});var a=n(7462),o=n(3366),s=(n(7294),n(4137)),r=["components"],i={title:"Apache Pinot\u2122 0.12 - Consumer Record Lag",author:"Mark Needham",author_title:"Mark Needham",author_url:"https://www.linkedin.com/in/markhneedham/",author_image_url:"https://www.datocms-assets.com/75153/1661544338-mark-needham.png",description:"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.",keywords:["Apache Pinot","Apache Pinot 0.11.0","hybrid tables","consumer record lag","Kafka"],tags:["Pinot","Data","Analytics","User-Facing Analytics","consumer record lag","kafka"]},l=void 0,p={permalink:"/blog/2023/03/30/Apache-Pinot-0-12-Consumer-Record-Lag",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2023-03-30-Apache-Pinot-0-12-Consumer-Record-Lag.md",source:"@site/blog/2023-03-30-Apache-Pinot-0-12-Consumer-Record-Lag.md",title:"Apache Pinot\u2122 0.12 - Consumer Record Lag",description:"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka.",date:"2023-03-30T00:00:00.000Z",formattedDate:"March 30, 2023",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Data",permalink:"/blog/tags/data"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"consumer record lag",permalink:"/blog/tags/consumer-record-lag"},{label:"kafka",permalink:"/blog/tags/kafka"}],readingTime:4.55,truncated:!1,prevItem:{title:"Geospatial Indexing in Apache Pinot",permalink:"/blog/2023/05/11/Geospatial-Indexing-in-Apache-Pinot"},nextItem:{title:"Apache Pinot\u2122 0.12 - Configurable Time Boundary",permalink:"/blog/2023/02/21/Apache-Pinot-0-12-Configurable-Time-Boundary"}},c=[{value:"Why do we need this?",id:"why-do-we-need-this",children:[]},{value:"Worked Example",id:"worked-example",children:[]},{value:"Summary",id:"summary",children:[]}],u={toc:c},m="wrapper";function g(e){var t=e.components,n=(0,o.Z)(e,r);return(0,s.kt)(m,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://youtu.be/JJEh_kBfJts"},(0,s.kt)("img",{parentName:"a",src:"https://i3.ytimg.com/vi/JJEh_kBfJts/maxresdefault.jpg",alt:"Watch the video"}))),(0,s.kt)("p",null,"The Apache Pinot community recently released version ",(0,s.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/releases/0.12.0"},"0.12.0"),", which has lots of goodies for you to play with. I\u2019ve been exploring and writing about those features in a series of blog posts."),(0,s.kt)("p",null,"This post will explore a new API endpoint that lets you check how much Pinot is lagging when ingesting from Apache Kafka."),(0,s.kt)("h2",{id:"why-do-we-need-this"},"Why do we need this?"),(0,s.kt)("p",null,"A common question in the Pinot community is how to work out the consumption status of real-time tables.\xa0"),(0,s.kt)("p",null,"This was a tricky one to answer, but Pinot 0.12 sees the addition of a new API that lets us see exactly what\u2019s going on."),(0,s.kt)("h2",{id:"worked-example"},"Worked Example"),(0,s.kt)("p",null,"Let\u2019s have a look at how it works with help from a worked example.\xa0"),(0,s.kt)("p",null,"First, we\u2019re going to create a Kafka topic with 5 partitions:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"docker exec -it kafka-lag-blog kafka-topics.sh \\\n--bootstrap-server localhost:9092 \\\n--partitions 5 \\\n--topic events \\\n--create \n")),(0,s.kt)("p",null,"We\u2019re going to populate this topic with data from a data generator, which is shown below:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-python"},'import datetime, uuid, random, json, click, time\n\n@click.command()\n@click.option(\'--sleep\', default=0.0, help=\'Sleep between each message\')\ndef generate(sleep):\n    while True:\n        ts = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%S.%fZ")\n        id = str(uuid.uuid4())\n        count = random.randint(0, 1000)\n        print(json.dumps({"tsString": ts, "uuid": id, "count": count}))\n        time.sleep(sleep)\n\nif __name__ == \'__main__\':\n    generate()\n')),(0,s.kt)("p",null,"We can see an example of the messages generated by this script by running the following:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"python datagen.py --sleep 0.01 2>/dev/null | head -n3 | jq -c\n")),(0,s.kt)("p",null,"You should see something like this:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{"tsString":"2023-03-17T12:10:03.854680Z","uuid":"f3b7b5d3-b352-4cfb-a5e3-527f2c663143","count":690}\n{"tsString":"2023-03-17T12:10:03.864815Z","uuid":"eac57622-4b58-4456-bb38-96d1ef5a1ed5","count":522}\n{"tsString":"2023-03-17T12:10:03.875723Z","uuid":"65926a80-208a-408b-90d0-36cf74c8923a","count":154}\n')),(0,s.kt)("p",null,"So far, so good. Let\u2019s now ingest this data into Kafka:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"python datagen.py --sleep 0.01 2>/dev/null |\njq -cr --arg sep \xf8 '[.uuid, tostring] | join($sep)' |\nkcat -P -b localhost:9092 -t events -K \n")),(0,s.kt)("p",null,"Next we\u2019re going to create a Pinot schema and table. First, the schema config:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n    "schemaName": "events",\n    "dimensionFieldSpecs": [{"name": "uuid", "dataType": "STRING"}],\n    "metricFieldSpecs": [{"name": "count", "dataType": "INT"}],\n    "dateTimeFieldSpecs": [\n      {\n        "name": "ts",\n        "dataType": "TIMESTAMP",\n        "format": "1:MILLISECONDS:EPOCH",\n        "granularity": "1:MILLISECONDS"\n      }\n    ]\n  }\n')),(0,s.kt)("p",null,"And now, the table config:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n    "tableName": "events",\n    "tableType": "REALTIME",\n    "segmentsConfig": {\n      "timeColumnName": "ts",\n      "schemaName": "events",\n      "replication": "1",\n      "replicasPerPartition": "1"\n    },\n    "tableIndexConfig": {\n      "loadMode": "MMAP",\n      "streamConfigs": {\n        "streamType": "kafka",\n        "stream.kafka.topic.name": "events",\n        "stream.kafka.broker.list": "kafka-lag-blog:9093",\n        "stream.kafka.consumer.type": "lowlevel",\n        "stream.kafka.consumer.prop.auto.offset.reset": "smallest",\n        "stream.kafka.consumer.factory.class.name": "org.apache.pinot.plugin.stream.kafka20.KafkaConsumerFactory",\n        "stream.kafka.decoder.class.name": "org.apache.pinot.plugin.stream.kafka.KafkaJSONMessageDecoder",\n        "realtime.segment.flush.threshold.rows": "10000000"\n      }\n    },\n    "ingestionConfig": {\n      "transformConfigs": [\n        {\n          "columnName": "ts",\n          "transformFunction": "FromDateTime(tsString, \'YYYY-MM-dd\'\'T\'\'HH:mm:ss.SSSSSS\'\'Z\'\'\')"\n        }\n      ]\n    },\n    "tenants": {},\n    "metadata": {}\n  }\n')),(0,s.kt)("p",null,"We can create both the table and schema using the ",(0,s.kt)("em",{parentName:"p"},"AddTable")," command:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},'docker run \\\n  --network lag_blog \\\n  -v $PWD/config:/config \\\n  apachepinot/pinot:0.12.0-arm64 AddTable \\\n  -schemaFile /config/schema.json \\\n  -tableConfigFile /config/table.json \\\n  -controllerHost "pinot-controller-lag-blog" \\\n  -exec\n')),(0,s.kt)("p",null,"Now let\u2019s call the /consumingSegmentsInfo endpoint to see what\u2019s going on:"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},'curl "http://localhost:9000/tables/events/consumingSegmentsInfo" 2>/dev/null | jq')),(0,s.kt)("p",null,"The output of calling this end point is shown below:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "_segmentToConsumingInfoMap": {\n    "events__0__0__20230317T1133Z": [\n      {\n        "serverName": "Server_172.29.0.4_8098",\n        "consumerState": "CONSUMING",\n        "lastConsumedTimestamp": 1679052823350,\n        "partitionToOffsetMap": {\n          "0": "969"\n        },\n        "partitionOffsetInfo": {\n          "currentOffsetsMap": {\n            "0": "969"\n          },\n          "latestUpstreamOffsetMap": {\n            "0": "969"\n          },\n          "recordsLagMap": {\n            "0": "0"\n          },\n          "availabilityLagMsMap": {\n            "0": "26"\n          }\n        }\n      }\n    ],\n\u2026\n}\n')),(0,s.kt)("p",null,"If we look under ",(0,s.kt)("em",{parentName:"p"},"partitionOffsetInfo"),", we can see what\u2019s going on:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"currentOffsetsMap is Pinot\u2019s current offset"),(0,s.kt)("li",{parentName:"ul"},"latestUpstreamOffsetMap is Kafka\u2019s offset"),(0,s.kt)("li",{parentName:"ul"},"recordsLagMap is the record lag"),(0,s.kt)("li",{parentName:"ul"},"availabilityLagMsMap is the time lag")),(0,s.kt)("p",null,"This output is a bit unwieldy, so let\u2019s create a bash function to tidy up the output into something that\u2019s easier to consume:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-python"},'function consuming_info() {\n  curl "http://localhost:9000/tables/events/consumingSegmentsInfo" 2>/dev/null | \n  jq -rc \'[._segmentToConsumingInfoMap | keys[] as $k | (.[$k] | .[] | {\n    segment: $k,\n    kafka: (.partitionOffsetInfo.currentOffsetsMap | keys[] as $k | (.[$k])),\n    pinot: (.partitionOffsetInfo.latestUpstreamOffsetMap | keys[] as $k | (.[$k])),\n    recordLag: (.partitionOffsetInfo.recordsLagMap | keys[] as $k | (.[$k])),\n    timeLagMs: (.partitionOffsetInfo.availabilityLagMsMap | keys[] as $k | (.[$k]))\n})] | (.[0] |keys_unsorted | @tsv), (.[]  |map(.) |@tsv)\'  | column -t\n  printf "\\n"\n\n}\n')),(0,s.kt)("p",null,"Let\u2019s call the function:"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"consuming\\_info")),(0,s.kt)("p",null,"We\u2019ll see the following output:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1680190272-image2.png",alt:"Consumer record lag output",title:"Consumer record lag output"})),(0,s.kt)("p",null,"Now let\u2019s put it in a script and call the watch command so that it will be refreshed every couple of seconds:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-python"},'!#/bin/bash\n\nfunction consuming_info() {\n  curl "http://localhost:9000/tables/events/consumingSegmentsInfo" 2>/dev/null |\n  jq -rc \'[._segmentToConsumingInfoMap | keys[] as $k | (.[$k] | .[] | {\n    segment: $k,\n    kafka: (.partitionOffsetInfo.currentOffsetsMap | keys[] as $k | (.[$k])),\n    pinot: (.partitionOffsetInfo.latestUpstreamOffsetMap | keys[] as $k | (.[$k])),\n    recordLag: (.partitionOffsetInfo.recordsLagMap | keys[] as $k | (.[$k])),\n    timeLagMs: (.partitionOffsetInfo.availabilityLagMsMap | keys[] as $k | (.[$k]))\n})] | (.[0] |keys_unsorted | @tsv), (.[]  |map(.) |@tsv)\'  | column -t\n  printf "\\n"\n}\n\nexport -f consuming_info\nwatch bash -c consuming_info\n\n')),(0,s.kt)("p",null,"Give permissions to run it as a script:"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"chmod u+x watch\\_consuming\\_info.sh")),(0,s.kt)("p",null,"And finally, run it:"),(0,s.kt)("p",null,(0,s.kt)("inlineCode",{parentName:"p"},"./watch\\_consuming\\_info.sh")),(0,s.kt)("p",null,"This will print out a new table every two seconds. Let\u2019s now make things more interesting by removing the sleep from our ingestion command:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"python datagen.py  2>/dev/null |\njq -cr --arg sep \xf8 '[.uuid, tostring] | join($sep)' |\nkcat -P -b localhost:9092 -t events -K\xf8\n")),(0,s.kt)("p",null,"And now if we look at the watch output:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1680190286-image1.png",alt:"Apache Pinot Consumer Record Lag",title:"Apache Pinot Consumer Record Lag"})),(0,s.kt)("p",null,"We get some transitory lag, but it generally goes away by the next time the command is run.\xa0"),(0,s.kt)("h2",{id:"summary"},"Summary"),(0,s.kt)("p",null,"I love this feature, and it solves a problem I\u2019ve struggled with when using my datasets. I hope you\u2019ll find it just as useful."),(0,s.kt)("p",null,"Give it a try, and let us know how you get on. If you have any questions about this feature, feel free to join us on ",(0,s.kt)("a",{parentName:"p",href:"https://stree.ai/slack"},"Slack"),", where we\u2019ll be happy to help you out."))}g.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/17896441.121e6b82.js b/assets/js/17896441.121e6b82.js
deleted file mode 100644
index 57acb16..0000000
--- a/assets/js/17896441.121e6b82.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7918],{8116:function(e,t,a){a.r(t),a.d(t,{default:function(){return Z}});var n=a(7294),r=a(2511),l=a(7130);var i=function(e){var t=e.metadata;return n.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,l.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},n.createElement("div",{className:"pagination-nav__item"},t.previous&&n.createElement(r.Z,{className:"pagination-nav__link",to:t.previous.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(l.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")),n.createElement("div",{className:"pagination-nav__label"},"\xab ",t.previous.title))),n.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t.next&&n.createElement(r.Z,{className:"pagination-nav__link",to:t.next.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(l.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next")),n.createElement("div",{className:"pagination-nav__label"},t.next.title," \xbb"))))},s=a(9962),o=a(7849),c=a(4395);function d(e){var t=e.siteTitle,a=e.versionLabel;return n.createElement(l.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")}function m(e){var t=e.siteTitle,a=e.versionLabel;return n.createElement(l.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}function u(e){var t=e.versionLabel,a=e.to,i=e.onClick;return n.createElement(l.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label userd to tell the user that he's browsing an unmaintained doc version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(r.Z,{to:a,onClick:i},n.createElement(l.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}var v=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};var h=function(){var e=(0,s.Z)().siteConfig.title,t=(0,o.gA)({failfast:!0}).pluginId,a=(0,c.J)(t).savePreferredVersionName,r=(0,o.zu)(t),l=(0,o.Jo)(t),i=l.latestDocSuggestion,h=l.latestVersionSuggestion;if(!h)return n.createElement(n.Fragment,null);var f=null!=i?i:v(h);return n.createElement("div",{className:"alert alert--warning margin-bottom--md",role:"alert"},n.createElement("div",null,"current"===r.name?n.createElement(d,{siteTitle:e,versionLabel:r.label}):n.createElement(m,{siteTitle:e,versionLabel:r.label})),n.createElement("div",{className:"margin-top--md"},n.createElement(u,{versionLabel:h.label,to:f.path,onClick:function(){return a(h.name)}})))},f=a(4175);function p(e){var t=e.lastUpdatedAt,a=e.formattedLastUpdatedAt;return n.createElement(l.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:n.createElement("b",null,n.createElement("time",{dateTime:new Date(1e3*t).toISOString()},a))}}," on {date}")}function E(e){var t=e.lastUpdatedBy;return n.createElement(l.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:n.createElement("b",null,t)}}," by {user}")}function b(e){var t=e.lastUpdatedAt,a=e.formattedLastUpdatedAt,r=e.lastUpdatedBy;return n.createElement(n.Fragment,null,n.createElement(l.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&a?n.createElement(p,{lastUpdatedAt:t,formattedLastUpdatedAt:a}):"",byUser:r?n.createElement(E,{lastUpdatedBy:r}):""}},"Last updated{atDate}{byUser}"),!1)}var g=a(5389),_=a(7680),L=a(4145),N=a(6010),U={docItemContainer:"docItemContainer_oiyr",lastUpdated:"lastUpdated_wj+Z",docItemCol:"docItemCol_zHA2"};var Z=function(e){var t,a=e.content,r=a.metadata,l=a.frontMatter,s=l.image,c=l.keywords,d=l.hide_title,m=l.hide_table_of_contents,u=r.description,v=r.title,p=r.editUrl,E=r.lastUpdatedAt,Z=r.formattedLastUpdatedAt,T=r.lastUpdatedBy,k=(0,o.gA)({failfast:!0}).pluginId,C=(0,o.gB)(k),w=(0,o.zu)(k),y=C.length>1,A=!d&&void 0===a.contentTitle;return n.createElement(n.Fragment,null,n.createElement(f.Z,{title:v,description:u,keywords:c,image:s}),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,N.Z)("col",(t={},t[U.docItemCol]=!m,t))},n.createElement(h,null),n.createElement("div",{className:U.docItemContainer},n.createElement("article",null,y&&n.createElement("span",{className:"badge badge--secondary"},"Version: ",w.label),n.createElement("div",{className:"markdown"},A&&n.createElement(L.N,null,v),n.createElement(a,null)),(p||E||T)&&n.createElement("footer",{className:"row docusaurus-mt-lg"},n.createElement("div",{className:"col"},p&&n.createElement(_.Z,{editUrl:p})),n.createElement("div",{className:(0,N.Z)("col",U.lastUpdated)},(E||T)&&n.createElement(b,{lastUpdatedAt:E,formattedLastUpdatedAt:Z,lastUpdatedBy:T})))),n.createElement(i,{metadata:r}))),!m&&a.toc&&n.createElement("div",{className:"col col--3"},n.createElement(g.Z,{toc:a.toc}))))}},7680:function(e,t,a){a.d(t,{Z:function(){return m}});var n=a(7294),r=a(7130),l=a(7462),i=a(3366),s=a(6010),o="iconEdit_mS5F",c=["className"],d=function(e){var t=e.className,a=(0,i.Z)(e,c);return n.createElement("svg",(0,l.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(o,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))};function m(e){var t=e.editUrl;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener"},n.createElement(d,null),n.createElement(r.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},4145:function(e,t,a){a.d(t,{N:function(){return u},Z:function(){return v}});var n=a(3366),r=a(7462);var l=a(7294),i=a(6010),s=a(7130),o=a(4395),c="enhancedAnchor_WiXH",d="h1Heading_dC7a",m=["id"],u=function(e){var t=Object.assign({},(function(e){if(null==e)throw new TypeError("Cannot destructure "+e)}(e),e));return l.createElement("header",null,l.createElement("h1",(0,r.Z)({},t,{id:void 0,className:d}),t.children))},v=function(e){return"h1"===e?u:(t=e,function(e){var a,r=e.id,d=(0,n.Z)(e,m),u=(0,o.LU)().navbar.hideOnScroll;return r?l.createElement(t,d,l.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:(0,i.Z)("anchor",(a={},a[c]=!u,a)),id:r}),d.children,l.createElement("a",{className:"hash-link",href:"#"+r,title:(0,s.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"#")):l.createElement(t,d)});var t}},5389:function(e,t,a){a.d(t,{Z:function(){return m}});var n=a(7294),r=a(6010);var l=function(e,t,a){var r=(0,n.useState)(void 0),l=r[0],i=r[1];(0,n.useEffect)((function(){function n(){var n=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=a}));if(t){if(t.getBoundingClientRect().top>=a){var n=e[e.indexOf(t)-1];return null!=n?n:t}return t}return e[e.length-1]}();if(n)for(var r=0,s=!1,o=document.getElementsByClassName(e);r<o.length&&!s;){var c=o[r],d=c.href,m=decodeURIComponent(d.substring(d.indexOf("#")+1));n.id===m&&(l&&l.classList.remove(t),c.classList.add(t),i(c),s=!0),r+=1}}return document.addEventListener("scroll",n),document.addEventListener("resize",n),n(),function(){document.removeEventListener("scroll",n),document.removeEventListener("resize",n)}}))},i={tableOfContents:"tableOfContents_vrFS",docItemContainer:"docItemContainer_VKW9"},s="table-of-contents__link",o="table-of-contents__link--active",c=100;function d(e){var t=e.toc,a=e.isChild;return t.length?n.createElement("ul",{className:a?"":"table-of-contents table-of-contents__left-border"},t.map((function(e){return n.createElement("li",{key:e.id},n.createElement("a",{href:"#"+e.id,className:s,dangerouslySetInnerHTML:{__html:e.value}}),n.createElement(d,{isChild:!0,toc:e.children}))}))):null}var m=function(e){var t=e.toc;return l(s,o,c),n.createElement("div",{className:(0,r.Z)(i.tableOfContents,"thin-scrollbar")},n.createElement(d,{toc:t}))}}}]);
\ No newline at end of file
diff --git a/assets/js/17982204.3a7e23e3.js b/assets/js/17982204.3a7e23e3.js
deleted file mode 100644
index 6583056..0000000
--- a/assets/js/17982204.3a7e23e3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7457],{4137:function(e,t,r){r.d(t,{Zo:function(){return f},kt:function(){return m}});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var u=n.createContext({}),s=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},f=function(e){var t=s(e.components);return n.createElement(u.Provider,{value:t},e.children)},d="mdxType",l={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,u=e.parentName,f=c(e,["components","mdxType","originalType","parentName"]),d=s(r),p=i,m=d["".concat(u,".").concat(p)]||d[p]||l[p]||o;return r?n.createElement(m,a(a({ref:t},f),{},{components:r})):n.createElement(m,a({ref:t},f))}));function m(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=p;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c[d]="string"==typeof e?e:i,a[1]=c;for(var s=2;s<o;s++)a[s]=r[s];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}p.displayName="MDXCreateElement"},6177:function(e,t,r){r.r(t),r.d(t,{contentTitle:function(){return u},default:function(){return p},frontMatter:function(){return c},metadata:function(){return s},toc:function(){return f}});var n=r(7462),i=r(3366),o=(r(7294),r(4137)),a=["components"],c={title:"Rest Admin Inerface",sidebar_label:"rest-admin-interface",description:"Pinot Rest Admin Interface",draft:!0},u=void 0,s={unversionedId:"user-guide/rest-admin-interface",id:"user-guide/rest-admin-interface",isDocsHomePage:!1,title:"Rest Admin Inerface",description:"Pinot Rest Admin Interface",source:"@site/docs/user-guide/rest-admin-interface.md",sourceDirName:"user-guide",slug:"/user-guide/rest-admin-interface",permalink:"/docs/user-guide/rest-admin-interface",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/user-guide/rest-admin-interface.md",version:"current",frontMatter:{title:"Rest Admin Inerface",sidebar_label:"rest-admin-interface",description:"Pinot Rest Admin Interface",draft:!0}},f=[{value:"TODO",id:"todo",children:[]}],d={toc:f},l="wrapper";function p(e){var t=e.components,r=(0,i.Z)(e,a);return(0,o.kt)(l,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"todo"},"TODO"))}p.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/17e09a99.8d11a7ad.js b/assets/js/17e09a99.8d11a7ad.js
deleted file mode 100644
index e0e78d7..0000000
--- a/assets/js/17e09a99.8d11a7ad.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7985],{4137:function(e,t,a){a.d(t,{Zo:function(){return p},kt:function(){return d}});var n=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?s(Object(a),!0).forEach((function(t){o(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):s(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,o=function(e,t){if(null==e)return{};var a,n,o={},s=Object.keys(e);for(n=0;n<s.length;n++)a=s[n],t.indexOf(a)>=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n<s.length;n++)a=s[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),c=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,s=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),m=c(a),h=o,d=m["".concat(l,".").concat(h)]||m[h]||u[h]||s;return a?n.createElement(d,r(r({ref:t},p),{},{components:a})):n.createElement(d,r({ref:t},p))}));function d(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var s=a.length,r=new Array(s);r[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[m]="string"==typeof e?e:o,r[1]=i;for(var c=2;c<s;c++)r[c]=a[c];return n.createElement.apply(null,r)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},3659:function(e,t,a){a.r(t),a.d(t,{contentTitle:function(){return l},default:function(){return h},frontMatter:function(){return i},metadata:function(){return c},toc:function(){return p}});var n=a(7462),o=a(3366),s=(a(7294),a(4137)),r=["components"],i={title:"Real-Time Mastodon Usage with Apache Kafka, Apache Pinot, and Streamlit",author:"Mark Needham",author_title:"Developer Advocate",author_url:"https://pinot.apache.org/",author_image_url:"https://pinot.apache.org/authors/pinot_team.jpg",description:"The blog post discusses analyzing user activity and server popularity on Mastodon using Kafka Connect, Parquet, Seaborn, and DuckDB. It explores the potential of using Apache Pinot for real-time data streaming and creating a dashboard. The post provides instructions on ingesting Apache Avro messages into Pinot, creating a Pinot table, and querying the data.",keywords:["Apache Pinot","blog post","analyzing user activity","server popularity","Mastodon","Kafka Connect","Parquet","Seaborn","DuckDB","realtime data streaming","dashboard","Apache Avro messages"],tags:["Pinot","Data","Analytics","User-Facing Analytics","blog post","analyzing user activity","server popularity","Mastodon","Kafka Connect","Parquet","Seaborn","DuckDB","potential","Apache Pinot","realtime data streaming","dashboard","instructions","ingesting","Apache Avro messages","Pinot table","querying data"]},l=void 0,c={permalink:"/blog/2023/06/01/real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2023-06-01-real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit.md",source:"@site/blog/2023-06-01-real-time-mastodon-usage-with-apache-kafka-apache-pinot-and-streamlit.md",title:"Real-Time Mastodon Usage with Apache Kafka, Apache Pinot, and Streamlit",description:"The blog post discusses analyzing user activity and server popularity on Mastodon using Kafka Connect, Parquet, Seaborn, and DuckDB. It explores the potential of using Apache Pinot for real-time data streaming and creating a dashboard. The post provides instructions on ingesting Apache Avro messages into Pinot, creating a Pinot table, and querying the data.",date:"2023-06-01T00:00:00.000Z",formattedDate:"June 1, 2023",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Data",permalink:"/blog/tags/data"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"blog post",permalink:"/blog/tags/blog-post"},{label:"analyzing user activity",permalink:"/blog/tags/analyzing-user-activity"},{label:"server popularity",permalink:"/blog/tags/server-popularity"},{label:"Mastodon",permalink:"/blog/tags/mastodon"},{label:"Kafka Connect",permalink:"/blog/tags/kafka-connect"},{label:"Parquet",permalink:"/blog/tags/parquet"},{label:"Seaborn",permalink:"/blog/tags/seaborn"},{label:"DuckDB",permalink:"/blog/tags/duck-db"},{label:"potential",permalink:"/blog/tags/potential"},{label:"Apache Pinot",permalink:"/blog/tags/apache-pinot"},{label:"realtime data streaming",permalink:"/blog/tags/realtime-data-streaming"},{label:"dashboard",permalink:"/blog/tags/dashboard"},{label:"instructions",permalink:"/blog/tags/instructions"},{label:"ingesting",permalink:"/blog/tags/ingesting"},{label:"Apache Avro messages",permalink:"/blog/tags/apache-avro-messages"},{label:"Pinot table",permalink:"/blog/tags/pinot-table"},{label:"querying data",permalink:"/blog/tags/querying-data"}],readingTime:6.39,truncated:!1,prevItem:{title:"Star-Tree Index in Apache Pinot - Part 3 - Understanding the Impact in Real Customer Scenarios",permalink:"/blog/2023/07/12/star-tree-index-in-apache-pinot-part-3-understanding-the-impact-in-real-customer"},nextItem:{title:"How to Ingest Streaming Data from Kafka to Apache Pinot\u2122",permalink:"/blog/2023/05/30/how-to-ingest-streaming-data-from-kafka-to-apache-pinot"}},p=[{value:"The Existing Solution: Kafka Connect, Parquet, Seaborn and DuckDB\xa0",id:"the-existing-solution-kafka-connect-parquet-seaborn-and-duckdb",children:[]},{value:"Going Real-Time with Apache Pinot\u2122",id:"going-real-time-with-apache-pinot",children:[]},{value:"Setup",id:"setup",children:[]},{value:"Pinot Schema and Table",id:"pinot-schema-and-table",children:[]},{value:"Ingest Data into Kafka",id:"ingest-data-into-kafka",children:[]},{value:"Query Pinot",id:"query-pinot",children:[]},{value:"Streamlit",id:"streamlit",children:[]},{value:"Summary",id:"summary",children:[]}],m={toc:p},u="wrapper";function h(e){var t=e.components,a=(0,o.Z)(e,r);return(0,s.kt)(u,(0,n.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"I recently came across a fascinating blog post written by Simon Aubury that shows ",(0,s.kt)("a",{parentName:"p",href:"https://simonaubury.com/posts/202302_mastodon_duckdb/"},"how to analyze user activity, server popularity, and language usage on Mastodon"),", a decentralized social networking platform that has become quite popular in the last six months.\xa0"),(0,s.kt)("h2",{id:"the-existing-solution-kafka-connect-parquet-seaborn-and-duckdb"},"The Existing Solution: Kafka Connect, Parquet, Seaborn and DuckDB\xa0"),(0,s.kt)("p",null,"To start, Simon wrote a listener to collect the messages, which he then published into Apache Kafka\xae. He then wrote a Kafka Connect configuration that consumes messages from Kafka and flushes them after every 1,000 messages into Apache Parquet files stored in an Amazon S3 bucket.\xa0"),(0,s.kt)("p",null,"Finally, he queried those Parquet files using DuckDB and created some charts using the Seaborn library, as reflected in the architecture diagram below:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1685637607-image1.png",alt:"Flowchart of data collection to data processing",title:"Flowchart of data collection to data processing"})),(0,s.kt)("p",null,"Fig: ",(0,s.kt)("a",{parentName:"p",href:"https://simonaubury.com/posts/202302_mastodon_duckdb/"},"Data Collection Architecture")),(0,s.kt)("p",null,"The awesome visualizations that Simon created make me wonder whether we can change what happens downstream of Kafka to make our queries even more real-time. Let\u2019s find out!"),(0,s.kt)("h2",{id:"going-real-time-with-apache-pinot"},"Going Real-Time with Apache Pinot\u2122"),(0,s.kt)("p",null,"Now ",(0,s.kt)("a",{parentName:"p",href:"https://startree.ai/resources/what-is-apache-pinot"},"Apache Pinot")," comes into the picture. Instead of using Kafka Connect to batch Mastodon toots into groups of 1,000 messages to generate Parquet files, we can stream the data immediately and directly, toot-by-toot into Pinot and then build a real-time dashboard using Streamlit:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1685637507-image4.png",alt:"Data collection in Mastodon, followed by processing in Apache Kafka, Apache Pinot, and Streamlit",title:"Data collection in Mastodon, followed by processing in Apache Kafka, Apache Pinot, and Streamlit"})),(0,s.kt)("h2",{id:"setup"},"Setup"),(0,s.kt)("p",null,"To follow along, first clone my fork of Simon\u2019s GitHub repository:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"git clone git@github.com:mneedham/mastodon-stream.git\ncd mastodon-stream\n")),(0,s.kt)("p",null,"Then launch all of the components using Docker Compose:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"docker-compose up\n")),(0,s.kt)("h2",{id:"pinot-schema-and-table"},"Pinot Schema and Table"),(0,s.kt)("p",null,"Similar to what Simon did with DuckDB, we\u2019ll ingest the Mastodon events into a table. Pinot tables have a schema that\u2019s defined in a schema file.\xa0"),(0,s.kt)("p",null,"To come up with a schema file, we need to know the structure of the ingested events. For example:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "m_id": 110146691030544274,\n  "created_at": 1680705124,\n  "created_at_str": "2023 04 05 15:32:04",\n  "app": "",\n  "url": "https://mastodon.social/@Xingcat/110146690810165414",\n  "base_url": "https://techhub.social",\n  "language": "en",\n  "favourites": 0,\n  "username": "Xingcat",\n  "bot": false,\n  "tags": 0,\n  "characters": 196,\n  "words": 36,\n  "mastodon_text": "Another, \u201cI don\u2019t know what this is yet,\u201d paintings. Many, many layers that look like distressed metal or some sort of rock crosscut. Liking it so far, need to figure out what it\u2019ll wind up being."\n}\n')),(0,s.kt)("p",null,"Mapping these fields directly to columns is easiest and will result in a schema file that looks like this:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n  "schemaName":"mastodon",\n  "dimensionFieldSpecs":[\n    {"name":"m_id","dataType":"LONG"},\n    {"name":"created_at_str","dataType":"STRING"},\n    {"name":"app","dataType":"STRING"},\n    {"name":"url","dataType":"STRING"},\n    {"name":"base_url","dataType":"STRING"},\n    {"name":"language","dataType":"STRING"},\n    {"name":"username","dataType":"STRING"},\n    {"name":"bot","dataType":"BOOLEAN"},    \n    {"name":"mastodon_text","dataType":"STRING"}\n  ],\n  "metricFieldSpecs":[\n    {"name":"favourites","dataType":"INT"},\n    {"name":"words","dataType":"INT"},\n    {"name":"characters","dataType":"INT"},\n    {"name":"tags","dataType":"INT"}\n  ],\n  "dateTimeFieldSpecs":[\n    {\n      "name":"created_at",\n      "dataType":"LONG",\n      "format":"1:MILLISECONDS:EPOCH",\n      "granularity":"1:MILLISECONDS"\n    }\n  ]\n}\n')),(0,s.kt)("p",null,"Next up: our table config, shown below:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'{\n    "tableName": "mastodon",\n    "tableType": "REALTIME",\n    "segmentsConfig": {\n      "timeColumnName": "created_at",\n      "timeType": "MILLISECONDS",\n      "schemaName": "mastodon",\n      "replicasPerPartition": "1"\n    },\n    "tenants": {},\n    "tableIndexConfig": {\n      "loadMode": "MMAP",\n      "streamConfigs": {\n        "streamType": "kafka",\n        "stream.kafka.consumer.type": "lowLevel",\n        "stream.kafka.topic.name": "mastodon-topic",\n        "stream.kafka.decoder.class.name": "org.apache.pinot.plugin.inputformat.avro.confluent.KafkaConfluentSchemaRegistryAvroMessageDecoder",\n        "stream.kafka.consumer.factory.class.name": "org.apache.pinot.plugin.stream.kafka20.KafkaConsumerFactory",\n        "stream.kafka.decoder.prop.format": "AVRO",\n        "stream.kafka.decoder.prop.schema.registry.rest.url": "http://schema-registry:8081",\n        "stream.kafka.decoder.prop.schema.registry.schema.name": "mastodon-topic-value",\n        "stream.kafka.broker.list": "broker:9093",\n        "stream.kafka.consumer.prop.auto.offset.reset": "smallest"\n      }\n    },\n    "metadata": {\n      "customConfigs": {}\n    },\n    "routing": {\n      "instanceSelectorType": "strictReplicaGroup"\n    }\n}\n')),(0,s.kt)("p",null,"The following configs represent the most important ones for ingesting Apache Avro\u2122 messages into Pinot:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-json"},'"stream.kafka.decoder.class.name": "org.apache.pinot.plugin.inputformat.avro.confluent.KafkaConfluentSchemaRegistryAvroMessageDecoder",\n"stream.kafka.decoder.prop.format": "AVRO",\n"stream.kafka.decoder.prop.schema.registry.rest.url": "http://schema-registry:8081",\n"stream.kafka.decoder.prop.schema.registry.schema.name": "mastodon-topic-value",\n')),(0,s.kt)("p",null,"The KafkaConfluentSchemaRegistryAvroMessageDecoder decoder calls the Schema Registry with the schema name to get back the schema that it will use to decode messages."),(0,s.kt)("p",null,"We can create the Pinot table by running the following command:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},'docker run \\\n   --network mastodon \\\n   -v $PWD/pinot:/config \\\n   apachepinot/pinot:0.12.0-arm64 AddTable \\\n     -schemaFile /config/schema.json \\\n     -tableConfigFile /config/table.json \\\n     -controllerHost "pinot-controller" \\\n    -exec\n')),(0,s.kt)("p",null,"We can then navigate to the table page of the Pinot UI:\xa0"),(0,s.kt)("p",null,"http://localhost:9000/#/tenants/table/mastodon","_","REALTIME"),(0,s.kt)("p",null,"Here, we\u2019ll see the following:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1685637837-image6.png",alt:"Apache Pinot table config and schema",title:"Apache Pinot table config and schema"})),(0,s.kt)("h2",{id:"ingest-data-into-kafka"},"Ingest Data into Kafka"),(0,s.kt)("p",null,"Now, we need to start ingesting data into Kafka. Simon created a script that accomplishes this for us, so we just need to indicate which Mastodon servers to query."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"python mastodonlisten.py --baseURL https://data-folks.masto.host \\\n  --public --enableKafka --quiet\npython mastodonlisten.py --baseURL https://fosstodon.org/ \\\n  --public --enableKafka --quiet\npython mastodonlisten.py --baseURL https://mstdn.social/ \\\n  --public --enableKafka --quiet\n")),(0,s.kt)("p",null,"We can then check the ingestion of messages with the ",(0,s.kt)("a",{parentName:"p",href:"https://docs.confluent.io/platform/current/clients/kafkacat-usage.html"},"kcat")," command line tool:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"kcat -C -b localhost:9092 -t mastodon-topic \\\n  -s value=avro -r http://localhost:8081 -e\n")),(0,s.kt)("h2",{id:"query-pinot"},"Query Pinot"),(0,s.kt)("p",null,"Now, let\u2019s go to the Pinot UI to see what data we\u2019ve got to play with:"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"http://localhost:9000/"},"http://localhost:9000")),(0,s.kt)("p",null,"We\u2019ll see the following preview of the data in the mastodon table:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1685637772-image5.png",alt:"SQL Editor, query response stats, and query result in Apache Pinot",title:"SQL Editor, query response stats, and query result in Apache Pinot"})),(0,s.kt)("p",null,"We can then write a query to find the number of messages posted in the last five minutes:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sql"},'select count(*) as "Num toots"\n, count(distinct(username)) as "Num users"\n, count(distinct(url)) as "Num urls"\nfrom mastodon\nwhere created_at*1000 > ago(\'PT1M\')\norder by 1 DESC;\n')),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1685637909-image8.png",alt:"Query results for toots, users, and urls",title:"Query results for toots, users, and urls"})),(0,s.kt)("p",null,"We can also query Pinot via the Python client, which we can install by running the following:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-bash"},"pip install pinotdb\n")),(0,s.kt)("p",null,"Once we\u2019ve done that, let\u2019s open the Python REPL and run the following code:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-python"},'from pinotdb import connect\nimport pandas as pd\n\nconn = connect(host=\'localhost\', port=8099, path=\'/query/sql\', scheme=\'http\')\n\ncurs = conn.cursor()\n\nst.header("Daily Mastodon Usage")\nquery = """\nselect count(*) as "Num toots"\n, count(distinct(username)) as "Num users"\n, count(distinct(url)) as "Num urls"\nfrom mastodon\nwhere created_at*1000 > ago(\'PT1M\')\norder by 1 DESC;\n"""\ncurs.execute(query)\n\ndf = pd.DataFrame(curs, columns=[item[0] for item in curs.description])\n')),(0,s.kt)("p",null,"This produces the resulting DataFrame:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"   Num toots  Num users  Num urls\n0        552        173       192\n")),(0,s.kt)("h2",{id:"streamlit"},"Streamlit"),(0,s.kt)("p",null,"Next, we\u2019ll create a Streamlit dashboard to package up these queries. We\u2019ll visualize the results using Plotly, which you can install using:"),(0,s.kt)("p",null,"pip install streamlit plotly"),(0,s.kt)("p",null,"I\u2019ve created a Streamlit app in the file ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/mneedham/mastodon-stream/blob/main/app.py"},"app.py"),", which you can find in the GitHub repository. Let\u2019s have a look at the kinds of visualizations that we can generate.\xa0"),(0,s.kt)("p",null,"First, we\u2019ll create metrics to show the number of toots, users, and URLs in the last ",(0,s.kt)("em",{parentName:"p"},"n")," minutes. ",(0,s.kt)("em",{parentName:"p"},"n")," will be configurable from the app as shown in the screenshot below:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1685637876-image7.png",alt:"Chart of real-time Mastodon usage",title:"Chart of real-time Mastodon usage"})),(0,s.kt)("p",null,"From the screenshot, we can identify mastodon.cloud as the most active server, though it produces only 1,800 messages in 10 minutes or three messages per second. The values in green indicate the change in values compared to the previous 10 minutes."),(0,s.kt)("p",null,"We can also create a chart showing the number of messages per minute for the last 10 minutes:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1685637945-image9.png",alt:"Time of day Mastodon usage",title:"Time of day Mastodon usage"})),(0,s.kt)("p",null,"Based on this chart, we can see that we\u2019re creating anywhere from 200\u2013900 messages per second. Part of the reason lies in the fact that the Mastodon servers sometimes disconnect our listener, and at the moment, I have to manually reconnect."),(0,s.kt)("p",null,"Finally, we can look at the toot length by language:"),(0,s.kt)("p",null,(0,s.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1685637644-image2.png",alt:"Chart of toot length by language usage",title:"Chart of toot length by language usage"})),(0,s.kt)("p",null,"We see much bigger ranges here than Simon saw in his analysis. He saw a maximum length of 200 characters, whereas we see some messages of up to 4,200 characters.\xa0"),(0,s.kt)("h2",{id:"summary"},"Summary"),(0,s.kt)("p",null,"We hope you enjoyed following along as we explored this fun use case for ",(0,s.kt)("a",{parentName:"p",href:"https://startree.ai/resources/what-is-real-time-analytics"},"real-time analytics"),". As you can see, even though we\u2019re pulling the data from many of the popular Mastodon servers, it\u2019s still not all that much data!"),(0,s.kt)("p",null,"Give the code a try and let us know how it goes. If you have any questions, feel free to ",(0,s.kt)("a",{parentName:"p",href:"https://stree.ai/slack"},"join us on Slack"),", where we\u2019ll gladly do our best to help you out."))}h.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/18e47b88.c55bb678.js b/assets/js/18e47b88.c55bb678.js
deleted file mode 100644
index 19bacc6..0000000
--- a/assets/js/18e47b88.c55bb678.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[962],{9398:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"apache-avro-messages","name":"apache avro messages","count":1,"permalink":"/blog/tags/apache-avro-messages"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1a964102.16f6fdd1.js b/assets/js/1a964102.16f6fdd1.js
deleted file mode 100644
index 2857df0..0000000
--- a/assets/js/1a964102.16f6fdd1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7541],{162:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"ingesting","name":"ingesting","count":1,"permalink":"/blog/tags/ingesting"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1b840953.2c83f8a1.js b/assets/js/1b840953.2c83f8a1.js
deleted file mode 100644
index 312983d..0000000
--- a/assets/js/1b840953.2c83f8a1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6808],{7251:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"implementing","name":"implementing","count":1,"permalink":"/blog/tags/implementing"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1bbbf56c.49fd9374.js b/assets/js/1bbbf56c.49fd9374.js
deleted file mode 100644
index 7bf92e1..0000000
--- a/assets/js/1bbbf56c.49fd9374.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9913],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return f}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=o,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,a(a({ref:t},p),{},{components:n})):r.createElement(f,a({ref:t},p))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:o,a[1]=l;for(var s=2;s<i;s++)a[s]=n[s];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5168:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return c},default:function(){return m},frontMatter:function(){return l},metadata:function(){return s},toc:function(){return p}});var r=n(7462),o=n(3366),i=(n(7294),n(4137)),a=["components"],l={title:"A Brief History of Scaling LinkedIn",author:"LinkedIn",author_title:"LinkedIn Engineering Team",author_url:"https://engineering.linkedin.com/blog/topic/pinot",author_image_url:"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Linkedin_icon.svg/512px-Linkedin_icon.svg.png",description:"LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn\u2019s product portfolio, member base, and server load has grown tremendously.",keywords:["Pinot","LinkedIn","Data Scaling","User-Facing Analytics","Real-time data platform"],tags:["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},c=void 0,s={permalink:"/blog/2015/05/16/LinkedIn-Scaling",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2015-05-16-LinkedIn-Scaling.md",source:"@site/blog/2015-05-16-LinkedIn-Scaling.md",title:"A Brief History of Scaling LinkedIn",description:"LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn\u2019s product portfolio, member base, and server load has grown tremendously.",date:"2015-05-16T00:00:00.000Z",formattedDate:"May 16, 2015",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"LinkedIn",permalink:"/blog/tags/linked-in"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.545,truncated:!1,prevItem:{title:"Open Sourcing Pinot - Scaling the Wall of Real-Time Analytics",permalink:"/blog/2015/06/10/Open-Sourcing-Pinot"}},p=[],u={toc:p},d="wrapper";function m(e){var t=e.components,n=(0,o.Z)(e,a);return(0,i.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn\u2019s product portfolio, member base, and server load has grown tremendously."),(0,i.kt)("p",null,"Today, LinkedIn operates globally with more than 350 million members. We serve tens of thousands of web pages every second of every day. We've hit our mobile moment where mobile accounts for more than 50 percent of all global traffic. All those requests are fetching data from our backend systems, which in turn handle millions of queries per second."),(0,i.kt)("p",null,"Read More at ",(0,i.kt)("a",{parentName:"p",href:"https://engineering.linkedin.com/architecture/brief-history-scaling-linkedin"},"https://engineering.linkedin.com/architecture/brief-history-scaling-linkedin")),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://content.linkedin.com/content/dam/engineering/en-us/blog/migrated/data_centers_pops_0.png",alt:"A Brief History of Scaling LinkedIn"})))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/1be78505.83d91792.js b/assets/js/1be78505.83d91792.js
deleted file mode 100644
index 38e260d..0000000
--- a/assets/js/1be78505.83d91792.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9514,9793,0],{4137:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return b}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=s(n),p=r,b=u["".concat(c,".").concat(p)]||u[p]||m[p]||o;return n?a.createElement(b,i(i({ref:t},d),{},{components:n})):a.createElement(b,i({ref:t},d))}));function b(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=p;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:r,i[1]=l;for(var s=2;s<o;s++)i[s]=n[s];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}p.displayName="MDXCreateElement"},9950:function(e,t,n){n.r(t),n.d(t,{default:function(){return W}});var a=n(7294),r=n(4137),o=n(9962),i=n(7401),l=n(3865),c=n(7462),s=n(3366),d=n(6010),u=n(4395),m=n(50),p=n(9729),b=n(3301),f=n(5717),h=n(2511),v=n(2735),E=n(2827),g=function(e){return a.createElement("svg",(0,c.Z)({width:"20",height:"20","aria-hidden":"true"},e),a.createElement("g",{fill:"#7a7a7a"},a.createElement("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),a.createElement("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})))},_=n(6416),k=n(6681),y=n(7130),Z={sidebar:"sidebar_a3j0",sidebarWithHideableNavbar:"sidebarWithHideableNavbar_VlPv",sidebarHidden:"sidebarHidden_OqfG",sidebarLogo:"sidebarLogo_hmkv",menu:"menu_cyFh",menuLinkText:"menuLinkText_lRH+",menuWithAnnouncementBar:"menuWithAnnouncementBar_+O1J",collapseSidebarButton:"collapseSidebarButton_eoK2",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_e+kA",sidebarMenuIcon:"sidebarMenuIcon_iZzd",sidebarMenuCloseIcon:"sidebarMenuCloseIcon_6kU2"},C=["items"],N=["item","onItemClick","collapsible","activePath"],I=["item","onItemClick","activePath","collapsible"],S=24;var O=function e(t,n){return"link"===t.type?(0,u.Mg)(t.href,n):"category"===t.type&&t.items.some((function(t){return e(t,n)}))},w=(0,a.memo)((function(e){var t=e.items,n=(0,s.Z)(e,C);return t.map((function(e,t){return a.createElement(T,(0,c.Z)({key:t,item:e},n))}))}));function T(e){return"category"===e.item.type?a.createElement(P,e):a.createElement(x,e)}function P(e){var t,n,r,o=e.item,i=e.onItemClick,l=e.collapsible,u=e.activePath,m=(0,s.Z)(e,N),p=o.items,b=o.label,f=O(o,u),h=(n=f,r=(0,a.useRef)(n),(0,a.useEffect)((function(){r.current=n}),[n]),r.current),v=(0,a.useState)((function(){return!!l&&(!f&&o.collapsed)})),E=v[0],g=v[1],_=(0,a.useRef)(null),k=(0,a.useState)(void 0),y=k[0],C=k[1],I=function(e){var t;void 0===e&&(e=!0),C(e?(null==(t=_.current)?void 0:t.scrollHeight)+"px":void 0)};(0,a.useEffect)((function(){f&&!h&&E&&g(!1)}),[f,h,E]);var S=(0,a.useCallback)((function(e){e.preventDefault(),y||I(),setTimeout((function(){return g((function(e){return!e}))}),100)}),[y]);return 0===p.length?null:a.createElement("li",{className:(0,d.Z)("menu__list-item",{"menu__list-item--collapsed":E})},a.createElement("a",(0,c.Z)({className:(0,d.Z)("menu__link",(t={"menu__link--sublist":l,"menu__link--active":l&&f},t[Z.menuLinkText]=!l,t)),onClick:l?S:void 0,href:l?"#!":void 0},m),b),a.createElement("ul",{className:"menu__list",ref:_,style:{height:y},onTransitionEnd:function(){E||I(!1)}},a.createElement(w,{items:p,tabIndex:E?"-1":"0",onItemClick:i,collapsible:l,activePath:u})))}function x(e){var t=e.item,n=e.onItemClick,r=e.activePath,o=(e.collapsible,(0,s.Z)(e,I)),i=t.href,l=t.label,u=O(t,r);return a.createElement("li",{className:"menu__list-item",key:l},a.createElement(h.Z,(0,c.Z)({className:(0,d.Z)("menu__link",{"menu__link--active":u}),to:i},(0,v.Z)(i)&&{isNavLink:!0,exact:!0,onClick:n},o),(0,v.Z)(i)?l:a.createElement("span",null,l,a.createElement(k.Z,null))))}function L(e){var t=e.onClick;return a.createElement("button",{type:"button",title:(0,y.I)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,y.I)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,d.Z)("button button--secondary button--outline",Z.collapseSidebarButton),onClick:t},a.createElement(g,{className:Z.collapseSidebarButtonIcon}))}function M(e){var t=e.responsiveSidebarOpened,n=e.onClick;return a.createElement("button",{"aria-label":t?(0,y.I)({id:"theme.docs.sidebar.responsiveCloseButtonLabel",message:"Close menu",description:"The ARIA label for close button of mobile doc sidebar"}):(0,y.I)({id:"theme.docs.sidebar.responsiveOpenButtonLabel",message:"Open menu",description:"The ARIA label for open button of mobile doc sidebar"}),"aria-haspopup":"true",className:"button button--secondary button--sm menu__button",type:"button",onClick:n},t?a.createElement("span",{className:(0,d.Z)(Z.sidebarMenuIcon,Z.sidebarMenuCloseIcon)},"\xd7"):a.createElement(_.Z,{className:Z.sidebarMenuIcon,height:S,width:S}))}var B=function(e){var t,n,r=e.path,o=e.sidebar,i=e.sidebarCollapsible,l=void 0===i||i,c=e.onCollapse,s=e.isHidden,h=function(){var e=(0,m.Z)().isAnnouncementBarClosed,t=(0,a.useState)(!e),n=t[0],r=t[1];return(0,f.Z)((function(t){var n=t.scrollY;e||r(0===n)})),n}(),v=(0,u.LU)(),g=v.navbar.hideOnScroll,_=v.hideableSidebar,k=(0,m.Z)().isAnnouncementBarClosed,C=function(){var e=(0,a.useState)(!1),t=e[0],n=e[1];(0,p.Z)(t);var r=(0,b.Z)();return(0,a.useEffect)((function(){r===b.D.desktop&&n(!1)}),[r]),{showResponsiveSidebar:t,closeResponsiveSidebar:(0,a.useCallback)((function(e){e.target.blur(),n(!1)}),[n]),toggleResponsiveSidebar:(0,a.useCallback)((function(){n((function(e){return!e}))}),[n])}}(),N=C.showResponsiveSidebar,I=C.closeResponsiveSidebar,S=C.toggleResponsiveSidebar;return a.createElement("div",{className:(0,d.Z)(Z.sidebar,(t={},t[Z.sidebarWithHideableNavbar]=g,t[Z.sidebarHidden]=s,t))},g&&a.createElement(E.Z,{tabIndex:-1,className:Z.sidebarLogo}),a.createElement("nav",{className:(0,d.Z)("menu","menu--responsive","thin-scrollbar",Z.menu,(n={"menu--show":N},n[Z.menuWithAnnouncementBar]=!k&&h,n)),"aria-label":(0,y.I)({id:"theme.docs.sidebar.navAriaLabel",message:"Sidebar navigation",description:"The ARIA label for documentation menu"})},a.createElement(M,{responsiveSidebarOpened:N,onClick:S}),a.createElement("ul",{className:"menu__list"},a.createElement(w,{items:o,onItemClick:I,collapsible:l,activePath:r}))),_&&a.createElement(L,{onClick:c}))},A=n(5386),R=n(8177),H=n(6550),D={docPage:"docPage_lDyR",docMainContainer:"docMainContainer_r8cw",docMainContainerEnhanced:"docMainContainerEnhanced_SOUu",docSidebarContainer:"docSidebarContainer_0YBq",docSidebarContainerHidden:"docSidebarContainerHidden_Qlt2",collapsedDocSidebar:"collapsedDocSidebar_zZpm",expandSidebarButtonIcon:"expandSidebarButtonIcon_cxi8",docItemWrapperEnhanced:"docItemWrapperEnhanced_aT5H",docItemWrapper:"docItemWrapper_NJLN"};function j(e){var t,n,i,c,s,m=e.currentDocRoute,p=e.versionMetadata,b=e.children,f=(0,o.Z)(),h=f.siteConfig,v=f.isClient,E=p.pluginId,_=p.version,k=function(e){var t,n=e.versionMetadata,a=e.currentDocRoute,r=n.permalinkToSidebar,o=n.docsSidebars,i=r[a.path]||r[(t=a.path,t.endsWith("/")?t:t+"/")]||r[function(e){return e.endsWith("/")?e.slice(0,-1):e}(a.path)];return{sidebar:o[i],sidebarName:i}}({versionMetadata:p,currentDocRoute:m}),Z=k.sidebarName,C=k.sidebar,N=(0,a.useState)(!1),I=N[0],S=N[1],O=(0,a.useState)(!1),w=O[0],T=O[1],P=(0,a.useCallback)((function(){w&&T(!1),S(!I)}),[w]);return a.createElement(l.Z,{key:v,wrapperClassName:u.kM.wrapper.docPages,pageClassName:u.kM.page.docPage,searchMetadatas:{version:_,tag:(0,u.os)(E,_)}},a.createElement("div",{className:D.docPage},C&&a.createElement("aside",{className:(0,d.Z)(D.docSidebarContainer,(t={},t[D.docSidebarContainerHidden]=I,t)),onTransitionEnd:function(e){e.currentTarget.classList.contains(D.docSidebarContainer)&&I&&T(!0)}},a.createElement(B,{key:Z,sidebar:C,path:m.path,sidebarCollapsible:null==(n=null==(i=h.themeConfig)?void 0:i.sidebarCollapsible)||n,onCollapse:P,isHidden:w}),w&&a.createElement("div",{className:D.collapsedDocSidebar,title:(0,y.I)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,y.I)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:P,onClick:P},a.createElement(g,{className:D.expandSidebarButtonIcon}))),a.createElement("main",{className:(0,d.Z)(D.docMainContainer,(c={},c[D.docMainContainerEnhanced]=I||!C,c))},a.createElement("div",{className:(0,d.Z)("container padding-top--md padding-bottom--lg",D.docItemWrapper,(s={},s[D.docItemWrapperEnhanced]=I,s))},a.createElement(r.Zo,{components:A.Z},b)))))}var W=function(e){var t=e.route.routes,n=e.versionMetadata,r=e.location,o=t.find((function(e){return(0,H.LX)(r.pathname,e)}));return o?a.createElement(j,{currentDocRoute:o,versionMetadata:n},(0,i.Z)(t)):a.createElement(R.default,e)}},5386:function(e,t,n){var a=n(7294),r=n(2511),o=n(3522),i=n(4145),l={code:function(e){var t=e.children;return(0,a.isValidElement)(t)?t:t.includes("\n")?a.createElement(o.Z,e):a.createElement("code",e)},a:function(e){return a.createElement(r.Z,e)},pre:function(e){var t,n=e.children;return(0,a.isValidElement)(null==n||null==(t=n.props)?void 0:t.children)?null==n?void 0:n.props.children:a.createElement(o.Z,(0,a.isValidElement)(n)?null==n?void 0:n.props:{children:n})},h1:(0,i.Z)("h1"),h2:(0,i.Z)("h2"),h3:(0,i.Z)("h3"),h4:(0,i.Z)("h4"),h5:(0,i.Z)("h5"),h6:(0,i.Z)("h6")};t.Z=l},8177:function(e,t,n){n.r(t);var a=n(7294),r=n(3865),o=n(7130);t.default=function(){return a.createElement(r.Z,{title:(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"})},a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),a.createElement("p",null,a.createElement(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}},283:function(e,t,n){n.d(t,{Z:function(){return f}});var a=n(7462),r=n(3366),o=n(7294),i=n(6010),l=n(2511),c=n(4395),s=n(9524),d={footerLogoLink:"footerLogoLink_94kH",footerCopyright:"footerCopyright_-piB"},u=n(4087),m=["to","href","label","prependBaseUrlToHref"];function p(e){var t=e.to,n=e.href,i=e.label,c=e.prependBaseUrlToHref,d=(0,r.Z)(e,m),u=(0,s.Z)(t),p=(0,s.Z)(n,{forcePrependBaseUrl:!0});return o.createElement(l.Z,(0,a.Z)({className:"footer__link-item"},n?{href:c?p:n}:{to:u},d),i)}var b=function(e){var t=e.sources,n=e.alt;return o.createElement(u.Z,{className:"footer__logo",alt:n,sources:t})};var f=function(){var e=(0,c.LU)().footer,t=e||{},n=t.copyright,a=t.links,r=void 0===a?[]:a,u=t.logo,m=void 0===u?{}:u,f={light:(0,s.Z)(m.src),dark:(0,s.Z)(m.srcDark||m.src)};return e?o.createElement("footer",{className:(0,i.Z)("footer",{"footer--dark":"dark"===e.style})},o.createElement("div",{className:"container"},r&&r.length>0&&o.createElement("div",{className:"row footer__links"},r.map((function(e,t){return o.createElement("div",{key:t,className:"col footer__col"},null!=e.title?o.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?o.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?o.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):o.createElement("li",{key:e.href||e.to,className:"footer__item"},o.createElement(p,e))}))):null)}))),(m||n)&&o.createElement("div",{className:"footer__bottom text--center"},m&&(m.src||m.srcDark)&&o.createElement("div",{className:"margin-bottom--sm"},m.href?o.createElement(l.Z,{href:m.href,className:d.footerLogoLink},o.createElement(b,{alt:m.alt,sources:f})):o.createElement(b,{alt:m.alt,sources:f})),n?o.createElement("div",{className:d.footerCopyright,dangerouslySetInnerHTML:{__html:n}}):null))):null}}}]);
\ No newline at end of file
diff --git a/assets/js/1c72b387.8c8e6090.js b/assets/js/1c72b387.8c8e6090.js
deleted file mode 100644
index 4408ff7..0000000
--- a/assets/js/1c72b387.8c8e6090.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 1c72b387.8c8e6090.js.LICENSE.txt */
-(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6800],{4137:function(e,t,n){"use strict";n.d(t,{Zo:function(){return u},kt:function(){return f}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?l(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),d=c(n),m=a,f=d["".concat(s,".").concat(m)]||d[m]||p[m]||l;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:a,i[1]=o;for(var c=2;c<l;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},2511:function(e,t,n){"use strict";n.d(t,{Z:function(){return h}});var r=n(3366),a=n(7294),l=n(3727),i=n(9962),o=n(2735),s=n(6136),c=(0,a.createContext)({collectLink:function(){}}),u=function(){return(0,a.useContext)(c)},d=n(9524),p=n(3905),m=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"],f=function(e){return e.startsWith("/")};var h=function(e){var t,n,c=e.isNavLink,h=e.to,k=e.href,g=e.activeClassName,v=e.isActive,b=e["data-noBrokenLinkCheck"],O=e.autoAddBaseUrl,y=void 0===O||O,C=(0,r.Z)(e,m),N=(0,i.Z)().siteConfig.trailingSlash,w=(0,d.C)().withBaseUrl,E=u(),P=h||k,G=(0,o.Z)(P),U=null==P?void 0:P.replace("pathname://",""),j=void 0!==U?(n=U,y&&f(n)?w(n):n):void 0;j&&G&&(j=(0,p.applyTrailingSlash)(j,N));var D,_=(0,a.useRef)(!1),L=c?l.OL:l.rU,T=s.Z.canUseIntersectionObserver;(0,a.useEffect)((function(){return!T&&G&&null!=j&&window.docusaurus.prefetch(j),function(){T&&D&&D.disconnect()}}),[j,T,G]);var S=null!==(t=null==j?void 0:j.startsWith("#"))&&void 0!==t&&t,x=!j||!G||S;return j&&G&&!S&&!b&&E.collectLink(j),x?a.createElement("a",Object.assign({href:j},P&&!G&&{target:"_blank",rel:"noopener noreferrer"},C)):a.createElement(L,Object.assign({},C,{onMouseEnter:function(){_.current||null==j||(window.docusaurus.preload(j),_.current=!0)},innerRef:function(e){var t,n;T&&e&&G&&(t=e,n=function(){null!=j&&window.docusaurus.prefetch(j)},(D=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(D.unobserve(t),D.disconnect(),n())}))}))).observe(t))},to:j||""},c&&{isActive:v,activeClassName:g}))}},2735:function(e,t,n){"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:function(){return a},b:function(){return r}})},9524:function(e,t,n){"use strict";n.d(t,{C:function(){return l},Z:function(){return i}});var r=n(9962),a=n(2735);function l(){var e=(0,r.Z)().siteConfig,t=void 0===e?{}:e,n=t.baseUrl,l=void 0===n?"/":n,i=t.url;return{withBaseUrl:function(e,t){return function(e,t,n,r){var l=void 0===r?{}:r,i=l.forcePrependBaseUrl,o=void 0!==i&&i,s=l.absolute,c=void 0!==s&&s;if(!n)return n;if(n.startsWith("#"))return n;if((0,a.b)(n))return n;if(o)return t+n;var u=n.startsWith(t)?n:t+n.replace(/^\//,"");return c?e+u:u}(i,l,e,t)}}}function i(e,t){return void 0===t&&(t={}),(0,l().withBaseUrl)(e,t)}},4136:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e.startsWith("#"))return e;if(void 0===t)return e;var n,r=e.split(/[#?]/)[0],a="/"===r?"/":t?(n=r).endsWith("/")?n:n+"/":function(e){return e.endsWith("/")?e.slice(0,-1):e}(r);return e.replace(r,a)}},3905:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.uniq=t.applyTrailingSlash=void 0;var a=n(4136);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var l=n(3509);Object.defineProperty(t,"uniq",{enumerable:!0,get:function(){return r(l).default}})},3509:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Array.from(new Set(e))}},6261:function(e,t,n){"use strict";var r=n(7294),a=n(4184),l=n.n(a);t.Z=function(e){var t=e.children,n=e.classNames,a=e.fill,i=e.icon,o=e.type,s=null;switch(o){case"danger":case"warning":s="alert-triangle";break;case"success":s="check-circle";break;default:s="info"}return r.createElement("div",{className:l()(n,"alert","alert--"+o,{"alert--fill":a,"alert--icon":!1!==i}),role:"alert"},!1!==i&&r.createElement("i",{className:l()("feather","icon-"+(i||s))}),t)}},9342:function(e,t,n){"use strict";var r=n(7294),a=n(2511),l=n(4184),i=n.n(l);t.Z=function(e){var t=e.children,n=e.className,l=e.badge,o=e.icon,s=e.size,c=e.target,u=e.to,d=i()("jump-to","jump-to--"+s,n),p=r.createElement("div",{className:"jump-to--inner"},r.createElement("div",{className:"jump-to--inner-2"},r.createElement("div",{className:"jump-to--main"},l?r.createElement("span",{className:"badge badge--primary badge--right"},l):"",t),r.createElement("div",{className:"jump-to--right"},r.createElement("i",{className:"feather icon-"+(o||"chevron-right")+" arrow"}))));return c?r.createElement("a",{href:u,target:c,className:d},p):r.createElement(a.Z,{to:u,className:d},p)}},2729:function(e,t,n){"use strict";n.r(t),n.d(t,{contentTitle:function(){return u},default:function(){return h},frontMatter:function(){return c},metadata:function(){return d},toc:function(){return p}});var r=n(7462),a=n(3366),l=(n(7294),n(4137)),i=n(6261),o=n(9342),s=["components"],c={title:"GCP Quickstart",sidebar_label:"GCP",description:"Run Pinot on GCP",draft:!0},u=void 0,d={unversionedId:"administration/installation/cloud/gcp",id:"administration/installation/cloud/gcp",isDocsHomePage:!1,title:"GCP Quickstart",description:"Run Pinot on GCP",source:"@site/docs/administration/installation/cloud/gcp.md",sourceDirName:"administration/installation/cloud",slug:"/administration/installation/cloud/gcp",permalink:"/docs/administration/installation/cloud/gcp",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/administration/installation/cloud/gcp.md",version:"current",frontMatter:{title:"GCP Quickstart",sidebar_label:"GCP",description:"Run Pinot on GCP",draft:!0},sidebar:"docs",previous:{title:"AWS",permalink:"/docs/administration/installation/cloud/aws"},next:{title:"Azure",permalink:"/docs/administration/installation/cloud/azure"}},p=[{value:"Tooling Installation",id:"tooling-installation",children:[{value:"Install Kubectl",id:"install-kubectl",children:[]},{value:"Install Helm",id:"install-helm",children:[]}]},{value:"Install Google Cloud SDK",id:"install-google-cloud-sdk",children:[{value:"For Mac User",id:"for-mac-user",children:[]},{value:"(Optional) Initialize Google Cloud Environment",id:"optional-initialize-google-cloud-environment",children:[]},{value:"(Optional) Create a Kubernetes cluster(GKE) in Google Cloud",id:"optional-create-a-kubernetes-clustergke-in-google-cloud",children:[]},{value:"Connect to an existing cluster",id:"connect-to-an-existing-cluster",children:[]},{value:"Pinot Quickstart",id:"pinot-quickstart",children:[]},{value:"Delete a Kubernetes Cluster",id:"delete-a-kubernetes-cluster",children:[]}]}],m={toc:p},f="wrapper";function h(e){var t=e.components,n=(0,a.Z)(e,s);return(0,l.kt)(f,(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"To have basic set with ",(0,l.kt)("a",{parentName:"p",href:"https://cloud.google.com/kubernetes-engine"},"Google Kubernetes Engine(GKE)")," on GCP:"),(0,l.kt)("h2",{id:"tooling-installation"},"Tooling Installation"),(0,l.kt)("h3",{id:"install-kubectl"},"Install Kubectl"),(0,l.kt)("p",null,"Please follow this link (",(0,l.kt)("a",{parentName:"p",href:"https://kubernetes.io/docs/tasks/tools/install-kubectl"},"https://kubernetes.io/docs/tasks/tools/install-kubectl"),") to install kubectl."),(0,l.kt)("p",null,"For Mac User"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"brew install kubernetes-cli\n")),(0,l.kt)("p",null,"Please check kubectl version after installation."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl version\n")),(0,l.kt)("p",null,"QuickStart scripts are tested under kubectl client version v1.16.3 and server version v1.13.12"),(0,l.kt)("h3",{id:"install-helm"},"Install Helm"),(0,l.kt)("p",null,"Please follow this ",(0,l.kt)("a",{parentName:"p",href:"https://helm.sh/docs/using_helm/#installing-helm"},"link to install helm")),(0,l.kt)("p",null,"For Mac User"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"brew install kubernetes-helm\n")),(0,l.kt)("p",null,"Please check helm version after installation."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"helm version\n")),(0,l.kt)(i.Z,{icon:!1,type:"info",mdxType:"Alert"},"This QuickStart provides helm supports for helm v3.0.0 and v2.12.1. Please pick the script based on your helm version."),(0,l.kt)("h2",{id:"install-google-cloud-sdk"},"Install Google Cloud SDK"),(0,l.kt)("p",null,"Please follow this link to ",(0,l.kt)("a",{parentName:"p",href:"https://cloud.google.com/sdk/install"},"install Google Cloud SDK")),(0,l.kt)("h3",{id:"for-mac-user"},"For Mac User"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Install Google Cloud SDK")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"curl https://sdk.cloud.google.com | bash\n")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Restart your shell")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"exec -l $SHELL\n")),(0,l.kt)("h3",{id:"optional-initialize-google-cloud-environment"},"(Optional) Initialize Google Cloud Environment"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"gcloud init\n")),(0,l.kt)("h3",{id:"optional-create-a-kubernetes-clustergke-in-google-cloud"},"(Optional) Create a Kubernetes cluster(GKE) in Google Cloud"),(0,l.kt)("p",null,"Below script will create a 3 nodes cluster named pinot-quickstart in ",(0,l.kt)("inlineCode",{parentName:"p"},"us-west1-b")," with ",(0,l.kt)("inlineCode",{parentName:"p"},"n1-standard-2")," machines for demo purposes."),(0,l.kt)("p",null,"Please modify the parameters in the example command below:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"GCLOUD_PROJECT=[your gcloud project name]\nGCLOUD_ZONE=us-west1-b\nGCLOUD_CLUSTER=pinot-quickstart\nGCLOUD_MACHINE_TYPE=n1-standard-2\nGCLOUD_NUM_NODES=3\ngcloud container clusters create ${GCLOUD_CLUSTER} \\\n  --num-nodes=${GCLOUD_NUM_NODES} \\\n  --machine-type=${GCLOUD_MACHINE_TYPE} \\\n  --zone=${GCLOUD_ZONE} \\\n  --project=${GCLOUD_PROJECT}\n")),(0,l.kt)("p",null,"You can monitor cluster status by command:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"gcloud compute instances list\n")),(0,l.kt)("p",null,"Once the cluster is in RUNNING status, it's ready to be used."),(0,l.kt)("h3",{id:"connect-to-an-existing-cluster"},"Connect to an existing cluster"),(0,l.kt)("p",null,"Simply run below command to get the credential for the cluster pinot-quickstart that you just created or your existing cluster."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"GCLOUD_PROJECT=[your gcloud project name]\nGCLOUD_ZONE=us-west1-b\nGCLOUD_CLUSTER=pinot-quickstart\ngcloud container clusters get-credentials ${GCLOUD_CLUSTER} --zone ${GCLOUD_ZONE} --project ${GCLOUD_PROJECT}\n")),(0,l.kt)("p",null,"To verify the connection, you can run:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"kubectl get nodes\n")),(0,l.kt)("h3",{id:"pinot-quickstart"},"Pinot Quickstart"),(0,l.kt)("p",null,"Please follow this ",(0,l.kt)("a",{parentName:"p",href:"/docs/administration/installation/cloud/on-premises"},"Kubernetes QuickStart")," to deploy your Pinot Demo."),(0,l.kt)(o.Z,{to:"/docs/administration/installation/cloud/on-premises",mdxType:"Jump"},"Kubernetes Quickstart"),(0,l.kt)("h3",{id:"delete-a-kubernetes-cluster"},"Delete a Kubernetes Cluster"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"GCLOUD_ZONE=us-west1-b\ngcloud container clusters delete pinot-quickstart --zone=${GCLOUD_ZONE}\n")))}h.isMDXComponent=!0},4184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var l=typeof n;if("string"===l||"number"===l)e.push(n);else if(Array.isArray(n)){if(n.length){var i=a.apply(null,n);i&&e.push(i)}}else if("object"===l)if(n.toString===Object.prototype.toString)for(var o in n)r.call(n,o)&&n[o]&&e.push(o);else e.push(n.toString())}}return e.join(" ")}e.exports?(a.default=a,e.exports=a):void 0===(n=function(){return a}.apply(t,[]))||(e.exports=n)}()}}]);
\ No newline at end of file
diff --git a/assets/js/1c72b387.8c8e6090.js.LICENSE.txt b/assets/js/1c72b387.8c8e6090.js.LICENSE.txt
deleted file mode 100644
index 0c20a87..0000000
--- a/assets/js/1c72b387.8c8e6090.js.LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
-  Copyright (c) 2018 Jed Watson.
-  Licensed under the MIT License (MIT), see
-  http://jedwatson.github.io/classnames
-*/
diff --git a/assets/js/1db65d89.257fd060.js b/assets/js/1db65d89.257fd060.js
deleted file mode 100644
index b11997d..0000000
--- a/assets/js/1db65d89.257fd060.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 1db65d89.257fd060.js.LICENSE.txt */
-(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2659],{4137:function(e,t,r){"use strict";r.d(t,{Zo:function(){return l},kt:function(){return v}});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){i(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var c=n.createContext({}),s=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},l=function(e){var t=s(e.components);return n.createElement(c.Provider,{value:t},e.children)},f="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),f=s(r),p=i,v=f["".concat(c,".").concat(p)]||f[p]||d[p]||o;return r?n.createElement(v,a(a({ref:t},l),{},{components:r})):n.createElement(v,a({ref:t},l))}));function v(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=p;var u={};for(var c in t)hasOwnProperty.call(t,c)&&(u[c]=t[c]);u.originalType=e,u[f]="string"==typeof e?e:i,a[1]=u;for(var s=2;s<o;s++)a[s]=r[s];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}p.displayName="MDXCreateElement"},2511:function(e,t,r){"use strict";r.d(t,{Z:function(){return m}});var n=r(3366),i=r(7294),o=r(3727),a=r(9962),u=r(2735),c=r(6136),s=(0,i.createContext)({collectLink:function(){}}),l=function(){return(0,i.useContext)(s)},f=r(9524),d=r(3905),p=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"],v=function(e){return e.startsWith("/")};var m=function(e){var t,r,s=e.isNavLink,m=e.to,b=e.href,h=e.activeClassName,g=e.isActive,y=e["data-noBrokenLinkCheck"],O=e.autoAddBaseUrl,w=void 0===O||O,j=(0,n.Z)(e,p),P=(0,a.Z)().siteConfig.trailingSlash,k=(0,f.C)().withBaseUrl,E=l(),_=m||b,C=(0,u.Z)(_),N=null==_?void 0:_.replace("pathname://",""),x=void 0!==N?(r=N,w&&v(r)?k(r):r):void 0;x&&C&&(x=(0,d.applyTrailingSlash)(x,P));var U,Z=(0,i.useRef)(!1),T=s?o.OL:o.rU,S=c.Z.canUseIntersectionObserver;(0,i.useEffect)((function(){return!S&&C&&null!=x&&window.docusaurus.prefetch(x),function(){S&&U&&U.disconnect()}}),[x,S,C]);var D=null!==(t=null==x?void 0:x.startsWith("#"))&&void 0!==t&&t,M=!x||!C||D;return x&&C&&!D&&!y&&E.collectLink(x),M?i.createElement("a",Object.assign({href:x},_&&!C&&{target:"_blank",rel:"noopener noreferrer"},j)):i.createElement(T,Object.assign({},j,{onMouseEnter:function(){Z.current||null==x||(window.docusaurus.preload(x),Z.current=!0)},innerRef:function(e){var t,r;S&&e&&C&&(t=e,r=function(){null!=x&&window.docusaurus.prefetch(x)},(U=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(U.unobserve(t),U.disconnect(),r())}))}))).observe(t))},to:x||""},s&&{isActive:g,activeClassName:h}))}},2735:function(e,t,r){"use strict";function n(e){return!0===/^(\w*:|\/\/)/.test(e)}function i(e){return void 0!==e&&!n(e)}r.d(t,{Z:function(){return i},b:function(){return n}})},9524:function(e,t,r){"use strict";r.d(t,{C:function(){return o},Z:function(){return a}});var n=r(9962),i=r(2735);function o(){var e=(0,n.Z)().siteConfig,t=void 0===e?{}:e,r=t.baseUrl,o=void 0===r?"/":r,a=t.url;return{withBaseUrl:function(e,t){return function(e,t,r,n){var o=void 0===n?{}:n,a=o.forcePrependBaseUrl,u=void 0!==a&&a,c=o.absolute,s=void 0!==c&&c;if(!r)return r;if(r.startsWith("#"))return r;if((0,i.b)(r))return r;if(u)return t+r;var l=r.startsWith(t)?r:t+r.replace(/^\//,"");return s?e+l:l}(a,o,e,t)}}}function a(e,t){return void 0===t&&(t={}),(0,o().withBaseUrl)(e,t)}},4136:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e.startsWith("#"))return e;if(void 0===t)return e;var r,n=e.split(/[#?]/)[0],i="/"===n?"/":t?(r=n).endsWith("/")?r:r+"/":function(e){return e.endsWith("/")?e.slice(0,-1):e}(n);return e.replace(n,i)}},3905:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.uniq=t.applyTrailingSlash=void 0;var i=r(4136);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return n(i).default}});var o=r(3509);Object.defineProperty(t,"uniq",{enumerable:!0,get:function(){return n(o).default}})},3509:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Array.from(new Set(e))}},9342:function(e,t,r){"use strict";var n=r(7294),i=r(2511),o=r(4184),a=r.n(o);t.Z=function(e){var t=e.children,r=e.className,o=e.badge,u=e.icon,c=e.size,s=e.target,l=e.to,f=a()("jump-to","jump-to--"+c,r),d=n.createElement("div",{className:"jump-to--inner"},n.createElement("div",{className:"jump-to--inner-2"},n.createElement("div",{className:"jump-to--main"},o?n.createElement("span",{className:"badge badge--primary badge--right"},o):"",t),n.createElement("div",{className:"jump-to--right"},n.createElement("i",{className:"feather icon-"+(u||"chevron-right")+" arrow"}))));return s?n.createElement("a",{href:l,target:s,className:f},d):n.createElement(i.Z,{to:l,className:f},d)}},3766:function(e,t,r){"use strict";r.r(t),r.d(t,{contentTitle:function(){return s},default:function(){return v},frontMatter:function(){return c},metadata:function(){return l},toc:function(){return f}});var n=r(7462),i=r(3366),o=(r(7294),r(4137)),a=r(9342),u=["components"],c={title:"User Guide",description:"User Guide",sidebar_label:"hidden",hide_pagination:!0,draft:!0},s=void 0,l={unversionedId:"user-guide",id:"user-guide",isDocsHomePage:!1,title:"User Guide",description:"User Guide",source:"@site/docs/user-guide.md",sourceDirName:".",slug:"/user-guide",permalink:"/docs/user-guide",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/user-guide.md",version:"current",frontMatter:{title:"User Guide",description:"User Guide",sidebar_label:"hidden",hide_pagination:!0,draft:!0}},f=[],d={toc:f},p="wrapper";function v(e){var t=e.components,r=(0,i.Z)(e,u);return(0,o.kt)(p,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Provide basic foundation of Pinot."),(0,o.kt)(a.Z,{to:"/docs/about/what_is_pinot/",mdxType:"Jump"},"What is Pinot?"),(0,o.kt)(a.Z,{to:"/docs/about/features_of_pinot/",mdxType:"Jump"},"Features of Pinot"),(0,o.kt)(a.Z,{to:"/docs/about/guarantees/",mdxType:"Jump"},"Who is using Pinot?"))}v.isMDXComponent=!0},4184:function(e,t){var r;!function(){"use strict";var n={}.hasOwnProperty;function i(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)){if(r.length){var a=i.apply(null,r);a&&e.push(a)}}else if("object"===o)if(r.toString===Object.prototype.toString)for(var u in r)n.call(r,u)&&r[u]&&e.push(u);else e.push(r.toString())}}return e.join(" ")}e.exports?(i.default=i,e.exports=i):void 0===(r=function(){return i}.apply(t,[]))||(e.exports=r)}()}}]);
\ No newline at end of file
diff --git a/assets/js/1db65d89.257fd060.js.LICENSE.txt b/assets/js/1db65d89.257fd060.js.LICENSE.txt
deleted file mode 100644
index 0c20a87..0000000
--- a/assets/js/1db65d89.257fd060.js.LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
-  Copyright (c) 2018 Jed Watson.
-  Licensed under the MIT License (MIT), see
-  http://jedwatson.github.io/classnames
-*/
diff --git a/assets/js/1dccf582.a2d922b2.js b/assets/js/1dccf582.a2d922b2.js
deleted file mode 100644
index 7968102..0000000
--- a/assets/js/1dccf582.a2d922b2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7774],{5729:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"query-performance","name":"query performance","count":1,"permalink":"/blog/tags/query-performance"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1dcd0330.c650b2bc.js b/assets/js/1dcd0330.c650b2bc.js
deleted file mode 100644
index ba3224b..0000000
--- a/assets/js/1dcd0330.c650b2bc.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3157],{5608:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"debezium","name":"debezium","count":2,"permalink":"/blog/tags/debezium"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1e830dc9.14363ae8.js b/assets/js/1e830dc9.14363ae8.js
deleted file mode 100644
index d7c762b..0000000
--- a/assets/js/1e830dc9.14363ae8.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4610],{7635:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"pause","name":"pause","count":1,"permalink":"/blog/tags/pause"}')}}]);
\ No newline at end of file
diff --git a/assets/js/1f7c204c.b70131a1.js b/assets/js/1f7c204c.b70131a1.js
deleted file mode 100644
index 265a848..0000000
--- a/assets/js/1f7c204c.b70131a1.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 1f7c204c.b70131a1.js.LICENSE.txt */
-(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7745],{4137:function(e,t,n){"use strict";n.d(t,{Zo:function(){return l},kt:function(){return m}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},f="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),f=s(n),d=o,m=f["".concat(c,".").concat(d)]||f[d]||p[d]||i;return n?r.createElement(m,a(a({ref:t},l),{},{components:n})):r.createElement(m,a({ref:t},l))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=d;var u={};for(var c in t)hasOwnProperty.call(t,c)&&(u[c]=t[c]);u.originalType=e,u[f]="string"==typeof e?e:o,a[1]=u;for(var s=2;s<i;s++)a[s]=n[s];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},2511:function(e,t,n){"use strict";n.d(t,{Z:function(){return v}});var r=n(3366),o=n(7294),i=n(3727),a=n(9962),u=n(2735),c=n(6136),s=(0,o.createContext)({collectLink:function(){}}),l=function(){return(0,o.useContext)(s)},f=n(9524),p=n(3905),d=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"],m=function(e){return e.startsWith("/")};var v=function(e){var t,n,s=e.isNavLink,v=e.to,b=e.href,h=e.activeClassName,y=e.isActive,g=e["data-noBrokenLinkCheck"],O=e.autoAddBaseUrl,w=void 0===O||O,j=(0,r.Z)(e,d),P=(0,a.Z)().siteConfig.trailingSlash,k=(0,f.C)().withBaseUrl,C=l(),E=v||b,_=(0,u.Z)(E),N=null==E?void 0:E.replace("pathname://",""),x=void 0!==N?(n=N,w&&m(n)?k(n):n):void 0;x&&_&&(x=(0,p.applyTrailingSlash)(x,P));var Z,T=(0,o.useRef)(!1),S=s?i.OL:i.rU,D=c.Z.canUseIntersectionObserver;(0,o.useEffect)((function(){return!D&&_&&null!=x&&window.docusaurus.prefetch(x),function(){D&&Z&&Z.disconnect()}}),[x,D,_]);var M=null!==(t=null==x?void 0:x.startsWith("#"))&&void 0!==t&&t,U=!x||!_||M;return x&&_&&!M&&!g&&C.collectLink(x),U?o.createElement("a",Object.assign({href:x},E&&!_&&{target:"_blank",rel:"noopener noreferrer"},j)):o.createElement(S,Object.assign({},j,{onMouseEnter:function(){T.current||null==x||(window.docusaurus.preload(x),T.current=!0)},innerRef:function(e){var t,n;D&&e&&_&&(t=e,n=function(){null!=x&&window.docusaurus.prefetch(x)},(Z=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(Z.unobserve(t),Z.disconnect(),n())}))}))).observe(t))},to:x||""},s&&{isActive:y,activeClassName:h}))}},2735:function(e,t,n){"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:function(){return o},b:function(){return r}})},9524:function(e,t,n){"use strict";n.d(t,{C:function(){return i},Z:function(){return a}});var r=n(9962),o=n(2735);function i(){var e=(0,r.Z)().siteConfig,t=void 0===e?{}:e,n=t.baseUrl,i=void 0===n?"/":n,a=t.url;return{withBaseUrl:function(e,t){return function(e,t,n,r){var i=void 0===r?{}:r,a=i.forcePrependBaseUrl,u=void 0!==a&&a,c=i.absolute,s=void 0!==c&&c;if(!n)return n;if(n.startsWith("#"))return n;if((0,o.b)(n))return n;if(u)return t+n;var l=n.startsWith(t)?n:t+n.replace(/^\//,"");return s?e+l:l}(a,i,e,t)}}}function a(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},4136:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e.startsWith("#"))return e;if(void 0===t)return e;var n,r=e.split(/[#?]/)[0],o="/"===r?"/":t?(n=r).endsWith("/")?n:n+"/":function(e){return e.endsWith("/")?e.slice(0,-1):e}(r);return e.replace(r,o)}},3905:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.uniq=t.applyTrailingSlash=void 0;var o=n(4136);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var i=n(3509);Object.defineProperty(t,"uniq",{enumerable:!0,get:function(){return r(i).default}})},3509:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Array.from(new Set(e))}},9342:function(e,t,n){"use strict";var r=n(7294),o=n(2511),i=n(4184),a=n.n(i);t.Z=function(e){var t=e.children,n=e.className,i=e.badge,u=e.icon,c=e.size,s=e.target,l=e.to,f=a()("jump-to","jump-to--"+c,n),p=r.createElement("div",{className:"jump-to--inner"},r.createElement("div",{className:"jump-to--inner-2"},r.createElement("div",{className:"jump-to--main"},i?r.createElement("span",{className:"badge badge--primary badge--right"},i):"",t),r.createElement("div",{className:"jump-to--right"},r.createElement("i",{className:"feather icon-"+(u||"chevron-right")+" arrow"}))));return s?r.createElement("a",{href:l,target:s,className:f},p):r.createElement(o.Z,{to:l,className:f},p)}},2241:function(e,t,n){"use strict";n.r(t),n.d(t,{contentTitle:function(){return s},default:function(){return m},frontMatter:function(){return c},metadata:function(){return l},toc:function(){return f}});var r=n(7462),o=n(3366),i=(n(7294),n(4137)),a=n(9342),u=["components"],c={title:"Components",description:"Components",sidebar_label:"hidden",hide_pagination:!0,draft:!0},s=void 0,l={unversionedId:"components",id:"components",isDocsHomePage:!1,title:"Components",description:"Components",source:"@site/docs/components.md",sourceDirName:".",slug:"/components",permalink:"/docs/components",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/components.md",version:"current",frontMatter:{title:"Components",description:"Components",sidebar_label:"hidden",hide_pagination:!0,draft:!0}},f=[],p={toc:f},d="wrapper";function m(e){var t=e.components,n=(0,o.Z)(e,u);return(0,i.kt)(d,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Provide basic foundation of Pinot."),(0,i.kt)(a.Z,{to:"/docs/about/what_is_pinot/",mdxType:"Jump"},"What is Pinot?"),(0,i.kt)(a.Z,{to:"/docs/about/features_of_pinot/",mdxType:"Jump"},"Features of Pinot"),(0,i.kt)(a.Z,{to:"/docs/about/guarantees/",mdxType:"Jump"},"Who is using Pinot?"))}m.isMDXComponent=!0},4184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var i=typeof n;if("string"===i||"number"===i)e.push(n);else if(Array.isArray(n)){if(n.length){var a=o.apply(null,n);a&&e.push(a)}}else if("object"===i)if(n.toString===Object.prototype.toString)for(var u in n)r.call(n,u)&&n[u]&&e.push(u);else e.push(n.toString())}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(n=function(){return o}.apply(t,[]))||(e.exports=n)}()}}]);
\ No newline at end of file
diff --git a/assets/js/1f7c204c.b70131a1.js.LICENSE.txt b/assets/js/1f7c204c.b70131a1.js.LICENSE.txt
deleted file mode 100644
index 0c20a87..0000000
--- a/assets/js/1f7c204c.b70131a1.js.LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
-  Copyright (c) 2018 Jed Watson.
-  Licensed under the MIT License (MIT), see
-  http://jedwatson.github.io/classnames
-*/
diff --git a/assets/js/205aab59.c41c204b.js b/assets/js/205aab59.c41c204b.js
deleted file mode 100644
index 7e47be3..0000000
--- a/assets/js/205aab59.c41c204b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9961],{4079:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"configuration","name":"configuration","count":1,"permalink":"/blog/tags/configuration"}')}}]);
\ No newline at end of file
diff --git a/assets/js/23f43bf2.360f9b78.js b/assets/js/23f43bf2.360f9b78.js
deleted file mode 100644
index 79b93c0..0000000
--- a/assets/js/23f43bf2.360f9b78.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5024],{8003:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"a-b-testing","name":"a/b testing","count":1,"permalink":"/blog/tags/a-b-testing"}')}}]);
\ No newline at end of file
diff --git a/assets/js/2431.0e842d3e.js b/assets/js/2431.0e842d3e.js
deleted file mode 100644
index f9b10ff..0000000
--- a/assets/js/2431.0e842d3e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2431],{2431:function(e,t,r){function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t,r){var a,c=t.initialState;return{getState:function(){return c},dispatch:function(a,i){var l=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach((function(t){o(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},c);c=e(c,{type:a,props:t,payload:i}),r({state:c,prevState:l})},pendingRequests:(a=[],{add:function(e){return a.push(e),e.finally((function(){a=a.filter((function(t){return t!==e}))}))},cancelAll:function(){a.forEach((function(e){return e.cancel()}))},isEmpty:function(){return 0===a.length}})}}function c(e){return e.reduce((function(e,t){return e.concat(t)}),[])}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){u(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e){return 0===e.collections.length?0:e.collections.reduce((function(e,t){return e+t.items.length}),0)}r.r(t),r.d(t,{DocSearchModal:function(){return wr}});var f=0;var m=function(){};function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function d(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function h(e,t){var r=[];return Promise.resolve(e(t)).then((function(e){return Array.isArray(e),Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,r.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));r.push(e.sourceId);var t=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){d(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:m},e);return Promise.resolve(t)})))}))}function v(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return y(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function g(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function b(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?g(Object(r),!0).forEach((function(t){O(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):g(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function O(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function S(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function E(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?S(Object(r),!0).forEach((function(t){j(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):S(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function j(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function w(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function P(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?w(Object(r),!0).forEach((function(t){I(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):w(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function I(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function D(e){return function(e){if(Array.isArray(e))return C(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return C(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return C(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function k(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function A(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?k(Object(r),!0).forEach((function(t){x(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):k(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function x(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function N(e){return Boolean(e.execute)}function R(e,t){return r=e,Boolean(null==r?void 0:r.execute)?A(A({},e),{},{requests:e.queries.map((function(r){return{query:r,sourceId:t,transformResponse:e.transformResponse}}))}):{items:e,sourceId:t};var r}function q(e){var t=e.reduce((function(e,t){if(!N(t))return e.push(t),e;var r=t.searchClient,n=t.execute,o=t.requesterId,a=t.requests,c=e.find((function(e){return N(t)&&N(e)&&e.searchClient===r&&Boolean(o)&&e.requesterId===o}));if(c){var i;(i=c.items).push.apply(i,D(a))}else{var l={execute:n,requesterId:o,items:a,searchClient:r};e.push(l)}return e}),[]).map((function(e){if(!N(e))return Promise.resolve(e);var t=e,r=t.execute,n=t.items;return r({searchClient:t.searchClient,requests:n})}));return Promise.all(t).then((function(e){return c(e)}))}function T(e,t){return t.map((function(t){var r=e.filter((function(e){return e.sourceId===t.sourceId})),n=r.map((function(e){return e.items})),o=r[0].transformResponse,a=o?o(function(e){var t=e.map((function(e){var t;return P(P({},e),{},{hits:null===(t=e.hits)||void 0===t?void 0:t.map((function(t){return P(P({},t),{},{__autocomplete_indexName:e.index,__autocomplete_queryID:e.queryID})}))})}));return{results:t,hits:t.map((function(e){return e.hits})).filter(Boolean),facetHits:t.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}}(n)):n;return Array.isArray(a),a.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:a}}))}function _(e,t){var r=t;return{then:function(t,n){return _(e.then(H(t,r,e),H(n,r,e)),r)},catch:function(t){return _(e.catch(H(t,r,e)),r)},finally:function(t){return t&&r.onCancelList.push(t),_(e.finally(H(t&&function(){return r.onCancelList=[],t()},r,e)),r)},cancel:function(){r.isCanceled=!0;var e=r.onCancelList;r.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===r.isCanceled}}}function L(e){return _(new Promise((function(t,r){return e(t,r)})),{isCanceled:!1,onCancelList:[]})}function M(e){return _(e,{isCanceled:!1,onCancelList:[]})}function H(e,t,r){return e?function(r){return t.isCanceled?r:e(r)}:r}function F(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,r){var n=(e[r-1]||0)+t;return e.push(n),e}),[]).reduce((function(t,r){return r<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var r=t.items[function(e){for(var t=e.state,r=e.collection,n=!1,o=0,a=0;!1===n;){var c=t.collections[o];if(c===r){n=!0;break}a+=c.items.length,o++}return t.activeItemId-a}({state:e,collection:t})],n=t.source;return{item:r,itemInputValue:n.getItemInputValue({item:r,state:e}),itemUrl:n.getItemUrl({item:r,state:e}),source:n}}L.resolve=function(e){return M(Promise.resolve(e))},L.reject=function(e){return M(Promise.reject(e))};var U=["event","nextState","props","query","refresh","store"];function B(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function V(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?B(Object(r),!0).forEach((function(t){K(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):B(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function K(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function $(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var J,z,W,Q=null,Z=(J=-1,z=-1,W=void 0,function(e){var t=++J;return Promise.resolve(e).then((function(e){return W&&t<z?W:(z=t,W=e,e)}))});function G(e){var t=e.event,r=e.nextState,n=void 0===r?{}:r,o=e.props,a=e.query,i=e.refresh,l=e.store,u=$(e,U);Q&&o.environment.clearTimeout(Q);var s=u.setCollections,f=u.setIsOpen,m=u.setQuery,p=u.setActiveItemId,d=u.setStatus;if(m(a),p(o.defaultActiveItemId),!a&&!1===o.openOnFocus){var h,v=l.getState().collections.map((function(e){return V(V({},e),{},{items:[]})}));d("idle"),s(v),f(null!==(h=n.isOpen)&&void 0!==h?h:o.shouldPanelOpen({state:l.getState()}));var y=M(Z(v).then((function(){return Promise.resolve()})));return l.pendingRequests.add(y)}d("loading"),Q=o.environment.setTimeout((function(){d("stalled")}),o.stallThreshold);var g=M(Z(o.getSources(V({query:a,refresh:i,state:l.getState()},u)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(V({query:a,refresh:i,state:l.getState()},u))).then((function(t){return R(t,e.sourceId)}))}))).then(q).then((function(t){return T(t,e)})).then((function(e){return function(e){var t=e.collections,r=e.props,n=e.state,o=t.reduce((function(e,t){return E(E({},e),{},j({},t.source.sourceId,E(E({},t.source),{},{getItems:function(){return c(t.items)}})))}),{});return c(r.reshape({sources:Object.values(o),sourcesBySourceId:o,state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:o,state:l.getState()})}))})))).then((function(e){var r;d("idle"),s(e);var c=o.shouldPanelOpen({state:l.getState()});f(null!==(r=n.isOpen)&&void 0!==r?r:o.openOnFocus&&!a&&c||c);var m=F(l.getState());if(null!==l.getState().activeItemId&&m){var p=m.item,h=m.itemInputValue,v=m.itemUrl,y=m.source;y.onActive(V({event:t,item:p,itemInputValue:h,itemUrl:v,refresh:i,source:y,state:l.getState()},u))}})).finally((function(){d("idle"),Q&&o.environment.clearTimeout(Q)}));return l.pendingRequests.add(g)}var Y=["event","props","refresh","store"];function X(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?X(Object(r),!0).forEach((function(t){te(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):X(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function te(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function re(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var ne=/((gt|sm)-|galaxy nexus)|samsung[- ]/i;var oe=["props","refresh","store"],ae=["inputElement","formElement","panelElement"],ce=["inputElement"],ie=["inputElement","maxLength"],le=["item","source"];function ue(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function se(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ue(Object(r),!0).forEach((function(t){fe(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ue(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function fe(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function me(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function pe(e){var t=e.props,r=e.refresh,n=e.store,o=me(e,oe);return{getEnvironmentProps:function(e){var r=e.inputElement,o=e.formElement,a=e.panelElement;function c(e){!n.getState().isOpen&&n.pendingRequests.isEmpty()||e.target===r||!1===[o,a].some((function(t){return r=t,n=e.target,r===n||r.contains(n);var r,n}))&&(n.dispatch("blur",null),t.debug||n.pendingRequests.cancelAll())}return se({onTouchStart:c,onMouseDown:c,onTouchMove:function(e){!1!==n.getState().isOpen&&r===t.environment.document.activeElement&&e.target!==r&&r.blur()}},me(e,ae))},getRootProps:function(e){return se({role:"combobox","aria-expanded":n.getState().isOpen,"aria-haspopup":"listbox","aria-owns":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){e.inputElement;return se({action:"",noValidate:!0,role:"search",onSubmit:function(a){var c;a.preventDefault(),t.onSubmit(se({event:a,refresh:r,state:n.getState()},o)),n.dispatch("submit",null),null===(c=e.inputElement)||void 0===c||c.blur()},onReset:function(a){var c;a.preventDefault(),t.onReset(se({event:a,refresh:r,state:n.getState()},o)),n.dispatch("reset",null),null===(c=e.inputElement)||void 0===c||c.focus()}},me(e,ce))},getLabelProps:function(e){return se({htmlFor:"".concat(t.id,"-input"),id:"".concat(t.id,"-label")},e)},getInputProps:function(e){var a;function c(e){(t.openOnFocus||Boolean(n.getState().query))&&G(se({event:e,props:t,query:n.getState().completion||n.getState().query,refresh:r,store:n},o)),n.dispatch("focus",null)}var i=e||{},l=(i.inputElement,i.maxLength),u=void 0===l?512:l,s=me(i,ie),f=F(n.getState()),p=function(e){return Boolean(e&&e.match(ne))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),d=null!=f&&f.itemUrl&&!p?"go":"search";return se({"aria-autocomplete":"both","aria-activedescendant":n.getState().isOpen&&null!==n.getState().activeItemId?"".concat(t.id,"-item-").concat(n.getState().activeItemId):void 0,"aria-controls":n.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:n.getState().completion||n.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:d,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:u,type:"search",onChange:function(e){G(se({event:e,props:t,query:e.currentTarget.value.slice(0,u),refresh:r,store:n},o))},onKeyDown:function(e){!function(e){var t=e.event,r=e.props,n=e.refresh,o=e.store,a=re(e,Y);if("ArrowUp"===t.key||"ArrowDown"===t.key){var c=function(){var e=r.environment.document.getElementById("".concat(r.id,"-item-").concat(o.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},i=function(){var e=F(o.getState());if(null!==o.getState().activeItemId&&e){var r=e.item,c=e.itemInputValue,i=e.itemUrl,l=e.source;l.onActive(ee({event:t,item:r,itemInputValue:c,itemUrl:i,refresh:n,source:l,state:o.getState()},a))}};t.preventDefault(),!1===o.getState().isOpen&&(r.openOnFocus||Boolean(o.getState().query))?G(ee({event:t,props:r,query:o.getState().query,refresh:n,store:o},a)).then((function(){o.dispatch(t.key,{nextActiveItemId:r.defaultActiveItemId}),i(),setTimeout(c,0)})):(o.dispatch(t.key,{}),i(),c())}else if("Escape"===t.key)t.preventDefault(),o.dispatch(t.key,null),o.pendingRequests.cancelAll();else if("Tab"===t.key)o.dispatch("blur",null),o.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===o.getState().activeItemId||o.getState().collections.every((function(e){return 0===e.items.length})))return void(r.debug||o.pendingRequests.cancelAll());t.preventDefault();var l=F(o.getState()),u=l.item,s=l.itemInputValue,f=l.itemUrl,m=l.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(m.onSelect(ee({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),r.navigator.navigateNewTab({itemUrl:f,item:u,state:o.getState()}));else if(t.shiftKey)void 0!==f&&(m.onSelect(ee({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),r.navigator.navigateNewWindow({itemUrl:f,item:u,state:o.getState()}));else if(t.altKey);else{if(void 0!==f)return m.onSelect(ee({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},a)),void r.navigator.navigate({itemUrl:f,item:u,state:o.getState()});G(ee({event:t,nextState:{isOpen:!1},props:r,query:s,refresh:n,store:o},a)).then((function(){m.onSelect(ee({event:t,item:u,itemInputValue:s,itemUrl:f,refresh:n,source:m,state:o.getState()},a))}))}}}(se({event:e,props:t,refresh:r,store:n},o))},onFocus:c,onBlur:m,onClick:function(r){e.inputElement!==t.environment.document.activeElement||n.getState().isOpen||c(r)}},s)},getPanelProps:function(e){return se({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){n.dispatch("mouseleave",null)}},e)},getListProps:function(e){return se({role:"listbox","aria-labelledby":"".concat(t.id,"-label"),id:"".concat(t.id,"-list")},e)},getItemProps:function(e){var a=e.item,c=e.source,i=me(e,le);return se({id:"".concat(t.id,"-item-").concat(a.__autocomplete_id),role:"option","aria-selected":n.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==n.getState().activeItemId){n.dispatch("mousemove",a.__autocomplete_id);var t=F(n.getState());if(null!==n.getState().activeItemId&&t){var c=t.item,i=t.itemInputValue,l=t.itemUrl,u=t.source;u.onActive(se({event:e,item:c,itemInputValue:i,itemUrl:l,refresh:r,source:u,state:n.getState()},o))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var i=c.getItemInputValue({item:a,state:n.getState()}),l=c.getItemUrl({item:a,state:n.getState()});(l?Promise.resolve():G(se({event:e,nextState:{isOpen:!1},props:t,query:i,refresh:r,store:n},o))).then((function(){c.onSelect(se({event:e,item:a,itemInputValue:i,itemUrl:l,refresh:r,source:c,state:n.getState()},o))}))}},i)}}}var de=[{segment:"autocomplete-core",version:"1.7.4"}];function he(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ve(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?he(Object(r),!0).forEach((function(t){ye(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):he(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ye(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ge(e){var t,r,n,o,a=e.plugins,c=e.options,i=null===(t=((null===(r=c.__autocomplete_metadata)||void 0===r?void 0:r.userAgents)||[])[0])||void 0===t?void 0:t.segment,l=i?ye({},i,Object.keys((null===(n=c.__autocomplete_metadata)||void 0===n?void 0:n.options)||{})):{};return{plugins:a.map((function(e){return{name:e.name,options:Object.keys(e.__autocomplete_pluginOptions||[])}})),options:ve({"autocomplete-core":Object.keys(c)},l),ua:de.concat((null===(o=c.__autocomplete_metadata)||void 0===o?void 0:o.userAgents)||[])}}function be(e){var t,r=e.state;return!1===r.isOpen||null===r.activeItemId?null:(null===(t=F(r))||void 0===t?void 0:t.itemInputValue)||null}function Oe(e,t,r,n){if(!r)return null;if(e<0&&(null===t||null!==n&&0===t))return r+e;var o=(null===t?-1:t)+e;return o<=-1||o>=r?null===n?null:0:o}function Se(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ee(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Se(Object(r),!0).forEach((function(t){je(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Se(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function je(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var we=function(e,t){switch(t.type){case"setActiveItemId":case"mousemove":return Ee(Ee({},e),{},{activeItemId:t.payload});case"setQuery":return Ee(Ee({},e),{},{query:t.payload,completion:null});case"setCollections":return Ee(Ee({},e),{},{collections:t.payload});case"setIsOpen":return Ee(Ee({},e),{},{isOpen:t.payload});case"setStatus":return Ee(Ee({},e),{},{status:t.payload});case"setContext":return Ee(Ee({},e),{},{context:Ee(Ee({},e.context),t.payload)});case"ArrowDown":var r=Ee(Ee({},e),{},{activeItemId:t.payload.hasOwnProperty("nextActiveItemId")?t.payload.nextActiveItemId:Oe(1,e.activeItemId,s(e),t.props.defaultActiveItemId)});return Ee(Ee({},r),{},{completion:be({state:r})});case"ArrowUp":var n=Ee(Ee({},e),{},{activeItemId:Oe(-1,e.activeItemId,s(e),t.props.defaultActiveItemId)});return Ee(Ee({},n),{},{completion:be({state:n})});case"Escape":return e.isOpen?Ee(Ee({},e),{},{activeItemId:null,isOpen:!1,completion:null}):Ee(Ee({},e),{},{activeItemId:null,query:"",status:"idle",collections:[]});case"submit":return Ee(Ee({},e),{},{activeItemId:null,isOpen:!1,status:"idle"});case"reset":return Ee(Ee({},e),{},{activeItemId:!0===t.props.openOnFocus?t.props.defaultActiveItemId:null,status:"idle",query:""});case"focus":return Ee(Ee({},e),{},{activeItemId:t.props.defaultActiveItemId,isOpen:(t.props.openOnFocus||Boolean(e.query))&&t.props.shouldPanelOpen({state:e})});case"blur":return t.props.debug?e:Ee(Ee({},e),{},{isOpen:!1,activeItemId:null});case"mouseleave":return Ee(Ee({},e),{},{activeItemId:t.props.defaultActiveItemId});default:return"The reducer action ".concat(JSON.stringify(t.type)," is not supported."),e}};function Pe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ie(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Pe(Object(r),!0).forEach((function(t){De(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Pe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function De(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ce(e){var t=[],r=function(e,t){var r,n="undefined"!=typeof window?window:{},o=e.plugins||[];return b(b({debug:!1,openOnFocus:!1,placeholder:"",autoFocus:!1,defaultActiveItemId:null,stallThreshold:300,environment:n,shouldPanelOpen:function(e){return s(e.state)>0},reshape:function(e){return e.sources}},e),{},{id:null!==(r=e.id)&&void 0!==r?r:"autocomplete-".concat(f++),plugins:o,initialState:b({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var r;null===(r=e.onStateChange)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onStateChange)||void 0===r?void 0:r.call(e,t)}))},onSubmit:function(t){var r;null===(r=e.onSubmit)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onSubmit)||void 0===r?void 0:r.call(e,t)}))},onReset:function(t){var r;null===(r=e.onReset)||void 0===r||r.call(e,t),o.forEach((function(e){var r;return null===(r=e.onReset)||void 0===r?void 0:r.call(e,t)}))},getSources:function(r){return Promise.all([].concat(v(o.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return h(e,r)}))).then((function(e){return c(e)})).then((function(e){return e.map((function(e){return b(b({},e),{},{onSelect:function(r){e.onSelect(r),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,r)}))},onActive:function(r){e.onActive(r),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,r)}))}})}))}))},navigator:b({navigate:function(e){var t=e.itemUrl;n.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,r=n.open(t,"_blank","noopener");null==r||r.focus()},navigateNewWindow:function(e){var t=e.itemUrl;n.open(t,"_blank","noopener")}},e.navigator)})}(e,t),n=a(we,r,(function(e){var t=e.prevState,n=e.state;r.onStateChange(Ie({prevState:t,state:n,refresh:u},o))})),o=function(e){var t=e.store;return{setActiveItemId:function(e){t.dispatch("setActiveItemId",e)},setQuery:function(e){t.dispatch("setQuery",e)},setCollections:function(e){var r=0,n=e.map((function(e){return l(l({},e),{},{items:c(e.items).map((function(e){return l(l({},e),{},{__autocomplete_id:r++})}))})}));t.dispatch("setCollections",n)},setIsOpen:function(e){t.dispatch("setIsOpen",e)},setStatus:function(e){t.dispatch("setStatus",e)},setContext:function(e){t.dispatch("setContext",e)}}}({store:n}),i=pe(Ie({props:r,refresh:u,store:n},o));function u(){return G(Ie({event:new Event("input"),nextState:{isOpen:n.getState().isOpen},props:r,query:n.getState().query,refresh:u,store:n},o))}return r.plugins.forEach((function(e){var r;return null===(r=e.subscribe)||void 0===r?void 0:r.call(e,Ie(Ie({},o),{},{refresh:u,onSelect:function(e){t.push({onSelect:e})},onActive:function(e){t.push({onActive:e})}}))})),function(e){var t,r,n=e.metadata,o=e.environment;if(null===(t=o.navigator)||void 0===t||null===(r=t.userAgent)||void 0===r?void 0:r.includes("Algolia Crawler")){var a=o.document.createElement("meta"),c=o.document.querySelector("head");a.name="algolia:metadata",setTimeout((function(){a.content=JSON.stringify(n),c.appendChild(a)}),0)}}({metadata:ge({plugins:r.plugins,options:e}),environment:r.environment}),Ie(Ie({refresh:u},i),o)}var ke=r(7294),Ae=64;function xe(e){var t=e.translations,r=(void 0===t?{}:t).searchByText,n=void 0===r?"Search by":r;return ke.createElement("a",{href:"https://www.algolia.com/ref/docsearch/?utm_source=".concat(window.location.hostname,"&utm_medium=referral&utm_content=powered_by&utm_campaign=docsearch"),target:"_blank",rel:"noopener noreferrer"},ke.createElement("span",{className:"DocSearch-Label"},n),ke.createElement("svg",{width:"77",height:"19","aria-label":"Algolia",role:"img",id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500"},ke.createElement("defs",null,ke.createElement("style",null,".cls-1,.cls-2{fill:#003dff;}.cls-2{fill-rule:evenodd;}")),ke.createElement("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),ke.createElement("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),ke.createElement("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),ke.createElement("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),ke.createElement("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),ke.createElement("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),ke.createElement("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),ke.createElement("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),ke.createElement("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})))}function Ne(e){return ke.createElement("svg",{width:"15",height:"15","aria-label":e.ariaLabel,role:"img"},ke.createElement("g",{fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.2"},e.children))}function Re(e){var t=e.translations,r=void 0===t?{}:t,n=r.selectText,o=void 0===n?"to select":n,a=r.selectKeyAriaLabel,c=void 0===a?"Enter key":a,i=r.navigateText,l=void 0===i?"to navigate":i,u=r.navigateUpKeyAriaLabel,s=void 0===u?"Arrow up":u,f=r.navigateDownKeyAriaLabel,m=void 0===f?"Arrow down":f,p=r.closeText,d=void 0===p?"to close":p,h=r.closeKeyAriaLabel,v=void 0===h?"Escape key":h,y=r.searchByText,g=void 0===y?"Search by":y;return ke.createElement(ke.Fragment,null,ke.createElement("div",{className:"DocSearch-Logo"},ke.createElement(xe,{translations:{searchByText:g}})),ke.createElement("ul",{className:"DocSearch-Commands"},ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(Ne,{ariaLabel:c},ke.createElement("path",{d:"M12 3.53088v3c0 1-1 2-2 2H4M7 11.53088l-3-3 3-3"}))),ke.createElement("span",{className:"DocSearch-Label"},o)),ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(Ne,{ariaLabel:m},ke.createElement("path",{d:"M7.5 3.5v8M10.5 8.5l-3 3-3-3"}))),ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(Ne,{ariaLabel:s},ke.createElement("path",{d:"M7.5 11.5v-8M10.5 6.5l-3-3-3 3"}))),ke.createElement("span",{className:"DocSearch-Label"},l)),ke.createElement("li",null,ke.createElement("kbd",{className:"DocSearch-Commands-Key"},ke.createElement(Ne,{ariaLabel:v},ke.createElement("path",{d:"M13.6167 8.936c-.1065.3583-.6883.962-1.4875.962-.7993 0-1.653-.9165-1.653-2.1258v-.5678c0-1.2548.7896-2.1016 1.653-2.1016.8634 0 1.3601.4778 1.4875 1.0724M9 6c-.1352-.4735-.7506-.9219-1.46-.8972-.7092.0246-1.344.57-1.344 1.2166s.4198.8812 1.3445.9805C8.465 7.3992 8.968 7.9337 9 8.5c.032.5663-.454 1.398-1.4595 1.398C6.6593 9.898 6 9 5.963 8.4851m-1.4748.5368c-.2635.5941-.8099.876-1.5443.876s-1.7073-.6248-1.7073-2.204v-.4603c0-1.0416.721-2.131 1.7073-2.131.9864 0 1.6425 1.031 1.5443 2.2492h-2.956"}))),ke.createElement("span",{className:"DocSearch-Label"},d))))}function qe(e){var t=e.hit,r=e.children;return ke.createElement("a",{href:t.url},r)}function Te(){return ke.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M19 4.8a16 16 0 00-2-1.2m-3.3-1.2A16 16 0 001.1 4.7M16.7 8a12 12 0 00-2.8-1.4M10 6a12 12 0 00-6.7 2M12.3 14.7a4 4 0 00-4.5 0M14.5 11.4A8 8 0 0010 10M3 16L18 2M10 18h0"}))}function _e(e){var t=e.translations,r=void 0===t?{}:t,n=r.titleText,o=void 0===n?"Unable to fetch results":n,a=r.helpText,c=void 0===a?"You might want to check your network connection.":a;return ke.createElement("div",{className:"DocSearch-ErrorScreen"},ke.createElement("div",{className:"DocSearch-Screen-Icon"},ke.createElement(Te,null)),ke.createElement("p",{className:"DocSearch-Title"},o),ke.createElement("p",{className:"DocSearch-Help"},c))}function Le(){return ke.createElement("svg",{width:"40",height:"40",viewBox:"0 0 20 20",fill:"none",fillRule:"evenodd",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M15.5 4.8c2 3 1.7 7-1 9.7h0l4.3 4.3-4.3-4.3a7.8 7.8 0 01-9.8 1m-2.2-2.2A7.8 7.8 0 0113.2 2.4M2 18L18 2"}))}var Me=["translations"];function He(e){return function(e){if(Array.isArray(e))return Fe(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Fe(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Fe(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Fe(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Ue(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Be(e){var t=e.translations,r=void 0===t?{}:t,n=Ue(e,Me),o=r.noResultsText,a=void 0===o?"No results for":o,c=r.suggestedQueryText,i=void 0===c?"Try searching for":c,l=r.reportMissingResultsText,u=void 0===l?"Believe this query should return results?":l,s=r.reportMissingResultsLinkText,f=void 0===s?"Let us know.":s,m=n.state.context.searchSuggestions;return ke.createElement("div",{className:"DocSearch-NoResults"},ke.createElement("div",{className:"DocSearch-Screen-Icon"},ke.createElement(Le,null)),ke.createElement("p",{className:"DocSearch-Title"},a,' "',ke.createElement("strong",null,n.state.query),'"'),m&&m.length>0&&ke.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},ke.createElement("p",{className:"DocSearch-Help"},i,":"),ke.createElement("ul",null,m.slice(0,3).reduce((function(e,t){return[].concat(He(e),[ke.createElement("li",{key:t},ke.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){n.setQuery(t.toLowerCase()+" "),n.refresh(),n.inputRef.current.focus()}},t))])}),[]))),n.getMissingResultsUrl&&ke.createElement("p",{className:"DocSearch-Help"},"".concat(u," "),ke.createElement("a",{href:n.getMissingResultsUrl({query:n.state.query}),target:"_blank",rel:"noopener noreferrer"},f)))}var Ve=function(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M17 6v12c0 .52-.2 1-1 1H4c-.7 0-1-.33-1-1V2c0-.55.42-1 1-1h8l5 5zM14 8h-3.13c-.51 0-.87-.34-.87-.87V4",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))};function Ke(e){switch(e.type){case"lvl1":return ke.createElement(Ve,null);case"content":return ke.createElement(Je,null);default:return ke.createElement($e,null)}}function $e(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M13 13h4-4V8H7v5h6v4-4H7V8H3h4V3v5h6V3v5h4-4v5zm-6 0v4-4H3h4z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}function Je(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M17 5H3h14zm0 5H3h14zm0 5H3h14z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function ze(){return ke.createElement("svg",{className:"DocSearch-Hit-Select-Icon",width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M18 3v4c0 2-2 4-4 4H2"}),ke.createElement("path",{d:"M8 17l-6-6 6-6"})))}var We=["hit","attribute","tagName"];function Qe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ze(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Qe(Object(r),!0).forEach((function(t){Ge(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Qe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Ge(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ye(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Xe(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function et(e){var t=e.hit,r=e.attribute,n=e.tagName,o=void 0===n?"span":n,a=Ye(e,We);return(0,ke.createElement)(o,Ze(Ze({},a),{},{dangerouslySetInnerHTML:{__html:Xe(t,"_snippetResult.".concat(r,".value"))||Xe(t,r)}}))}function tt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],c=!0,i=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);c=!0);}catch(l){i=!0,o=l}finally{try{c||null==r.return||r.return()}finally{if(i)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return rt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return rt(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function rt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function nt(){return nt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},nt.apply(this,arguments)}function ot(e){return e.collection&&0!==e.collection.items.length?ke.createElement("section",{className:"DocSearch-Hits"},ke.createElement("div",{className:"DocSearch-Hit-source"},e.title),ke.createElement("ul",e.getListProps(),e.collection.items.map((function(t,r){return ke.createElement(at,nt({key:[e.title,t.objectID].join(":"),item:t,index:r},e))})))):null}function at(e){var t=e.item,r=e.index,n=e.renderIcon,o=e.renderAction,a=e.getItemProps,c=e.onItemClick,i=e.collection,l=e.hitComponent,u=tt(ke.useState(!1),2),s=u[0],f=u[1],m=tt(ke.useState(!1),2),p=m[0],d=m[1],h=ke.useRef(null),v=l;return ke.createElement("li",nt({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child",s&&"DocSearch-Hit--deleting",p&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){h.current&&h.current()}},a({item:t,source:i.source,onClick:function(){c(t)}})),ke.createElement(v,{hit:t},ke.createElement("div",{className:"DocSearch-Hit-Container"},n({item:t,index:r}),t.hierarchy[t.type]&&"lvl1"===t.type&&ke.createElement("div",{className:"DocSearch-Hit-content-wrapper"},ke.createElement(et,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&ke.createElement(et,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&ke.createElement("div",{className:"DocSearch-Hit-content-wrapper"},ke.createElement(et,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),ke.createElement(et,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&ke.createElement("div",{className:"DocSearch-Hit-content-wrapper"},ke.createElement(et,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),ke.createElement(et,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),o({item:t,runDeleteTransition:function(e){f(!0),h.current=e},runFavoriteTransition:function(e){d(!0),h.current=e}}))))}var ct=/(<mark>|<\/mark>)/g,it=RegExp(ct.source);function lt(e){var t,r,n,o,a,c=e;if(!c.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var i=((c.__docsearch_parent?null===(t=c.__docsearch_parent)||void 0===t||null===(r=t._highlightResult)||void 0===r||null===(n=r.hierarchy)||void 0===n?void 0:n.lvl0:null===(o=e._highlightResult)||void 0===o||null===(a=o.hierarchy)||void 0===a?void 0:a.lvl0)||{}).value;return i&&it.test(i)?i.replace(ct,""):i}function ut(){return ut=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ut.apply(this,arguments)}function st(e){return ke.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map((function(t){if(0===t.items.length)return null;var r=lt(t.items[0]);return ke.createElement(ot,ut({},e,{key:t.source.sourceId,title:r,collection:t,renderIcon:function(e){var r,n=e.item,o=e.index;return ke.createElement(ke.Fragment,null,n.__docsearch_parent&&ke.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},ke.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},n.__docsearch_parent!==(null===(r=t.items[o+1])||void 0===r?void 0:r.__docsearch_parent)?ke.createElement("path",{d:"M8 6v21M20 27H8.3"}):ke.createElement("path",{d:"M8 6v42M20 27H8.3"}))),ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(Ke,{type:n.type})))},renderAction:function(){return ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement(ze,null))}}))})),e.resultsFooterComponent&&ke.createElement("section",{className:"DocSearch-HitsFooter"},ke.createElement(e.resultsFooterComponent,{state:e.state})))}function ft(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M3.18 6.6a8.23 8.23 0 1112.93 9.94h0a8.23 8.23 0 01-11.63 0"}),ke.createElement("path",{d:"M6.44 7.25H2.55V3.36M10.45 6v5.6M10.45 11.6L13 13"})))}function mt(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M10 14.2L5 17l1-5.6-4-4 5.5-.7 2.5-5 2.5 5 5.6.8-4 4 .9 5.5z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinejoin:"round"}))}function pt(){return ke.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20"},ke.createElement("path",{d:"M10 10l5.09-5.09L10 10l5.09 5.09L10 10zm0 0L4.91 4.91 10 10l-5.09 5.09L10 10z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}var dt=["translations"];function ht(){return ht=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ht.apply(this,arguments)}function vt(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function yt(e){var t=e.translations,r=void 0===t?{}:t,n=vt(e,dt),o=r.recentSearchesTitle,a=void 0===o?"Recent":o,c=r.noRecentSearchesText,i=void 0===c?"No recent searches":c,l=r.saveRecentSearchButtonTitle,u=void 0===l?"Save this search":l,s=r.removeRecentSearchButtonTitle,f=void 0===s?"Remove this search from history":s,m=r.favoriteSearchesTitle,p=void 0===m?"Favorite":m,d=r.removeFavoriteSearchButtonTitle,h=void 0===d?"Remove this search from favorites":d;return"idle"===n.state.status&&!1===n.hasCollections?n.disableUserPersonalization?null:ke.createElement("div",{className:"DocSearch-StartScreen"},ke.createElement("p",{className:"DocSearch-Help"},i)):!1===n.hasCollections?null:ke.createElement("div",{className:"DocSearch-Dropdown-Container"},ke.createElement(ot,ht({},n,{title:a,collection:n.state.collections[0],renderIcon:function(){return ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(ft,null))},renderAction:function(e){var t=e.item,r=e.runFavoriteTransition,o=e.runDeleteTransition;return ke.createElement(ke.Fragment,null,ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:u,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.add(t),n.recentSearches.remove(t),n.refresh()}))}},ke.createElement(mt,null))),ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:f,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){n.recentSearches.remove(t),n.refresh()}))}},ke.createElement(pt,null))))}})),ke.createElement(ot,ht({},n,{title:p,collection:n.state.collections[1],renderIcon:function(){return ke.createElement("div",{className:"DocSearch-Hit-icon"},ke.createElement(mt,null))},renderAction:function(e){var t=e.item,r=e.runDeleteTransition;return ke.createElement("div",{className:"DocSearch-Hit-action"},ke.createElement("button",{className:"DocSearch-Hit-action-button",title:h,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),r((function(){n.favoriteSearches.remove(t),n.refresh()}))}},ke.createElement(pt,null)))}})))}var gt=["translations"];function bt(){return bt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},bt.apply(this,arguments)}function Ot(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var St=ke.memo((function(e){var t=e.translations,r=void 0===t?{}:t,n=Ot(e,gt);if("error"===n.state.status)return ke.createElement(_e,{translations:null==r?void 0:r.errorScreen});var o=n.state.collections.some((function(e){return e.items.length>0}));return n.state.query?!1===o?ke.createElement(Be,bt({},n,{translations:null==r?void 0:r.noResultsScreen})):ke.createElement(st,n):ke.createElement(yt,bt({},n,{hasCollections:o,translations:null==r?void 0:r.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function Et(){return ke.createElement("svg",{viewBox:"0 0 38 38",stroke:"currentColor",strokeOpacity:".5"},ke.createElement("g",{fill:"none",fillRule:"evenodd"},ke.createElement("g",{transform:"translate(1 1)",strokeWidth:"2"},ke.createElement("circle",{strokeOpacity:".3",cx:"18",cy:"18",r:"18"}),ke.createElement("path",{d:"M36 18c0-9.94-8.06-18-18-18"},ke.createElement("animateTransform",{attributeName:"transform",type:"rotate",from:"0 18 18",to:"360 18 18",dur:"1s",repeatCount:"indefinite"})))))}var jt=r(830),wt=["translations"];function Pt(){return Pt=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Pt.apply(this,arguments)}function It(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function Dt(e){var t=e.translations,r=void 0===t?{}:t,n=It(e,wt),o=r.resetButtonTitle,a=void 0===o?"Clear the query":o,c=r.resetButtonAriaLabel,i=void 0===c?"Clear the query":c,l=r.cancelButtonText,u=void 0===l?"Cancel":l,s=r.cancelButtonAriaLabel,f=void 0===s?"Cancel":s,m=n.getFormProps({inputElement:n.inputRef.current}).onReset;return ke.useEffect((function(){n.autoFocus&&n.inputRef.current&&n.inputRef.current.focus()}),[n.autoFocus,n.inputRef]),ke.useEffect((function(){n.isFromSelection&&n.inputRef.current&&n.inputRef.current.select()}),[n.isFromSelection,n.inputRef]),ke.createElement(ke.Fragment,null,ke.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:m},ke.createElement("label",Pt({className:"DocSearch-MagnifierLabel"},n.getLabelProps()),ke.createElement(jt.W,null)),ke.createElement("div",{className:"DocSearch-LoadingIndicator"},ke.createElement(Et,null)),ke.createElement("input",Pt({className:"DocSearch-Input",ref:n.inputRef},n.getInputProps({inputElement:n.inputRef.current,autoFocus:n.autoFocus,maxLength:Ae}))),ke.createElement("button",{type:"reset",title:a,className:"DocSearch-Reset","aria-label":i,hidden:!n.state.query},ke.createElement(pt,null))),ke.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":f,onClick:n.onClose},u))}var Ct=["_highlightResult","_snippetResult"];function kt(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function At(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(t){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}function xt(e){var t=e.key,r=e.limit,n=void 0===r?5:r,o=At(t),a=o.getItem().slice(0,n);return{add:function(e){var t=e,r=(t._highlightResult,t._snippetResult,kt(t,Ct)),c=a.findIndex((function(e){return e.objectID===r.objectID}));c>-1&&a.splice(c,1),a.unshift(r),a=a.slice(0,n),o.setItem(a)},remove:function(e){a=a.filter((function(t){return t.objectID!==e.objectID})),o.setItem(a)},getAll:function(){return a}}}function Nt(e){const t=`algoliasearch-client-js-${e.key}`;let r;const n=()=>(void 0===r&&(r=e.localStorage||window.localStorage),r),o=()=>JSON.parse(n().getItem(t)||"{}");return{get(e,t,r={miss:()=>Promise.resolve()}){return Promise.resolve().then((()=>{const r=JSON.stringify(e),n=o()[r];return Promise.all([n||t(),void 0!==n])})).then((([e,t])=>Promise.all([e,t||r.miss(e)]))).then((([e])=>e))},set(e,r){return Promise.resolve().then((()=>{const a=o();return a[JSON.stringify(e)]=r,n().setItem(t,JSON.stringify(a)),r}))},delete(e){return Promise.resolve().then((()=>{const r=o();delete r[JSON.stringify(e)],n().setItem(t,JSON.stringify(r))}))},clear(){return Promise.resolve().then((()=>{n().removeItem(t)}))}}}function Rt(e){const t=[...e.caches],r=t.shift();return void 0===r?{get(e,t,r={miss:()=>Promise.resolve()}){return t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e))},set(e,t){return Promise.resolve(t)},delete(e){return Promise.resolve()},clear(){return Promise.resolve()}}:{get(e,n,o={miss:()=>Promise.resolve()}){return r.get(e,n,o).catch((()=>Rt({caches:t}).get(e,n,o)))},set(e,n){return r.set(e,n).catch((()=>Rt({caches:t}).set(e,n)))},delete(e){return r.delete(e).catch((()=>Rt({caches:t}).delete(e)))},clear(){return r.clear().catch((()=>Rt({caches:t}).clear()))}}}function qt(e={serializable:!0}){let t={};return{get(r,n,o={miss:()=>Promise.resolve()}){const a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);const c=n(),i=o&&o.miss||(()=>Promise.resolve());return c.then((e=>i(e))).then((()=>c))},set(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear(){return t={},Promise.resolve()}}}function Tt(e){let t=e.length-1;for(;t>0;t--){const r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function _t(e,t){return t?(Object.keys(t).forEach((r=>{e[r]=t[r](e)})),e):e}function Lt(e,...t){let r=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[r++])))}const Mt="4.15.0",Ht={WithinQueryParameters:0,WithinHeaders:1};function Ft(e,t){const r=e||{},n=r.data||{};return Object.keys(r).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}const Ut={Read:1,Write:2,Any:3},Bt={Up:1,Down:2,Timeouted:3},Vt=12e4;function Kt(e,t=Bt.Up){return{...e,status:t,lastUpdate:Date.now()}}function $t(e){return"string"==typeof e?{protocol:"https",url:e,accept:Ut.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||Ut.Any}}const Jt={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"};function zt(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(Kt(t))))))).then((e=>{const r=e.filter((e=>function(e){return e.status===Bt.Up||Date.now()-e.lastUpdate>Vt}(e))),n=e.filter((e=>function(e){return e.status===Bt.Timeouted&&Date.now()-e.lastUpdate<=Vt}(e))),o=[...r,...n];return{getTimeout(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:o.length>0?o.map((e=>$t(e))):t}}))}const Wt=(e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&0==~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e);function Qt(e,t,r,n){const o=[],a=function(e,t){if(e.method===Jt.Get||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(r,n),c=function(e,t){const r={...e.headers,...t.headers},n={};return Object.keys(r).forEach((e=>{const t=r[e];n[e.toLowerCase()]=t})),n}(e,n),i=r.method,l=r.method!==Jt.Get?{}:{...r.data,...n.data},u={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...l,...n.queryParameters};let s=0;const f=(t,l)=>{const m=t.pop();if(void 0===m)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:Xt(o)};const p={data:a,headers:c,method:i,url:Gt(m,r.path,u),connectTimeout:l(s,e.timeouts.connect),responseTimeout:l(s,n.timeout)},d=e=>{const r={request:p,response:e,host:m,triesLeft:t.length};return o.push(r),r},h={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(r){const n=d(r);return r.isTimedOut&&s++,Promise.all([e.logger.info("Retryable failure",er(n)),e.hostsCache.set(m,Kt(m,r.isTimedOut?Bt.Timeouted:Bt.Down))]).then((()=>f(t,l)))},onFail(e){throw d(e),function({content:e,status:t},r){let n=e;try{n=JSON.parse(e).message}catch(o){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(n,t,r)}(e,Xt(o))}};return e.requester.send(p).then((e=>Wt(e,h)))};return zt(e.hostsCache,t).then((e=>f([...e.statelessHosts].reverse(),e.getTimeout)))}function Zt(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}function Gt(e,t,r){const n=Yt(r);let o=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return n.length&&(o+=`?${n}`),o}function Yt(e){return Object.keys(e).map((t=>{return Lt("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function Xt(e){return e.map((e=>er(e)))}function er(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const tr=e=>{const t=e.appId,r=function(e,t,r){const n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers(){return e===Ht.WithinHeaders?n:{}},queryParameters(){return e===Ht.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:Ht.WithinHeaders,t,e.apiKey),n=function(e){const{hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:a,timeouts:c,userAgent:i,hosts:l,queryParameters:u,headers:s}=e,f={hostsCache:t,logger:r,requester:n,requestsCache:o,responsesCache:a,timeouts:c,userAgent:i,headers:s,queryParameters:u,hosts:l.map((e=>$t(e))),read(e,t){const r=Ft(t,f.timeouts.read),n=()=>Qt(f,f.hosts.filter((e=>0!=(e.accept&Ut.Read))),e,r);if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();const o={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(o,(()=>f.requestsCache.get(o,(()=>f.requestsCache.set(o,n()).then((e=>Promise.all([f.requestsCache.delete(o),e])),(e=>Promise.all([f.requestsCache.delete(o),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>f.responsesCache.set(o,e)})},write(e,t){return Qt(f,f.hosts.filter((e=>0!=(e.accept&Ut.Write))),e,Ft(t,f.timeouts.write))}};return f}({hosts:[{url:`${t}-dsn.algolia.net`,accept:Ut.Read},{url:`${t}.algolia.net`,accept:Ut.Write}].concat(Tt([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...r.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...r.queryParameters(),...e.queryParameters}}),o={transporter:n,appId:t,addAlgoliaAgent(e,t){n.userAgent.add({segment:e,version:t})},clearCache(){return Promise.all([n.requestsCache.clear(),n.responsesCache.clear()]).then((()=>{}))}};return _t(o,e.methods)},rr=e=>(t,r)=>t.method===Jt.Get?e.transporter.read(t,r):e.transporter.write(t,r),nr=e=>(t,r={})=>_t({transporter:e.transporter,appId:e.appId,indexName:t},r.methods),or=e=>(t,r)=>{const n=t.map((e=>({...e,params:Yt(e.params||{})})));return e.transporter.read({method:Jt.Post,path:"1/indexes/*/queries",data:{requests:n},cacheable:!0},r)},ar=e=>(t,r)=>Promise.all(t.map((t=>{const{facetName:n,facetQuery:o,...a}=t.params;return nr(e)(t.indexName,{methods:{searchForFacetValues:lr}}).searchForFacetValues(n,o,{...r,...a})}))),cr=e=>(t,r,n)=>e.transporter.read({method:Jt.Post,path:Lt("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n),ir=e=>(t,r)=>e.transporter.read({method:Jt.Post,path:Lt("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r),lr=e=>(t,r,n)=>e.transporter.read({method:Jt.Post,path:Lt("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n),ur={Debug:1,Info:2,Error:3};function sr(e,t,r){const n={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send(e){return new Promise((t=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));const n=(e,n)=>setTimeout((()=>{r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e),o=n(e.connectTimeout,"Connection timeout");let a;r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===a&&(clearTimeout(o),a=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(o),clearTimeout(a),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(o),clearTimeout(a),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(o=ur.Error,{debug(e,t){return ur.Debug>=o&&console.debug(e,t),Promise.resolve()},info(e,t){return ur.Info>=o&&console.info(e,t),Promise.resolve()},error(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:qt(),requestsCache:qt({serializable:!1}),hostsCache:Rt({caches:[Nt({key:`${Mt}-${e}`}),qt()]}),userAgent:Zt(Mt).add({segment:"Browser",version:"lite"}),authMode:Ht.WithinQueryParameters};var o;return tr({...n,...r,methods:{search:or,searchForFacetValues:ar,multipleQueries:or,multipleSearchForFacetValues:ar,customRequest:rr,initIndex:e=>t=>nr(e)(t,{methods:{search:ir,searchForFacetValues:lr,findAnswers:cr}})}})}sr.version=Mt;var fr=sr,mr="3.3.3";function pr(){}function dr(e){return e}function hr(e,t){return e.reduce((function(e,r){var n=t(r);return e.hasOwnProperty(n)||(e[n]=[]),e[n].length<5&&e[n].push(r),e}),{})}var vr=["footer","searchBox"];function yr(){return yr=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},yr.apply(this,arguments)}function gr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function br(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?gr(Object(r),!0).forEach((function(t){Or(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):gr(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Or(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Sr(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,o,a=[],c=!0,i=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(a.push(n.value),!t||a.length!==t);c=!0);}catch(l){i=!0,o=l}finally{try{c||null==r.return||r.return()}finally{if(i)throw o}}return a}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return Er(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Er(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Er(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function jr(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function wr(e){var t=e.appId,r=e.apiKey,n=e.indexName,o=e.placeholder,a=void 0===o?"Search docs":o,c=e.searchParameters,i=e.onClose,l=void 0===i?pr:i,u=e.transformItems,s=void 0===u?dr:u,f=e.hitComponent,m=void 0===f?qe:f,p=e.resultsFooterComponent,d=void 0===p?function(){return null}:p,h=e.navigator,v=e.initialScrollY,y=void 0===v?0:v,g=e.transformSearchClient,b=void 0===g?dr:g,O=e.disableUserPersonalization,S=void 0!==O&&O,E=e.initialQuery,j=void 0===E?"":E,w=e.translations,P=void 0===w?{}:w,I=e.getMissingResultsUrl,D=P.footer,C=P.searchBox,k=jr(P,vr),A=Sr(ke.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),x=A[0],N=A[1],R=ke.useRef(null),q=ke.useRef(null),T=ke.useRef(null),_=ke.useRef(null),L=ke.useRef(null),M=ke.useRef(10),H=ke.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,Ae):"").current,F=ke.useRef(j||H).current,U=function(e,t,r){return ke.useMemo((function(){var n=fr(e,t);return n.addAlgoliaAgent("docsearch",mr),!1===/docsearch.js \(.*\)/.test(n.transporter.userAgent.value)&&n.addAlgoliaAgent("docsearch-react",mr),r(n)}),[e,t,r])}(t,r,b),B=ke.useRef(xt({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(n),limit:10})).current,V=ke.useRef(xt({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(n),limit:0===B.getAll().length?7:4})).current,K=ke.useCallback((function(e){if(!S){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===B.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&V.add(t)}}),[B,V,S]),$=ke.useMemo((function(){return Ce({id:"docsearch",defaultActiveItemId:0,placeholder:a,openOnFocus:!0,initialState:{query:F,context:{searchSuggestions:[]}},navigator:h,onStateChange:function(e){N(e.state)},getSources:function(e){var t=e.query,r=e.state,o=e.setContext,a=e.setStatus;return t?U.search([{query:t,indexName:n,params:br({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(M.current),"hierarchy.lvl2:".concat(M.current),"hierarchy.lvl3:".concat(M.current),"hierarchy.lvl4:".concat(M.current),"hierarchy.lvl5:".concat(M.current),"hierarchy.lvl6:".concat(M.current),"content:".concat(M.current)],snippetEllipsisText:"\u2026",highlightPreTag:"<mark>",highlightPostTag:"</mark>",hitsPerPage:20},c)}]).catch((function(e){throw"RetryError"===e.name&&a("error"),e})).then((function(e){var t=e.results[0],n=t.hits,a=t.nbHits,c=hr(n,(function(e){return lt(e)}));return r.context.searchSuggestions.length<Object.keys(c).length&&o({searchSuggestions:Object.keys(c)}),o({nbHits:a}),Object.values(c).map((function(e,t){return{sourceId:"hits".concat(t),onSelect:function(e){var t=e.item,r=e.event;K(t),r.shiftKey||r.ctrlKey||r.metaKey||l()},getItemUrl:function(e){return e.item.url},getItems:function(){return Object.values(hr(e,(function(e){return e.hierarchy.lvl1}))).map(s).map((function(e){return e.map((function(t){return br(br({},t),{},{__docsearch_parent:"lvl1"!==t.type&&e.find((function(e){return"lvl1"===e.type&&e.hierarchy.lvl1===t.hierarchy.lvl1}))})}))})).flat()}}}))})):S?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,r=e.event;K(t),r.shiftKey||r.ctrlKey||r.metaKey||l()},getItemUrl:function(e){return e.item.url},getItems:function(){return V.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,r=e.event;K(t),r.shiftKey||r.ctrlKey||r.metaKey||l()},getItemUrl:function(e){return e.item.url},getItems:function(){return B.getAll()}}]}})}),[n,c,U,l,V,B,K,F,a,h,s,S]),J=$.getEnvironmentProps,z=$.getRootProps,W=$.refresh;return function(e){var t=e.getEnvironmentProps,r=e.panelElement,n=e.formElement,o=e.inputElement;ke.useEffect((function(){if(r&&n&&o){var e=t({panelElement:r,formElement:n,inputElement:o}),a=e.onTouchStart,c=e.onTouchMove;return window.addEventListener("touchstart",a),window.addEventListener("touchmove",c),function(){window.removeEventListener("touchstart",a),window.removeEventListener("touchmove",c)}}}),[t,r,n,o])}({getEnvironmentProps:J,panelElement:_.current,formElement:T.current,inputElement:L.current}),function(e){var t=e.container;ke.useEffect((function(){if(t){var e=t.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), input:not([disabled])"),r=e[0],n=e[e.length-1];return t.addEventListener("keydown",o),function(){t.removeEventListener("keydown",o)}}function o(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===r&&(e.preventDefault(),n.focus()):document.activeElement===n&&(e.preventDefault(),r.focus()))}}),[t])}({container:R.current}),ke.useEffect((function(){return document.body.classList.add("DocSearch--active"),function(){var e,t;document.body.classList.remove("DocSearch--active"),null===(e=(t=window).scrollTo)||void 0===e||e.call(t,0,y)}}),[]),ke.useEffect((function(){window.matchMedia("(max-width: 768px)").matches&&(M.current=5)}),[]),ke.useEffect((function(){_.current&&(_.current.scrollTop=0)}),[x.query]),ke.useEffect((function(){F.length>0&&(W(),L.current&&L.current.focus())}),[F,W]),ke.useEffect((function(){function e(){if(q.current){var e=.01*window.innerHeight;q.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),ke.createElement("div",yr({ref:R},z({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===x.status&&"DocSearch-Container--Stalled","error"===x.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&l()}}),ke.createElement("div",{className:"DocSearch-Modal",ref:q},ke.createElement("header",{className:"DocSearch-SearchBar",ref:T},ke.createElement(Dt,yr({},$,{state:x,autoFocus:0===F.length,inputRef:L,isFromSelection:Boolean(F)&&F===H,translations:C,onClose:l}))),ke.createElement("div",{className:"DocSearch-Dropdown",ref:_},ke.createElement(St,yr({},$,{indexName:n,state:x,hitComponent:m,resultsFooterComponent:d,disableUserPersonalization:S,recentSearches:V,favoriteSearches:B,inputRef:L,translations:k,getMissingResultsUrl:I,onItemClick:function(e){K(e),l()}}))),ke.createElement("footer",{className:"DocSearch-Footer"},ke.createElement(Re,{translations:D}))))}}}]);
\ No newline at end of file
diff --git a/assets/js/24a31860.213b15f0.js b/assets/js/24a31860.213b15f0.js
deleted file mode 100644
index b64293b..0000000
--- a/assets/js/24a31860.213b15f0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4250],{8130:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"startree-index","name":"startree index","count":1,"permalink":"/blog/tags/startree-index"}')}}]);
\ No newline at end of file
diff --git a/assets/js/26767057.511c99db.js b/assets/js/26767057.511c99db.js
deleted file mode 100644
index b384357..0000000
--- a/assets/js/26767057.511c99db.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8918],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return g}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(n),y=a,g=u["".concat(s,".").concat(y)]||u[y]||m[y]||o;return n?r.createElement(g,i(i({ref:t},p),{},{components:n})):r.createElement(g,i({ref:t},p))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}y.displayName="MDXCreateElement"},382:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return s},default:function(){return y},frontMatter:function(){return l},metadata:function(){return c},toc:function(){return p}});var r=n(7462),a=n(3366),o=(n(7294),n(4137)),i=["components"],l={title:"Deep Analysis of Russian Twitter Trolls",author:"Kenny Bastani",author_title:"Kenny Bastani",author_url:"https://medium.com/apache-pinot-developer-blog",author_image_url:"https://pinot.apache.org/authors/kenny.jpeg",description:"Show you how to use Apache Pinot and Superset to analyze 3 million tweets by the Internet Research Agency (IRA) open-sourced by FiveThirtyEight.",keywords:["Pinot","Uber Data","User-Facing Analytics","Real-time data platform"],tags:["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},s=void 0,c={permalink:"/blog/2020/10/16/DevBlog-TwitterTrollAnalysis",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2020-10-16-DevBlog-TwitterTrollAnalysis.md",source:"@site/blog/2020-10-16-DevBlog-TwitterTrollAnalysis.md",title:"Deep Analysis of Russian Twitter Trolls",description:"Show you how to use Apache Pinot and Superset to analyze 3 million tweets by the Internet Research Agency (IRA) open-sourced by FiveThirtyEight.",date:"2020-10-16T00:00:00.000Z",formattedDate:"October 16, 2020",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"DevBlog",permalink:"/blog/tags/dev-blog"},{label:"ThirdEye",permalink:"/blog/tags/third-eye"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.41,truncated:!1,prevItem:{title:"Operating Apache Pinot at Uber Scale",permalink:"/blog/2020/10/20/Uber-Operating"},nextItem:{title:"Leverage Plugins to Ingest Parquet Files from S3 in Pinot",permalink:"/blog/2020/08/08/DevBlog-IngestPlugins"}},p=[],u={toc:p},m="wrapper";function y(e){var t=e.components,n=(0,a.Z)(e,i);return(0,o.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The history behind Russian disinformation is a dense and continuously evolving subject. The world\u2019s best research hasn\u2019t seemed to hit the mainstream yet, which made this an excellent opportunity to see if I could use some open source tooling to surface new analytical evidence."),(0,o.kt)("p",null,"In this blog post, I\u2019ll show you how to use Apache Pinot and Superset to analyze 3 million tweets by the Internet Research Agency (IRA) open-sourced by FiveThirtyEight."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://towardsdatascience.com/a-deep-analysis-of-russian-trolls-with-apache-pinot-and-superset-590c8c4d1843"},"Read More at https://towardsdatascience.com/a-deep-analysis-of-russian-trolls-with-apache-pinot-and-superset-590c8c4d1843")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://miro.medium.com/max/4320/0*iqUTy0GkLFTcSYlR.png",alt:"Deep Analysis of Russian Twitter Trolls"})))}y.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/28329bc1.0f13980d.js b/assets/js/28329bc1.0f13980d.js
deleted file mode 100644
index 417a57d..0000000
--- a/assets/js/28329bc1.0f13980d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6735],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return g}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),d=a,g=u["".concat(c,".").concat(d)]||u[d]||m[d]||o;return n?r.createElement(g,i(i({ref:t},p),{},{components:n})):r.createElement(g,i({ref:t},p))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var s=2;s<o;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},4959:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return c},default:function(){return d},frontMatter:function(){return l},metadata:function(){return s},toc:function(){return p}});var r=n(7462),a=n(3366),o=(n(7294),n(4137)),i=["components"],l={title:"Using Apache Pinot and Kafka to Analyze GitHub Events",author:"Kenny Bastani",author_title:"Kenny Bastani",author_url:"https://medium.com/apache-pinot-developer-blog",author_image_url:"https://pinot.apache.org/authors/pinot_team.jpg",description:"Show you how Pinot and Kafka can be used together to ingest, query, and visualize event streams sourced from the public GitHub API.",keywords:["Pinot","LinkedIn","User Analytics","User-Facing Analytics","Real-time data platform"],tags:["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},c=void 0,s={permalink:"/blog/2020/04/10/DevBlog-AnalyzeGitEvents",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2020-04-10-DevBlog-AnalyzeGitEvents.md",source:"@site/blog/2020-04-10-DevBlog-AnalyzeGitEvents.md",title:"Using Apache Pinot and Kafka to Analyze GitHub Events",description:"Show you how Pinot and Kafka can be used together to ingest, query, and visualize event streams sourced from the public GitHub API.",date:"2020-04-10T00:00:00.000Z",formattedDate:"April 10, 2020",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"DevBlog",permalink:"/blog/tags/dev-blog"},{label:"ThirdEye",permalink:"/blog/tags/third-eye"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.32,truncated:!1,prevItem:{title:"Monitoring business performance data with ThirdEye smart alerts",permalink:"/blog/2020/06/25/LinkedIn-SmartAlerts"},nextItem:{title:"Analyzing anomalies with ThirdEye",permalink:"/blog/2020/02/20/LinkedIn-Thirdeye"}},p=[],u={toc:p},m="wrapper";function d(e){var t=e.components,n=(0,a.Z)(e,i);return(0,o.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"In this blog post, we\u2019ll show you how Pinot and Kafka can be used together to ingest, query, and visualize event streams sourced from the public GitHub API. For the step-by-step instructions, please visit our documentation, which will guide you through the specifics of running this example in your development environment."),(0,o.kt)("p",null,"Read More at ",(0,o.kt)("a",{parentName:"p",href:"https://medium.com/apache-pinot-developer-blog/using-apache-pinot-and-kafka-to-analyze-github-events-93cdcb57d5f7"},"https://medium.com/apache-pinot-developer-blog/using-apache-pinot-and-kafka-to-analyze-github-events-93cdcb57d5f7")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://miro.medium.com/max/4728/1*eR64jBH1ZvC3uNfPP56p5g.png",alt:"Using Apache Pinot and Kafka to Analyze GitHub Events"})))}d.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/2b3ebe57.54efcbd4.js b/assets/js/2b3ebe57.54efcbd4.js
deleted file mode 100644
index 5aeb56b..0000000
--- a/assets/js/2b3ebe57.54efcbd4.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5241],{5711:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"feature-contribution","name":"feature contribution","count":1,"permalink":"/blog/tags/feature-contribution"}')}}]);
\ No newline at end of file
diff --git a/assets/js/2baa666c.9b965555.js b/assets/js/2baa666c.9b965555.js
deleted file mode 100644
index e82fe52..0000000
--- a/assets/js/2baa666c.9b965555.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7501],{2799:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"trino","name":"trino","count":1,"permalink":"/blog/tags/trino"}')}}]);
\ No newline at end of file
diff --git a/assets/js/2c126a12.41c68a8f.js b/assets/js/2c126a12.41c68a8f.js
deleted file mode 100644
index 8b619ae..0000000
--- a/assets/js/2c126a12.41c68a8f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[500],{4098:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"joins","name":"joins","count":1,"permalink":"/blog/tags/joins"}')}}]);
\ No newline at end of file
diff --git a/assets/js/2f87eaf3.bba5f23c.js b/assets/js/2f87eaf3.bba5f23c.js
deleted file mode 100644
index 0a06f7d..0000000
--- a/assets/js/2f87eaf3.bba5f23c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1300],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return g}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},y=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(n),y=a,g=u["".concat(s,".").concat(y)]||u[y]||m[y]||o;return n?r.createElement(g,i(i({ref:t},p),{},{components:n})):r.createElement(g,i({ref:t},p))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=y;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var c=2;c<o;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}y.displayName="MDXCreateElement"},2959:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return s},default:function(){return y},frontMatter:function(){return l},metadata:function(){return c},toc:function(){return p}});var r=n(7462),a=n(3366),o=(n(7294),n(4137)),i=["components"],l={title:"Deep Analysis of Russian Twitter Trolls",author:"Kenny Bastani",author_title:"Kenny Bastani",author_url:"https://medium.com/apache-pinot-developer-blog",author_image_url:"https://pinot.apache.org/authors/kenny.jpeg",description:"Show you how to use Apache Pinot and Superset to analyze 3 million tweets by the Internet Research Agency (IRA) open-sourced by FiveThirtyEight.",keywords:["Pinot","Uber Data","User-Facing Analytics","Real-time data platform"],tags:["Pinot","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},s=void 0,c={permalink:"/blog/2020/10/16/DevBlog-TwitterTrollAnalysis",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2020-10-16-DevBlog-TwitterTrollAnalysis.md",source:"@site/blog/2020-10-16-DevBlog-TwitterTrollAnalysis.md",title:"Deep Analysis of Russian Twitter Trolls",description:"Show you how to use Apache Pinot and Superset to analyze 3 million tweets by the Internet Research Agency (IRA) open-sourced by FiveThirtyEight.",date:"2020-10-16T00:00:00.000Z",formattedDate:"October 16, 2020",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"DevBlog",permalink:"/blog/tags/dev-blog"},{label:"ThirdEye",permalink:"/blog/tags/third-eye"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.41,truncated:!1,prevItem:{title:"Operating Apache Pinot at Uber Scale",permalink:"/blog/2020/10/20/Uber-Operating"},nextItem:{title:"Leverage Plugins to Ingest Parquet Files from S3 in Pinot",permalink:"/blog/2020/08/08/DevBlog-IngestPlugins"}},p=[],u={toc:p},m="wrapper";function y(e){var t=e.components,n=(0,a.Z)(e,i);return(0,o.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"The history behind Russian disinformation is a dense and continuously evolving subject. The world\u2019s best research hasn\u2019t seemed to hit the mainstream yet, which made this an excellent opportunity to see if I could use some open source tooling to surface new analytical evidence."),(0,o.kt)("p",null,"In this blog post, I\u2019ll show you how to use Apache Pinot and Superset to analyze 3 million tweets by the Internet Research Agency (IRA) open-sourced by FiveThirtyEight."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://towardsdatascience.com/a-deep-analysis-of-russian-trolls-with-apache-pinot-and-superset-590c8c4d1843"},"Read More at https://towardsdatascience.com/a-deep-analysis-of-russian-trolls-with-apache-pinot-and-superset-590c8c4d1843")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://miro.medium.com/max/4320/0*iqUTy0GkLFTcSYlR.png",alt:"Deep Analysis of Russian Twitter Trolls"})))}y.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/30443acc.252d5719.js b/assets/js/30443acc.252d5719.js
deleted file mode 100644
index 69957c7..0000000
--- a/assets/js/30443acc.252d5719.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1836],{8172:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"dev-blog","name":"devblog","count":13,"permalink":"/blog/tags/dev-blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/319244b6.b3db9de1.js b/assets/js/319244b6.b3db9de1.js
deleted file mode 100644
index b6d29c8..0000000
--- a/assets/js/319244b6.b3db9de1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1221],{9742:function(s){s.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"compression","name":"compression","count":1,"permalink":"/blog/tags/compression"}')}}]);
\ No newline at end of file
diff --git a/assets/js/32cda74e.50cf1f09.js b/assets/js/32cda74e.50cf1f09.js
deleted file mode 100644
index c76f358..0000000
--- a/assets/js/32cda74e.50cf1f09.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8924],{3663:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"consumer-record-lag","name":"consumer record lag","count":1,"permalink":"/blog/tags/consumer-record-lag"}')}}]);
\ No newline at end of file
diff --git a/assets/js/332c576c.be02442f.js b/assets/js/332c576c.be02442f.js
deleted file mode 100644
index 5ef731f..0000000
--- a/assets/js/332c576c.be02442f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4974],{1145:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"data","name":"data","count":19,"permalink":"/blog/tags/data"}')}}]);
\ No newline at end of file
diff --git a/assets/js/3373d0df.89660d33.js b/assets/js/3373d0df.89660d33.js
deleted file mode 100644
index 3d107f1..0000000
--- a/assets/js/3373d0df.89660d33.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3139],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=d(n),h=i,m=c["".concat(s,".").concat(h)]||c[h]||u[h]||o;return n?a.createElement(m,r(r({ref:t},p),{},{components:n})):a.createElement(m,r({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,r[1]=l;for(var d=2;d<o;d++)r[d]=n[d];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},4851:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return s},default:function(){return h},frontMatter:function(){return l},metadata:function(){return d},toc:function(){return p}});var a=n(7462),i=n(3366),o=(n(7294),n(4137)),r=["components"],l={title:"Apache Pinot\u2122 0.11 - How do I see my indexes?",author:"Mark Needham",author_title:"Mark Needham",author_url:"https://www.linkedin.com/in/markhneedham/",author_image_url:"https://www.datocms-assets.com/75153/1661544338-mark-needham.png",description:"How you can work out which indexes are currently defined on a Pinot table",keywords:["Apache Pinot","Apache Pinot 0.11.0","Indexes"],tags:["Pinot","Data","Analytics","User-Facing Analytics","Indexes"]},s=void 0,d={permalink:"/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2022-11-08-Apache Pinot-How-do-I-see-my-indexes.md",source:"@site/blog/2022-11-08-Apache Pinot-How-do-I-see-my-indexes.md",title:"Apache Pinot\u2122 0.11 - How do I see my indexes?",description:"How you can work out which indexes are currently defined on a Pinot table",date:"2022-11-08T00:00:00.000Z",formattedDate:"November 8, 2022",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Data",permalink:"/blog/tags/data"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"Indexes",permalink:"/blog/tags/indexes"}],readingTime:3.79,truncated:!1,prevItem:{title:"Apache Pinot\u2122 0.11 - Inserts from SQL",permalink:"/blog/2022/11/17/Apache Pinot-Inserts-from-SQL"},nextItem:{title:"GapFill Function For Time-Series Datasets In Pinot",permalink:"/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot"}},p=[{value:"Spinning up Pinot",id:"spinning-up-pinot",children:[]},{value:"Indexing Config",id:"indexing-config",children:[]},{value:"Viewing Indexes",id:"viewing-indexes",children:[]},{value:"Adding an Index",id:"adding-an-index",children:[]},{value:"Summary",id:"summary",children:[]}],c={toc:p},u="wrapper";function h(e){var t=e.components,n=(0,i.Z)(e,r);return(0,o.kt)(u,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"We recently released ",(0,o.kt)("a",{parentName:"p",href:"https://medium.com/apache-pinot-developer-blog/apache-pinot-0-11-released-d564684df5d4"},"Pinot 0.11.0")," , which has lots of goodies for you to play with. This is the first in a series of blog posts showing off some of the new features in this release."),(0,o.kt)("p",null,"A common question from the community is: how can you work out which indexes are currently defined on a Pinot table? This information has always been ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/users/api/pinot-rest-admin-interface"},"available via the REST API"),", but sometimes you simply want to see it on the UI and not have to parse your way through a bunch of JSON. Let's see how it works!"),(0,o.kt)("h2",{id:"spinning-up-pinot"},"Spinning up Pinot"),(0,o.kt)("p",null,"We\u2019re going to spin up the Batch ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/getting-started/quick-start"},"QuickStart")," in Docker using the following command:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n  -p 8000:8000 \\\n  -p 9000:9000 \\\n  apachepinot/pinot:0.11.0 \\\n  QuickStart -type BATCH\n")),(0,o.kt)("p",null,"Or if you\u2019re on a Mac M1, change the name of the image to have the arm-64 suffix, like this:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n  -p 8000:8000 \\\n  -p 9000:9000 \\\n  apachepinot/pinot:0.11.0-arm64 \\\n  QuickStart -type BATCH\n")),(0,o.kt)("p",null,"Once that\u2019s up and running, navigate to ",(0,o.kt)("a",{parentName:"p",href:"http://localhost:9000/#/"},"http://localhost:9000/#/")," and click on Tables. Under the tables section click on airlineStats","_","OFFLINE. You should see a page that looks like this:"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667915561-image1-edittable.png",alt:"airlineStats_OFFLINE page",title:"airlineStats_OFFLINE page"})),(0,o.kt)("p",null,"Click on Edit Table. This will show a window with the config for this table."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667915654-image3.png",alt:"Window with configuration for airlineStats_OFFLINE table",title:"Window with configuration for airlineStats_OFFLINE table"})),(0,o.kt)("h2",{id:"indexing-config"},"Indexing Config"),(0,o.kt)("p",null,"We\u2019re interested in the tableIndexConfig and fieldConfigList sections. These sections are responsible for defining indexes, which are applied to a table on a per segment basis.\xa0"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"tableIndexConfig is responsible for inverted, JSON, range, Geospatial, and StarTree indexes."),(0,o.kt)("li",{parentName:"ul"},"fieldConfigList is responsible for timestamp and text indexes.")),(0,o.kt)("p",null,"tableIndexConfig is defined below:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'"tableIndexConfig": {\n  "rangeIndexVersion": 2,\n  "autoGeneratedInvertedIndex": false,\n  "createInvertedIndexDuringSegmentGeneration": false,\n  "loadMode": "MMAP",\n  "enableDefaultStarTree": false,\n  "enableDynamicStarTreeCreation": false,\n  "aggregateMetrics": false,\n  "nullHandlingEnabled": false,\n  "optimizeDictionaryForMetrics": false,\n  "noDictionarySizeRatioThreshold": 0\n},\n')),(0,o.kt)("p",null,"From reading this config we learn that no indexes have been explicitly defined."),(0,o.kt)("p",null,"Now for fieldConfigList, which is defined below:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'"fieldConfigList": [\n  {\n    "name": "ts",\n    "encodingType": "DICTIONARY",\n    "indexType": "TIMESTAMP",\n    "indexTypes": [\n      "TIMESTAMP"\n    ],\n    "timestampConfig": {\n      "granularities": [\n        "DAY",\n        "WEEK",\n        "MONTH"\n      ]\n    }\n  }\n],\n')),(0,o.kt)("p",null,"From reading this config we learn that a timestamp index is being applied to the ",(0,o.kt)("em",{parentName:"p"},"ts")," column. It is applied at DAY, WEEK, and MONTH granularities, which means that the derived columns $ts$DAY, $ts$WEEK, and $ts$MONTH will be created for the segments in this table."),(0,o.kt)("h2",{id:"viewing-indexes"},"Viewing Indexes"),(0,o.kt)("p",null,"Now, close the table config modal, and under the segments section, open airlineStats","_","OFFLINE","_","16071","_","16071","_","0 and airlineStats","_","OFFLINE","_","16073","_","16073","_","0 in new tabs."),(0,o.kt)("p",null,"If you look at one of those segments, you\u2019ll see the following grid that lists columns/field names against the indexes defined on those fields."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667915996-image7.png",alt:"Segment grid that lists columns/field names against the indexes defined on those fields",title:"Segment grid that lists columns/field names against the indexes defined on those fields"})),(0,o.kt)("p",null,"All the fields on display are persisting their values using the dictionary/forward ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/indexing/forward-index"},"index format")," ). Still, we can also see that the Quarter column is sorted and has an inverted index, neither of which we explicitly defined."),(0,o.kt)("p",null,"This is because Pinot will automatically create sorted and inverted indexes for columns whose data is sorted when the segment is created.\xa0"),(0,o.kt)("p",null,"So the data for the Quarter column was sorted, and hence it has a sorted index."),(0,o.kt)("p",null,"I\u2019ve written a couple of blog posts explaining how sorted indexes work on offline and real-time tables:"),(0,o.kt)("h2",{id:"adding-an-index"},"Adding an Index"),(0,o.kt)("p",null,"Next, let\u2019s see what happens if we add an explicit index. We\u2019re going to add an inverted index to the FlightNum column. Go to Edit Table config again and update tableIndexConfig to have the following value:"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667916147-image6.png",alt:"Inverted index addition",title:"Inverted index addition"})),(0,o.kt)("p",null,"If you go back to the page for segment airlineStats","_","OFFLINE","_","16073","_","16073","_","0, notice that it does not have an inverted index for this field."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667916232-image2.png",alt:"page for segment airlineStats_OFFLINE_16073_16073_0 without an inverted index",title:"page for segment airlineStats_OFFLINE_16073_16073_0 without an inverted index"})),(0,o.kt)("p",null,"This is because indexes are applied on a per segment basis. If we want the inverted index on the FlightNum column in this segment, we can click ",(0,o.kt)("em",{parentName:"p"},"Reload Segment")," on this page, or we can go back to the table page and click ",(0,o.kt)("em",{parentName:"p"},"Reload All Segments"),".\xa0"),(0,o.kt)("p",null,"If we do that, all the segments in the airlineStats","_","OFFLINE table will eventually have an inverted index on FlightNum."),(0,o.kt)("h2",{id:"summary"},"Summary"),(0,o.kt)("p",null,"As I mentioned in the introduction, information about the indexes on each segment has always been available via the REST API, but this feature democratizes that information.\xa0"),(0,o.kt)("p",null,"If you have any questions about this feature, feel free to join us on ",(0,o.kt)("a",{parentName:"p",href:"https://stree.ai/slack"},"Slack"),", where we\u2019ll be happy to help you out."))}h.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/35310c5a.f02e3e99.js b/assets/js/35310c5a.f02e3e99.js
deleted file mode 100644
index 681a37e..0000000
--- a/assets/js/35310c5a.f02e3e99.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 35310c5a.f02e3e99.js.LICENSE.txt */
-(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5924],{4137:function(e,n,t){"use strict";t.d(n,{Zo:function(){return c},kt:function(){return g}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?s(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):s(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function i(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},s=Object.keys(e);for(r=0;r<s.length;r++)t=s[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)t=s[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=r.createContext({}),u=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},c=function(e){var n=u(e.components);return r.createElement(l.Provider,{value:n},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},p=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,s=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),m=u(t),p=a,g=m["".concat(l,".").concat(p)]||m[p]||d[p]||s;return t?r.createElement(g,o(o({ref:n},c),{},{components:t})):r.createElement(g,o({ref:n},c))}));function g(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var s=t.length,o=new Array(s);o[0]=p;var i={};for(var l in n)hasOwnProperty.call(n,l)&&(i[l]=n[l]);i.originalType=e,i[m]="string"==typeof e?e:a,o[1]=i;for(var u=2;u<s;u++)o[u]=t[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,t)}p.displayName="MDXCreateElement"},8448:function(e,n,t){"use strict";var r=t(7294);n.Z=function(e){var n=e.children,t=e.hidden,a=e.className;return r.createElement("div",{role:"tabpanel",hidden:t,className:a},n)}},2168:function(e,n,t){"use strict";t.d(n,{Z:function(){return l}});var r=t(7294),a=t(50),s=t(6010),o={tabItem:"tabItem_vU9c",tabItemActive:"tabItemActive_cw6a",blink:"blink_4cVI"};var i={left:37,right:39};var l=function(e){var n=e.lazy,t=e.block,l=e.defaultValue,u=e.values,c=e.groupId,m=e.className,d=(0,a.Z)(),p=d.tabGroupChoices,g=d.setTabGroupChoices,f=(0,r.useState)(l),h=f[0],b=f[1],y=r.Children.toArray(e.children),v=[];if(null!=c){var k=p[c];null!=k&&k!==h&&u.some((function(e){return e.value===k}))&&b(k)}var N=function(e){var n=e.currentTarget,t=v.indexOf(n),r=u[t].value;b(r),null!=c&&(g(c,r),setTimeout((function(){var e,t,r,a,s,i,l,u;(e=n.getBoundingClientRect(),t=e.top,r=e.left,a=e.bottom,s=e.right,i=window,l=i.innerHeight,u=i.innerWidth,t>=0&&s<=u&&a<=l&&r>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(o.tabItemActive),setTimeout((function(){return n.classList.remove(o.tabItemActive)}),2e3))}),150))},S=function(e){var n,t;switch(e.keyCode){case i.right:var r=v.indexOf(e.target)+1;t=v[r]||v[0];break;case i.left:var a=v.indexOf(e.target)-1;t=v[a]||v[v.length-1]}null==(n=t)||n.focus()};return r.createElement("div",{className:"tabs-container"},r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":t},m)},u.map((function(e){var n=e.value,t=e.label;return r.createElement("li",{role:"tab",tabIndex:h===n?0:-1,"aria-selected":h===n,className:(0,s.Z)("tabs__item",o.tabItem,{"tabs__item--active":h===n}),key:n,ref:function(e){return v.push(e)},onKeyDown:S,onFocus:N,onClick:N},t)}))),n?(0,r.cloneElement)(y.filter((function(e){return e.props.value===h}))[0],{className:"margin-vert--md"}):r.createElement("div",{className:"margin-vert--md"},y.map((function(e,n){return(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==h})}))))}},2713:function(e,n,t){"use strict";var r=(0,t(7294).createContext)(void 0);n.Z=r},50:function(e,n,t){"use strict";var r=t(7294),a=t(2713);n.Z=function(){var e=(0,r.useContext)(a.Z);if(null==e)throw new Error('"useUserPreferencesContext" is used outside of "Layout" component.');return e}},6261:function(e,n,t){"use strict";var r=t(7294),a=t(4184),s=t.n(a);n.Z=function(e){var n=e.children,t=e.classNames,a=e.fill,o=e.icon,i=e.type,l=null;switch(i){case"danger":case"warning":l="alert-triangle";break;case"success":l="check-circle";break;default:l="info"}return r.createElement("div",{className:s()(t,"alert","alert--"+i,{"alert--fill":a,"alert--icon":!1!==o}),role:"alert"},!1!==o&&r.createElement("i",{className:s()("feather","icon-"+(o||l))}),n)}},9588:function(e,n,t){"use strict";t.r(n),t.d(n,{contentTitle:function(){return m},default:function(){return h},frontMatter:function(){return c},metadata:function(){return d},toc:function(){return p}});var r=t(7462),a=t(3366),s=(t(7294),t(4137)),o=t(6261),i=t(2168),l=t(8448),u=["components"],c={title:"Response Format",sidebar_label:"rest",description:"REST Response Format",draft:!0},m=void 0,d={unversionedId:"user-guide/response-format",id:"user-guide/response-format",isDocsHomePage:!1,title:"Response Format",description:"REST Response Format",source:"@site/docs/user-guide/response-format.md",sourceDirName:"user-guide",slug:"/user-guide/response-format",permalink:"/docs/user-guide/response-format",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/user-guide/response-format.md",version:"current",frontMatter:{title:"Response Format",sidebar_label:"rest",description:"REST Response Format",draft:!0}},p=[{value:"Standard-SQL response",id:"standard-sql-response",children:[]},{value:"PQL response",id:"pql-response",children:[]}],g={toc:p},f="wrapper";function h(e){var n=e.components,t=(0,a.Z)(e,u);return(0,s.kt)(f,(0,r.Z)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,s.kt)("h2",{id:"standard-sql-response"},"Standard-SQL response"),(0,s.kt)("p",null,"Response is returned in a SQL-like tabular structure. Note, this is the response returned from the standard-SQL endpoint. For PQL endpoint response, skip to ",(0,s.kt)("a",{parentName:"p",href:"/docs/user-guide/response-format"},"PQL endpoint response\u200b")),(0,s.kt)(i.Z,{block:!0,defaultValue:"Aggregations",urlKey:"arch",values:[{label:"Selections",value:"Selections"},{label:"Aggregations",value:"Aggregations"},{label:"GroupBy",value:"GroupBy"}],mdxType:"Tabs"},(0,s.kt)(l.Z,{value:"Selections",mdxType:"TabItem"},(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sql"},'$ curl -H "Content-Type: application/json" -X POST \\\n   -d \'{"sql":"SELECT moo, bar, foo FROM myTable ORDER BY foo DESC"}\' \\\n   http://localhost:8099/query/sql\n{\n  "exceptions": [],\n  "minConsumingFreshnessTimeMs": 0,\n  "numConsumingSegmentsQueried": 0,\n  "numDocsScanned": 6,\n  "numEntriesScannedInFilter": 0,\n  "numEntriesScannedPostFilter": 18,\n  "numGroupsLimitReached": false,\n  "numSegmentsMatched": 2,\n  "numSegmentsProcessed": 2,\n  "numSegmentsQueried": 2,\n  "numServersQueried": 1,\n  "numServersResponded": 1,\n  "resultTable": {\n    "dataSchema": {\n      "columnDataTypes": [\n        "LONG",\n        "INT",\n        "STRING"\n      ],\n      "columnNames": [\n        "moo",\n        "bar",\n        "foo"\n      ]\n    },\n    "rows": [\n      [\n        40015,\n        2019,\n        "xyz"\n      ],\n      [\n        1002,\n        2001,\n        "pqr"\n      ],\n      [\n        20555,\n        1988,\n        "pqr"\n      ],\n      [\n        203,\n        2010,\n        "pqr"\n      ],\n      [\n        500,\n        2008,\n        "abc"\n      ],\n      [\n        60,\n        2003,\n        "abc"\n      ]\n    ]\n  },\n  "segmentStatistics": [],\n  "timeUsedMs": 4,\n  "totalDocs": 6,\n  "traceInfo": {}\n}\n'))),(0,s.kt)(l.Z,{value:"Aggregations",mdxType:"TabItem"},(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sql"},'$ curl -X POST \\\n  -d \'{"sql":"SELECT SUM(moo), MAX(bar), COUNT(*) FROM myTable"}\' \\\n  localhost:8099/query/sql -H "Content-Type: application/json"\n{\n  "exceptions": [],\n  "minConsumingFreshnessTimeMs": 0,\n  "numConsumingSegmentsQueried": 0,\n  "numDocsScanned": 6,\n  "numEntriesScannedInFilter": 0,\n  "numEntriesScannedPostFilter": 12,\n  "numGroupsLimitReached": false,\n  "numSegmentsMatched": 2,\n  "numSegmentsProcessed": 2,\n  "numSegmentsQueried": 2,\n  "numServersQueried": 1,\n  "numServersResponded": 1,\n  "resultTable": {\n    "dataSchema": {\n      "columnDataTypes": [\n        "DOUBLE",\n        "DOUBLE",\n        "LONG"\n      ],\n      "columnNames": [\n        "sum(moo)",\n        "max(bar)",\n        "count(*)"\n      ]\n    },\n    "rows": [\n      [\n        62335,\n        2019.0,\n        6\n      ]\n    ]\n  },\n  "segmentStatistics": [],\n  "timeUsedMs": 87,\n  "totalDocs": 6,\n  "traceInfo": {}\n}\n'))),(0,s.kt)(l.Z,{value:"GroupBy",mdxType:"TabItem"},(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sql"},'$ curl -X POST \\\n  -d \'{"sql":"SELECT SUM(moo), MAX(bar) FROM myTable GROUP BY foo ORDER BY foo"}\' \\\n  localhost:8099/query/sql -H "Content-Type: application/json"\n{\n  "exceptions": [],\n  "minConsumingFreshnessTimeMs": 0,\n  "numConsumingSegmentsQueried": 0,\n  "numDocsScanned": 6,\n  "numEntriesScannedInFilter": 0,\n  "numEntriesScannedPostFilter": 18,\n  "numGroupsLimitReached": false,\n  "numSegmentsMatched": 2,\n  "numSegmentsProcessed": 2,\n  "numSegmentsQueried": 2,\n  "numServersQueried": 1,\n  "numServersResponded": 1,\n  "resultTable": {\n    "dataSchema": {\n      "columnDataTypes": [\n        "STRING",\n        "DOUBLE",\n        "DOUBLE"\n      ],\n      "columnNames": [\n        "foo",\n        "sum(moo)",\n        "max(bar)"\n      ]\n    },\n    "rows": [\n      [\n        "abc",\n        560.0,\n        2008.0\n      ],\n      [\n        "pqr",\n        21760.0,\n        2010.0\n      ],\n      [\n        "xyz",\n        40015.0,\n        2019.0\n      ]\n    ]\n  },\n  "segmentStatistics": [],\n  "timeUsedMs": 15,\n  "totalDocs": 6,\n  "traceInfo": {}\n}\n')))),(0,s.kt)("p",null,"where:"),(0,s.kt)("table",null,(0,s.kt)("thead",{parentName:"table"},(0,s.kt)("tr",{parentName:"thead"},(0,s.kt)("th",{parentName:"tr",align:null},"Response Field"),(0,s.kt)("th",{parentName:"tr",align:null},"Description"))),(0,s.kt)("tbody",{parentName:"table"},(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"resultTable"),(0,s.kt)("td",{parentName:"tr",align:null},"This contains everything needed to process the response")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"resultTable.dataSchema"),(0,s.kt)("td",{parentName:"tr",align:null},"This describes schema of the response (columnNames and their dataTypes)")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"resultTable.dataSchema.columnNames"),(0,s.kt)("td",{parentName:"tr",align:null},"columnNames in the response.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"resultTable.dataSchema.columnDataTypes"),(0,s.kt)("td",{parentName:"tr",align:null},"DataTypes for each column")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"resultTable.rows"),(0,s.kt)("td",{parentName:"tr",align:null},"Actual content with values. This is an array of arrays. number of rows depends on the limit value in the query. The number of columns in each row is equal to the length of (resultTable.dataSchema.columnNames)")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"timeUsedms"),(0,s.kt)("td",{parentName:"tr",align:null},"Total time taken as seen by the broker before sending the response back to the client")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"totalDocs"),(0,s.kt)("td",{parentName:"tr",align:null},"This is number of documents/records in the table")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numServersQueried"),(0,s.kt)("td",{parentName:"tr",align:null},"represents the number of servers queried by the broker (note that this may be less than the total number of servers since broker can apply some optimizations to minimize the number of servers)")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numServersResponded"),(0,s.kt)("td",{parentName:"tr",align:null},"This should be equal to the numServersQueried. If this is not the same, then one of more servers might have timed out. If numServersQueried != numServersResponded the results can be considered partial and clients can retry the query with exponential back off.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numSegmentsQueried"),(0,s.kt)("td",{parentName:"tr",align:null},"Total number of segmentsQueried for this query. it may be less than the total number of segments since broker can apply optimizations.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numSegmentsMatched"),(0,s.kt)("td",{parentName:"tr",align:null},"This is the number of segments actually processed. This indicates the effectiveness of pruning logic (based on partitioning, time etc).")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numSegmentsProcessed"),(0,s.kt)("td",{parentName:"tr",align:null},"Actual number of segments that were processed. This is where the majority of the time is spent.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numDocScanned"),(0,s.kt)("td",{parentName:"tr",align:null},"The number of docs/records that were scanned to process the query. This includes the docs scanned in filter phase (this can be zero if columns in query are indexed) and post filter.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numEntriesScannedInFilter"),(0,s.kt)("td",{parentName:"tr",align:null},"This along with numEntriesScannedInPostFilter should give an idea on where most of the time is spent during query processing. If this is high, enabling indexing for columns in tableConfig can be one way to bring it down.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numEntriesScannedPostFilter"),(0,s.kt)("td",{parentName:"tr",align:null},"This along with numEntriesScannedInPostFilter should give an idea on where most of the time is spent during query processing. A high number for this means the selectivity is low (i.e. pinot needs to scan a lot of records to answer the query). If this is high, adding regular inverted/bitmap index will not  help. However, consider using start-tree index.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"numGroupsLimitReached"),(0,s.kt)("td",{parentName:"tr",align:null},"If the query has group by clause and top K, pinot drops new entries after the numGroupsLimit is reached. If this boolean is set to true then the query result may not be accurate. Note that the default value for numGroupsLimit is 100k and should be sufficient for most use cases.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"exceptions"),(0,s.kt)("td",{parentName:"tr",align:null},"Will contain the stack trace if there is any exception processing the query.")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"segmentStatistics"),(0,s.kt)("td",{parentName:"tr",align:null},"N/A")),(0,s.kt)("tr",{parentName:"tbody"},(0,s.kt)("td",{parentName:"tr",align:null},"traceInfo"),(0,s.kt)("td",{parentName:"tr",align:null},"If trace is enabled (can be enabled for each query), this will contain the timing for each stage and each segment. Advanced feature and intended for dev/debugging purposes")))),(0,s.kt)("h2",{id:"pql-response"},"PQL response"),(0,s.kt)(o.Z,{type:"info",mdxType:"Alert"}," PQL endpoint is deprecated, and will soon be removed. The standard sql endpoint is the recommended endpoint.."),(0,s.kt)("p",null,"The response received from PQL endpoint is different depending on the type of the query."),(0,s.kt)(i.Z,{block:!0,defaultValue:"Aggregations",urlKey:"arch",values:[{label:"Selections",value:"Selections"},{label:"Aggregations",value:"Aggregations"},{label:"GroupBy",value:"GroupBy"}],mdxType:"Tabs"},(0,s.kt)(l.Z,{value:"Selections",mdxType:"TabItem"},(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sql"},'curl -X POST \\\n  -d \'{"pql":"select * from flights limit 3"}\' \\\n  http://localhost:8099/query\n\n\n{\n "selectionResults":{\n    "columns":[\n       "Cancelled",\n       "Carrier",\n       "DaysSinceEpoch",\n       "Delayed",\n       "Dest",\n       "DivAirports",\n       "Diverted",\n       "Month",\n       "Origin",\n       "Year"\n    ],\n    "results":[\n       [\n          "0",\n          "AA",\n          "16130",\n          "0",\n          "SFO",\n          [],\n          "0",\n          "3",\n          "LAX",\n          "2014"\n       ],\n       [\n          "0",\n          "AA",\n          "16130",\n          "0",\n          "LAX",\n          [],\n          "0",\n          "3",\n          "SFO",\n          "2014"\n       ],\n       [\n          "0",\n          "AA",\n          "16130",\n          "0",\n          "SFO",\n          [],\n          "0",\n          "3",\n          "LAX",\n          "2014"\n       ]\n    ]\n },\n "traceInfo":{},\n "numDocsScanned":3,\n "aggregationResults":[],\n "timeUsedMs":10,\n "segmentStatistics":[],\n "exceptions":[],\n "totalDocs":102\n}\n'))),(0,s.kt)(l.Z,{value:"Aggregations",mdxType:"TabItem"},(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sql"},'curl -X POST \\\n  -d \'{"pql":"select count(*) from flights"}\' \\\n  http://localhost:8099/query\n\n\n{\n "traceInfo":{},\n "numDocsScanned":17,\n "aggregationResults":[\n    {\n       "function":"count_star",\n       "value":"17"\n    }\n ],\n "timeUsedMs":27,\n "segmentStatistics":[],\n "exceptions":[],\n "totalDocs":17\n}\n'))),(0,s.kt)(l.Z,{value:"GroupBy",mdxType:"TabItem"},(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-sql"},'curl -X POST \\\n  -d \'{"pql":"select count(*) from flights group by Carrier"}\' \\\n  http://localhost:8099/query\n\n\n{\n "traceInfo":{},\n "numDocsScanned":23,\n "aggregationResults":[\n    {\n       "groupByResult":[\n          {\n             "value":"10",\n             "group":["AA"]\n          },\n          {\n             "value":"9",\n             "group":["VX"]\n          },\n          {\n             "value":"4",\n             "group":["WN"]\n          }\n       ],\n       "function":"count_star",\n       "groupByColumns":["Carrier"]\n    }\n ],\n "timeUsedMs":47,\n "segmentStatistics":[],\n "exceptions":[],\n "totalDocs":23\n}\n')))))}h.isMDXComponent=!0},4184:function(e,n){var t;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],n=0;n<arguments.length;n++){var t=arguments[n];if(t){var s=typeof t;if("string"===s||"number"===s)e.push(t);else if(Array.isArray(t)){if(t.length){var o=a.apply(null,t);o&&e.push(o)}}else if("object"===s)if(t.toString===Object.prototype.toString)for(var i in t)r.call(t,i)&&t[i]&&e.push(i);else e.push(t.toString())}}return e.join(" ")}e.exports?(a.default=a,e.exports=a):void 0===(t=function(){return a}.apply(n,[]))||(e.exports=t)}()},6010:function(e,n,t){"use strict";function r(e){var n,t,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n<e.length;n++)e[n]&&(t=r(e[n]))&&(a&&(a+=" "),a+=t);else for(n in e)e[n]&&(a&&(a+=" "),a+=n);return a}n.Z=function(){for(var e,n,t=0,a="";t<arguments.length;)(e=arguments[t++])&&(n=r(e))&&(a&&(a+=" "),a+=n);return a}}}]);
\ No newline at end of file
diff --git a/assets/js/35310c5a.f02e3e99.js.LICENSE.txt b/assets/js/35310c5a.f02e3e99.js.LICENSE.txt
deleted file mode 100644
index 0c20a87..0000000
--- a/assets/js/35310c5a.f02e3e99.js.LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
-  Copyright (c) 2018 Jed Watson.
-  Licensed under the MIT License (MIT), see
-  http://jedwatson.github.io/classnames
-*/
diff --git a/assets/js/353f083c.562d6186.js b/assets/js/353f083c.562d6186.js
deleted file mode 100644
index 370ba10..0000000
--- a/assets/js/353f083c.562d6186.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1845],{4137:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return d}});var i=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=i.createContext({}),s=function(e){var t=i.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=s(e.components);return i.createElement(c.Provider,{value:t},e.children)},p="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(n),m=r,d=p["".concat(c,".").concat(m)]||p[m]||g[m]||a;return n?i.createElement(d,o(o({ref:t},u),{},{components:n})):i.createElement(d,o({ref:t},u))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[p]="string"==typeof e?e:r,o[1]=l;for(var s=2;s<a;s++)o[s]=n[s];return i.createElement.apply(null,o)}return i.createElement.apply(null,n)}m.displayName="MDXCreateElement"},1050:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return c},default:function(){return m},frontMatter:function(){return l},metadata:function(){return s},toc:function(){return u}});var i=n(7462),r=n(3366),a=(n(7294),n(4137)),o=["components"],l={title:"Auto-tuning Pinot real-time consumption",author:"LinkedIn",author_title:"LinkedIn Engineering Team",author_url:"https://engineering.linkedin.com/blog/topic/pinot",author_image_url:"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Linkedin_icon.svg/512px-Linkedin_icon.svg.png",description:"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.",keywords:["Pinot","Uber Data","Auto Tuning","User-Facing Analytics","Real-time data platform"],tags:["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},c=void 0,s={permalink:"/blog/2019/07/11/LinkedIn-AutoTune",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2019-07-11-LinkedIn-AutoTune.md",source:"@site/blog/2019-07-11-LinkedIn-AutoTune.md",title:"Auto-tuning Pinot real-time consumption",description:"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.",date:"2019-07-11T00:00:00.000Z",formattedDate:"July 11, 2019",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"LinkedIn",permalink:"/blog/tags/linked-in"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.24,truncated:!1,prevItem:{title:"Engineering SQL Support on Apache Pinot at Uber",permalink:"/blog/2020/01/15/Pinot-Presto-SQL"},nextItem:{title:"Star-tree index - Powering fast aggregations on Pinot",permalink:"/blog/2019/06/14/LinkedIn-StarTree"}},u=[],p={toc:u},g="wrapper";function m(e){var t=e.components,n=(0,r.Z)(e,o);return(0,a.kt)(g,(0,i.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"Focus on Auto tuning Pinot, a scalable distributed columnar OLAP data store developed at LinkedIn, delivers real-time analytics for site-facing use cases such as LinkedIn's Who viewed my profile, Talent insights, and more."),(0,a.kt)("p",null,"Read More at ",(0,a.kt)("a",{parentName:"p",href:"https://engineering.linkedin.com/blog/2020/bridging-batch-and-stream-processing"},"https://engineering.linkedin.com/blog/2020/bridging-batch-and-stream-processing")),(0,a.kt)("p",null,(0,a.kt)("img",{parentName:"p",src:"https://content.linkedin.com/content/dam/engineering/site-assets/images/blog/posts/2020/07/bridging-1.png",alt:"Bridging batch and stream processing for the Recruiter usage statistics dashboard"})))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/3614913f.19657272.js b/assets/js/3614913f.19657272.js
deleted file mode 100644
index b2492ec..0000000
--- a/assets/js/3614913f.19657272.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1321],{8936:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"analytics","name":"analytics","count":47,"permalink":"/blog/tags/analytics"}')}}]);
\ No newline at end of file
diff --git a/assets/js/36f2a54f.33fdb13a.js b/assets/js/36f2a54f.33fdb13a.js
deleted file mode 100644
index e5c5461..0000000
--- a/assets/js/36f2a54f.33fdb13a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6588],{257:function(e){e.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"improved-query-performance","name":"improved query performance","count":1,"permalink":"/blog/tags/improved-query-performance"}')}}]);
\ No newline at end of file
diff --git a/assets/js/3765a346.86056d3a.js b/assets/js/3765a346.86056d3a.js
deleted file mode 100644
index dd989d1..0000000
--- a/assets/js/3765a346.86056d3a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5389],{4137:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return g}});var a=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function r(e,t){if(null==e)return{};var n,a,o=function(e,t){if(null==e)return{};var n,a,o={},i=Object.keys(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),h=p(n),m=o,g=h["".concat(l,".").concat(m)]||h[m]||u[m]||i;return n?a.createElement(g,s(s({ref:t},c),{},{components:n})):a.createElement(g,s({ref:t},c))}));function g(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,s=new Array(i);s[0]=m;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[h]="string"==typeof e?e:o,s[1]=r;for(var p=2;p<i;p++)s[p]=n[p];return a.createElement.apply(null,s)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"},3794:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return l},default:function(){return m},frontMatter:function(){return r},metadata:function(){return p},toc:function(){return c}});var a=n(7462),o=n(3366),i=(n(7294),n(4137)),s=["components"],r={title:"Apache Pinot\u2122 0.11 - Inserts from SQL",author:"Mark Needham",author_title:"Mark Needham",author_url:"https://www.linkedin.com/in/markhneedham/",author_image_url:"https://www.datocms-assets.com/75153/1661544338-mark-needham.png",description:"Explore the INSERT INTO clause, which makes ingesting batch data into Pinot as easy as writing a SQL query.",keywords:["Apache Pinot","Apache Pinot 0.11.0","Insert Into"],tags:["Pinot","Data","Analytics","User-Facing Analytics","Insert"]},l=void 0,p={permalink:"/blog/2022/11/17/Apache Pinot-Inserts-from-SQL",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2022-11-17-Apache Pinot-Inserts-from-SQL.md",source:"@site/blog/2022-11-17-Apache Pinot-Inserts-from-SQL.md",title:"Apache Pinot\u2122 0.11 - Inserts from SQL",description:"Explore the INSERT INTO clause, which makes ingesting batch data into Pinot as easy as writing a SQL query.",date:"2022-11-17T00:00:00.000Z",formattedDate:"November 17, 2022",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Data",permalink:"/blog/tags/data"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"Insert",permalink:"/blog/tags/insert"}],readingTime:3.775,truncated:!1,prevItem:{title:"Apache Pinot\u2122 0.11 - Timestamp Indexes",permalink:"/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes"},nextItem:{title:"Apache Pinot\u2122 0.11 - How do I see my indexes?",permalink:"/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes"}},c=[{value:"Batch importing: The Job Specification",id:"batch-importing-the-job-specification",children:[]},{value:"Batch Importing with SQL",id:"batch-importing-with-sql",children:[]},{value:"Summary",id:"summary",children:[]}],h={toc:c},u="wrapper";function m(e){var t=e.components,n=(0,o.Z)(e,s);return(0,i.kt)(u,(0,a.Z)({},h,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"The Apache Pinot community recently released version ",(0,i.kt)("a",{parentName:"p",href:"https://medium.com/apache-pinot-developer-blog/apache-pinot-0-11-released-d564684df5d4"},"0.11.0"),", which has lots of goodies for you to play with. This is the second in a series of blog posts showing off some of the new features in this release."),(0,i.kt)("p",null,"In this post, we\u2019re going to explore the ",(0,i.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/data-import/from-query-console"},"INSERT INTO clause"),", which makes ingesting batch data into Pinot as easy as writing a SQL query."),(0,i.kt)("h2",{id:"batch-importing-the-job-specification"},"Batch importing: The Job Specification"),(0,i.kt)("p",null,"The power of this new clause is only fully appreciated if we look at what we had to do before it existed.\xa0"),(0,i.kt)("p",null,"In the ",(0,i.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=1EMBx1XeI9o"},"Batch Import JSON from Amazon S3 into Apache Pinot | StarTree Recipes")," video (and ",(0,i.kt)("a",{parentName:"p",href:"https://dev.startree.ai/docs/pinot/recipes/ingest-csv-files-from-s3"},"accompanying developer guide"),"), we showed how to ingest data into Pinot from an S3 bucket."),(0,i.kt)("p",null,"The contents of that bucket are shown in the screenshot below:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1668701275-image4.png",alt:"Sample data ingested into Apache Pinot from a S3 bucket",title:"Sample data ingested into Apache Pinot from a S3 bucket"})),(0,i.kt)("p",null,"Let\u2019s quickly recap the steps that we had to do to import those files into Pinot. We have a table called events, which has the following schema:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1668701353-image1.png",alt:"Events schema table",title:"Events schema table"})),(0,i.kt)("p",null,"We first created a job specification file, which contains a description of our import job. The job file is shown below:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-yaml"},"executionFrameworkSpec:\n  name: 'standalone'\n  segmentGenerationJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner'\n  segmentTarPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner'\n  segmentUriPushJobRunnerClassName: 'org.apache.pinot.plugin.ingestion.batch.standalone.SegmentUriPushJobRunner'\njobType: SegmentCreationAndTarPush\ninputDirURI: 's3://marks-st-cloud-bucket/events/'\nincludeFileNamePattern: 'glob:**/*.json'\noutputDirURI: '/data'\noverwriteOutput: true\npinotFSSpecs:\n  - scheme: s3\n    className: org.apache.pinot.plugin.filesystem.S3PinotFS\n    configs:\n      region: 'eu-west-2'\n  - scheme: file\n    className: org.apache.pinot.spi.filesystem.LocalPinotFS\nrecordReaderSpec:\n  dataFormat: 'json'\n  className: 'org.apache.pinot.plugin.inputformat.json.JSONRecordReader'\ntableSpec:\n  tableName: 'events'\npinotClusterSpecs:\n  - controllerURI: 'http://${PINOT_CONTROLLER}:9000'\n")),(0,i.kt)("p",null,"At a high level, this file describes a batch import job that will ingest files from the S3 bucket at s3://marks-st-cloud-bucket/events/ where the files match the glob:","*","*","/","*",".json pattern."),(0,i.kt)("p",null,"We can import the data by running the following command from the terminal:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n  --network ingest-json-files-s3 \\\n  -v $PWD/config:/config \\\n  -e AWS_ACCESS_KEY_ID=AKIARCOCT6DWLUB7F77Z \\\n  -e AWS_SECRET_ACCESS_KEY=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 \\\n  apachepinot/pinot:0.11.0 LaunchDataIngestionJob \\\n  -jobSpecFile /config/job-spec.yml \\\n  -values PINOT_CONTROLLER=pinot-controller\n")),(0,i.kt)("p",null,"And don\u2019t worry, those credentials have already been deleted; I find it easier to understand what values go where if we use real values.\xa0"),(0,i.kt)("p",null,"Once we\u2019ve run this command, if we go to the Pinot UI\xa0at ",(0,i.kt)("a",{parentName:"p",href:"http://localhost:9000/"},"http://localhost:9000")," and click through to the events table from the Query Console menu, we\u2019ll see that the records have been imported, as shown in the screenshot below:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1668701512-image3.png",alt:"Sample imported records shown in the Apache Pinot Query Console menu",title:"Sample imported records shown in the Apache Pinot Query Console menu"})),(0,i.kt)("p",null,"This approach works, and we may still prefer to use it when we need fine-grained control over the ingestion parameters, but it is a bit heavyweight for your everyday data import!"),(0,i.kt)("h2",{id:"batch-importing-with-sql"},"Batch Importing with SQL"),(0,i.kt)("p",null,"Now let\u2019s do the same thing in SQL."),(0,i.kt)("p",null,"There are some prerequisites to using the SQL approach, so let\u2019s go through those now, so you don\u2019t end up with a bunch of exceptions when you try this out!\xa0"),(0,i.kt)("p",null,"First of all, you must have a ",(0,i.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/components/minion"},"Minion")," in the Pinot cluster, as this is the component that will do the data import."),(0,i.kt)("p",null,"You\u2019ll also need to include the following in your table config:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'"task": {\n  "taskTypeConfigsMap": { "SegmentGenerationAndPushTask": {} }\n}\n')),(0,i.kt)("p",null,"As long as you\u2019ve done those two things, we\u2019re ready to write our import query! A query that imports JSON files from my S3 bucket is shown below:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"INSERT INTO events\nFROM FILE 's3://marks-st-cloud-bucket/events/'\nOPTION(\n  taskName=events-task,\n  includeFileNamePattern=glob:**/*.json,\n  input.fs.className=org.apache.pinot.plugin.filesystem.S3PinotFS,\n  input.fs.prop.accessKey=AKIARCOCT6DWLUB7F77Z,\n  input.fs.prop.secretKey=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,\n  input.fs.prop.region=eu-west-2\n);\n")),(0,i.kt)("p",null,"If we run this query, we\u2019ll see the following output:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1668701654-image5.png",alt:"Sample events_OFFLINE query result",title:"Sample events_OFFLINE query result"})),(0,i.kt)("p",null,"We can check on the state of the ingestion job via the Swagger REST API. If we navigate to ",(0,i.kt)("a",{parentName:"p",href:"http://localhost:9000/help#/Task/getTaskState"},"http://localhost:9000/help#/Task/getTaskState"),", paste Task","_","SegmentGenerationAndPushTask","_","events-task as our task name, and then click Execute, we\u2019ll see the following:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1668701727-image2.png",alt:"Checking the state of an ingestion job screen",title:"Checking the state of an ingestion job screen"})),(0,i.kt)("p",null,"If we see the state COMPLETED, this means the data has been ingested, which we can check by going back to the Query console and clicking on the events table."),(0,i.kt)("h2",{id:"summary"},"Summary"),(0,i.kt)("p",null,"I have to say that batch ingestion of data into Apache Pinot has always felt a bit clunky, but with this new clause, it\u2019s super easy, and it\u2019s gonna save us all a bunch of time."),(0,i.kt)("p",null,"Also, anything that means I\u2019m not writing YAML files has got to be a good thing!"),(0,i.kt)("p",null,"So give it a try and let us know how you get on. If you have any questions about this feature, feel free to join us on ",(0,i.kt)("a",{parentName:"p",href:"https://stree.ai/slack"},"Slack"),", where we\u2019ll be happy to help you out."))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/37aeba23.2ad99b4b.js b/assets/js/37aeba23.2ad99b4b.js
deleted file mode 100644
index c9caa63..0000000
--- a/assets/js/37aeba23.2ad99b4b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7799],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return g}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),f=a,g=u["".concat(c,".").concat(f)]||u[f]||m[f]||i;return n?r.createElement(g,o(o({ref:t},p),{},{components:n})):r.createElement(g,o({ref:t},p))}));function g(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var s=2;s<i;s++)o[s]=n[s];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},3650:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return c},default:function(){return f},frontMatter:function(){return l},metadata:function(){return s},toc:function(){return p}});var r=n(7462),a=n(3366),i=(n(7294),n(4137)),o=["components"],l={title:"Operating Apache Pinot at Uber Scale",author:"Uber",author_title:"Uber Data Team",author_url:"https://eng.uber.com/category/articles/uberdata/",author_image_url:"https://pbs.twimg.com/profile_images/1192909783856103427/6A4s8gW2_400x400.png",description:"Present details of this platform and how it fits in Uber\u2019s ecosystem. Explain how uber scaled from a few use cases to a multi-cluster powering hundreds of use cases for querying terabyte-scale data with millisecond latencies.",keywords:["Pinot","Uber Data","User-Facing Analytics","Real-time data platform"],tags:["Pinot","Uber","real-time data platform","Realtime","Analytics","User-Facing Analytics","financial intelligence"]},c=void 0,s={permalink:"/blog/2020/10/20/Uber-Operating",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2020-10-20-Uber-Operating.md",source:"@site/blog/2020-10-20-Uber-Operating.md",title:"Operating Apache Pinot at Uber Scale",description:"Present details of this platform and how it fits in Uber\u2019s ecosystem. Explain how uber scaled from a few use cases to a multi-cluster powering hundreds of use cases for querying terabyte-scale data with millisecond latencies.",date:"2020-10-20T00:00:00.000Z",formattedDate:"October 20, 2020",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Uber",permalink:"/blog/tags/uber"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"financial intelligence",permalink:"/blog/tags/financial-intelligence"}],readingTime:.435,truncated:!1,prevItem:{title:"From Lambda to Lambda-less Lessons learned",permalink:"/blog/2020/12/01/LinkedIn-Lamda"},nextItem:{title:"Deep Analysis of Russian Twitter Trolls",permalink:"/blog/2020/10/16/DevBlog-TwitterTrollAnalysis"}},p=[],u={toc:p},m="wrapper";function f(e){var t=e.components,n=(0,a.Z)(e,o);return(0,i.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Uber has a complex marketplace consisting of riders, drivers, eaters, restaurants and so on. Operating that marketplace at a global scale requires real-time intelligence and decision making. For instance, identifying delayed Uber Eats orders or abandoned carts helps to enable our community operations team to take corrective action. Having a real-time dashboard of different events such as consumer demand, driver availability, or trips happening in a city is crucial for day-to-day operation, incident triaging, and financial intelligence."),(0,i.kt)("p",null,"Read More at ",(0,i.kt)("a",{parentName:"p",href:"https://eng.uber.com/operating-apache-pinot/"},"https://eng.uber.com/operating-apache-pinot/")),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://1fykyq3mdn5r21tpna3wkdyi-wpengine.netdna-ssl.com/wp-content/uploads/2020/10/1224-5.png",alt:"Operating Apache Pinot at Uber Scale"})))}f.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/37d57673.5e92dd2e.js b/assets/js/37d57673.5e92dd2e.js
deleted file mode 100644
index 57475f0..0000000
--- a/assets/js/37d57673.5e92dd2e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6961],{4137:function(e,t,a){a.d(t,{Zo:function(){return m},kt:function(){return h}});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){i(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function l(e,t){if(null==e)return{};var a,n,i=function(e,t){if(null==e)return{};var a,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)a=o[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=n.createContext({}),c=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},m=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},p="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),p=c(a),d=i,h=p["".concat(s,".").concat(d)]||p[d]||u[d]||o;return a?n.createElement(h,r(r({ref:t},m),{},{components:a})):n.createElement(h,r({ref:t},m))}));function h(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=a.length,r=new Array(o);r[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:i,r[1]=l;for(var c=2;c<o;c++)r[c]=a[c];return n.createElement.apply(null,r)}return n.createElement.apply(null,a)}d.displayName="MDXCreateElement"},1486:function(e,t,a){a.r(t),a.d(t,{contentTitle:function(){return s},default:function(){return d},frontMatter:function(){return l},metadata:function(){return c},toc:function(){return m}});var n=a(7462),i=a(3366),o=(a(7294),a(4137)),r=["components"],l={title:"Apache Pinot\u2122 0.11 - Timestamp Indexes",author:"Mark Needham",author_title:"Mark Needham",author_url:"https://www.linkedin.com/in/markhneedham/",author_image_url:"https://www.datocms-assets.com/75153/1661544338-mark-needham.png",description:"Users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conversion work that takes a long time at large data volumes. The timestamp index solves that problem!",keywords:["Apache Pinot","Apache Pinot 0.11.0","Timestamp Index","datetrunc"],tags:["Pinot","Data","Analytics","User-Facing Analytics","Timestamp","datetrunc"]},s=void 0,c={permalink:"/blog/2022/11/22/Apache-Pinot-Timestamp-Indexes",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2022-11-22-Apache-Pinot-Timestamp-Indexes.md",source:"@site/blog/2022-11-22-Apache-Pinot-Timestamp-Indexes.md",title:"Apache Pinot\u2122 0.11 - Timestamp Indexes",description:"Users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conversion work that takes a long time at large data volumes. The timestamp index solves that problem!",date:"2022-11-22T00:00:00.000Z",formattedDate:"November 22, 2022",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Data",permalink:"/blog/tags/data"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"Timestamp",permalink:"/blog/tags/timestamp"},{label:"datetrunc",permalink:"/blog/tags/datetrunc"}],readingTime:7.725,truncated:!1,prevItem:{title:"Apache Pinot\u2122 0.11 - Pausing Real-Time Ingestion",permalink:"/blog/2022/11/28/Apache-Pinot-Pausing-Real-Time-Ingestion"},nextItem:{title:"Apache Pinot\u2122 0.11 - Inserts from SQL",permalink:"/blog/2022/11/17/Apache Pinot-Inserts-from-SQL"}},m=[{value:"Spinning up Pinot",id:"spinning-up-pinot",children:[]},{value:"Importing Chicago Crime Dataset",id:"importing-chicago-crime-dataset",children:[]},{value:"Querying crimes by date",id:"querying-crimes-by-date",children:[]},{value:"Adding the timestamp index",id:"adding-the-timestamp-index",children:[]},{value:"What does a timestamp index do?",id:"what-does-a-timestamp-index-do",children:[]},{value:"Re-running the query",id:"re-running-the-query",children:[]},{value:"Summary",id:"summary",children:[]}],p={toc:m},u="wrapper";function d(e){var t=e.components,a=(0,i.Z)(e,r);return(0,o.kt)(u,(0,n.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://youtu.be/DetGpHZuzDU?si=f0ejecqPBbBK21z-"},(0,o.kt)("img",{parentName:"a",src:"https://i3.ytimg.com/vi/DetGpHZuzDU/maxresdefault.jpg",alt:"Watch the video"}))),(0,o.kt)("p",null,"The recent Apache ",(0,o.kt)("a",{parentName:"p",href:"https://medium.com/apache-pinot-developer-blog/apache-pinot-0-11-released-d564684df5d4"},"Pinot\u2122 0.11.0")," release has lots of goodies for you to play with. This is the third in a series of blog posts showing off some of the new features in this release."),(0,o.kt)("p",null,"Pinot introduced the TIMESTAMP data type in the 0.8 release, which stores the time in millisecond epoch long format internally. The community feedback has been that the queries they\u2019re running against timestamp columns don\u2019t need this low-level granularity.\xa0"),(0,o.kt)("p",null,"Instead, users write queries that use the datetrunc function to filter at a coarser grain of functionality. Unfortunately, this approach results in scanning data and time value conversion work that takes a long time at large data volumes."),(0,o.kt)("p",null,"The ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/indexing/timestamp-index"},"timestamp index")," solves that problem! In this blog post, we\u2019ll use it to get an almost 5x query speed improvement on a relatively small dataset of only 7m rows."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1669133004-image1.png",alt:"Time in milliseconds with and without timestamp indexes bar chart",title:"Time in milliseconds with and without timestamp indexes bar chart"})),(0,o.kt)("h2",{id:"spinning-up-pinot"},"Spinning up Pinot"),(0,o.kt)("p",null,"We\u2019re going to be using the Pinot Docker container, but first, we\u2019re going to create a network, as we\u2019ll need that later on:"),(0,o.kt)("p",null,"docker network create timestamp","_","blog"),(0,o.kt)("p",null,"We\u2019re going to spin up the empty ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/getting-started/quick-start"},"QuickStart")," in a container named pinot-timestamp-blog:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n  -p 8000:8000 \\\n  -p 9000:9000 \\\n --name pinot-timestamp-blog \\\n  --network timestamp_blog \\\n  apachepinot/pinot:0.11.0 \\\n  QuickStart -type EMPTY\n")),(0,o.kt)("p",null,"Or if you\u2019re on a Mac M1, change the name of the image to have the arm-64 suffix, like this:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n  -p 8000:8000 \\\n  -p 9000:9000 \\\n    --network timestamp_blog \\\n --name pinot-timestamp-blog \\\n  apachepinot/pinot:0.11.0-arm64 \\\n  QuickStart -type EMPTY\n")),(0,o.kt)("p",null,"Once that\u2019s up and running, we\u2019ll be able to access the Pinot Data Explorer at ",(0,o.kt)("a",{parentName:"p",href:"http://localhost:9000/"},"http://localhost:9000"),", but at the moment, we don\u2019t have any data to play with."),(0,o.kt)("h2",{id:"importing-chicago-crime-dataset"},"Importing Chicago Crime Dataset"),(0,o.kt)("p",null,"The ",(0,o.kt)("a",{parentName:"p",href:"https://startree.ai/blog/analyzing-chicago-crimes-with-apache-pinot-and-streamlit"},"Chicago Crime dataset")," is a small to medium-sized dataset with 7 million records representing reported crimes in the City of Chicago from 2001 until today."),(0,o.kt)("p",null,"It contains details of the type of crime, where it was committed, whether an arrest was recorded, which beat it occurred on, and more."),(0,o.kt)("p",null,"Each of the crimes has an associated timestamp, which makes it a good dataset to demonstrate timestamp indexes."),(0,o.kt)("p",null,"You can find the code used in this blog post in the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/startreedata/pinot-recipes/tree/main/recipes/analyzing-chicago-crimes"},"Analyzing Chicago Crimes")," recipe section of ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/startreedata/pinot-recipes"},"Pinot Recipes GitHub repository"),". From here on, I\u2019m assuming that you\u2019ve downloaded this repository and are in the recipes/analyzing-chicago-crimes directory."),(0,o.kt)("p",null,"We\u2019re going to create a schema and table named crimes by running the following command:\xa0\xa0"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n   --network timestamp_blog \\\n   -v $PWD/config:/config \\\n   apachepinot/pinot:0.11.0-arm64 AddTable \\\n     -schemaFile /config/schema.json \\\n     -tableConfigFile /config/table.json \\\n     -controllerHost pinot-timestamp-blog \\\n    -exec  \n\n")),(0,o.kt)("p",null,"We should see the following output:\xa0"),(0,o.kt)("p",null,"2022/11/03 13:07:57.169 INFO ","[","AddTableCommand","]"," ","[","main","]",' {"unrecognizedProperties":{},"status":"TableConfigs crimes successfully added"}'),(0,o.kt)("p",null,"A screenshot of the schema is shown below:"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1669132979-image3.png",alt:"Chicago crime dataset table schema",title:"Chicago crime dataset table schema"})),(0,o.kt)("p",null,"We won\u2019t go through the table config and schema files in this blog post because we did that in the last post, but you can find them in the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/startreedata/pinot-recipes/tree/main/recipes/analyzing-chicago-crimes/config"},"config")," directory on GitHub.\xa0"),(0,o.kt)("p",null,"Now, let\u2019s import the dataset.\xa0"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n   --network timestamp_blog \\\n   -v $PWD/config:/config \\\n   -v $PWD/data:/data \\\n   apachepinot/pinot:0.11.0-arm64 LaunchDataIngestionJob \\\n    -jobSpecFile /config/job-spec.yml \\\n     -values controllerHost=pinot-timestamp-blog \n")),(0,o.kt)("p",null,"It will take a few minutes to load, but once that command has finished, we\u2019re ready to query the crimes table."),(0,o.kt)("h2",{id:"querying-crimes-by-date"},"Querying crimes by date"),(0,o.kt)("p",null,"The following query finds the number of crimes that happened after 16th January 2017, grouped by week of the year, with the most crime-filled weeks shown first:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sql"},"select datetrunc('WEEK', DateEpoch) as tsWeek, count(*) \nfrom crimes \nWHERE tsWeek > fromDateTime('2017-01-16', 'yyyy-MM-dd') \ngroup by tsWeek\norder by count(*) DESC\nlimit 10\n")),(0,o.kt)("p",null,"If we run that query, we\u2019ll see the following results:"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1669133027-image6.png",alt:"Chicago crime dataset query result",title:"Chicago crime dataset query result"})),(0,o.kt)("p",null,"And, if we look above the query result, there\u2019s metadata about the query, including the time that it took to run."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1669133059-image5.png",alt:"Chicago crime dataset metadata about the query, including the time that it took to run",title:"Chicago crime dataset metadata about the query, including the time that it took to run"})),(0,o.kt)("p",null,"The query took 141 ms to execute, so that\u2019s our baseline."),(0,o.kt)("h2",{id:"adding-the-timestamp-index"},"Adding the timestamp index"),(0,o.kt)("p",null,"We could add a timestamp index directly to this table and then compare query performance, but to make it easier to do comparisons, we\u2019re going to create an identical table with the timestamp index applied.\xa0"),(0,o.kt)("p",null,"The full table config is available in the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/startreedata/pinot-recipes/blob/main/recipes/analyzing-chicago-crimes/config/table-index.json"},"config/table-index.json")," file, and the main change is that we\u2019ve added the following section to add a timestamp index on the DateEpoch column:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'"fieldConfigList": [\n  {\n    "name": "DateEpoch",\n    "encodingType": "DICTIONARY",\n    "indexTypes": ["TIMESTAMP"],\n    "timestampConfig": {\n      "granularities": [\n        "DAY",\n        "WEEK",\n        "MONTH"\n      ]\n    }\n  }\n],\n')),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"encodingType")," will always be \u2018DICTIONARY\u2019 and ",(0,o.kt)("em",{parentName:"p"},"indexTypes")," must contain \u2018TIMESTAMP\u2019. We should specify granularities based on our query patterns."),(0,o.kt)("p",null,"As a rule of thumb, work out which values you most commonly pass as the first argument to the ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/configuration-reference/functions/datetrunc"},"datetrunc function")," in your queries and include those values."),(0,o.kt)("p",null,"The full list of valid granularities is: ",(0,o.kt)("em",{parentName:"p"},"millisecond"),", ",(0,o.kt)("em",{parentName:"p"},"second"),", ",(0,o.kt)("em",{parentName:"p"},"minute"),", ",(0,o.kt)("em",{parentName:"p"},"hour"),", ",(0,o.kt)("em",{parentName:"p"},"day"),", ",(0,o.kt)("em",{parentName:"p"},"week"),", ",(0,o.kt)("em",{parentName:"p"},"month"),", ",(0,o.kt)("em",{parentName:"p"},"quarter"),", and ",(0,o.kt)("em",{parentName:"p"},"year"),"."),(0,o.kt)("p",null,"Our new table is called crimes","_","indexed, and we\u2019re also going to create a new schema with all the same columns called crimes","_","indexed, as Pinot requires the table and schema names to match."),(0,o.kt)("p",null,"We can create the schema and table by running the following command:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n   --network timestamp_blog \\\n   -v $PWD/config:/config \\\n   apachepinot/pinot:0.11.0-arm64 AddTable \\\n     -schemaFile /config/schema-index.json \\\n     -tableConfigFile /config/table-index.json \\\n     -controllerHost pinot-timestamp-blog \\\n    -exec  \n")),(0,o.kt)("p",null,"We\u2019ll populate that table by copying the segment that we created earlier for the crimes table.\xa0"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n   --network timestamp_blog \\\n   -v $PWD/config:/config \\\n   -v $PWD/data:/data \\\n   apachepinot/pinot:0.11.0-arm64 LaunchDataIngestionJob \\\n    -jobSpecFile /config/job-spec-download.yml \\\n     -values controllerHost=pinot-timestamp-blog \n")),(0,o.kt)("p",null,"If you\u2019re curious how that job spec works, I ",(0,o.kt)("a",{parentName:"p",href:"https://www.markhneedham.com/blog/2021/12/06/apache-pinot-copy-segment-new-table/"},"wrote a blog post explaining it in a bit more detail"),"."),(0,o.kt)("p",null,"Once the Pinot Server has downloaded this segment, it will apply the timestamp index to the DateEpoch column.\xa0"),(0,o.kt)("p",null,"For the curious, we can see this happening in the log files by connecting to the Pinot container and running the following grep command:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},'\u200b\u200bdocker exec -iti pinot-timestamp-blog \\\n  grep -rni -A10 "Successfully downloaded segment:.*crimes_indexed_OFFLINE.*" \\   \n  logs/pinot-all.log\n')),(0,o.kt)("p",null,"We\u2019ll see something like the following (tidied up for brevity):"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-log"},"[BaseTableDataManager]  Successfully downloaded segment: crimes_OFFLINE_0 of table: crimes_indexed_OFFLINE to index dir: /tmp/1667490598253/quickstart/PinotServerDataDir0/crimes_indexed_OFFLINE/crimes_OFFLINE_0\n[V3DefaultColumnHandler]  Starting default column action: ADD_DATE_TIME on column: $DateEpoch$DAY\n[SegmentDictionaryCreator]  Created dictionary for LONG column: $DateEpoch$DAY with cardinality: 7969, range: 978307200000 to 1666742400000\n[V3DefaultColumnHandler]  Starting default column action: ADD_DATE_TIME on column: $DateEpoch$WEEK\n[SegmentDictionaryCreator]  Created dictionary for LONG column: $DateEpoch$WEEK with cardinality: 1139, range: 978307200000 to 1666569600000\n[V3DefaultColumnHandler]  Starting default column action: ADD_DATE_TIME on column: $DateEpoch$MONTH\n[SegmentDictionaryCreator]  Created dictionary for LONG column: $DateEpoch$MONTH with cardinality: 262, range: 978307200000 to 1664582400000\n[RangeIndexHandler]  Creating new range index for segment: crimes_OFFLINE_0, column: $DateEpoch$DAY\n[RangeIndexHandler]  Created range index for segment: crimes_OFFLINE_0, column: $DateEpoch$DAY\n[RangeIndexHandler]  Creating new range index for segment: crimes_OFFLINE_0, column: $DateEpoch$WEEK\n[RangeIndexHandler]  Created range index for segment: crimes_OFFLINE_0, column: $DateEpoch$WEEK\n\n")),(0,o.kt)("h2",{id:"what-does-a-timestamp-index-do"},"What does a timestamp index do?"),(0,o.kt)("p",null,"So, the timestamp index has now been created, but what does it actually do?"),(0,o.kt)("p",null,"When we add a timestamp index on a column, Pinot creates a derived column for each granularity and adds a range index for each new column."),(0,o.kt)("p",null,"In our case, that means we\u2019ll have these extra columns: $DateEpoch$DAY, $DateEpoch$WEEK, and $DateEpoch$MONTH.\xa0"),(0,o.kt)("p",null,"We can check if the extra columns and indexes have been added by navigating to the ",(0,o.kt)("a",{parentName:"p",href:"http://localhost:9000/#/tenants/table/crimes_indexed_OFFLINE/crimes_OFFLINE_0"},"segment page")," and typing $Date$Epoch in the search box.\xa0 You should see the following:"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1669133112-image2.png",alt:"Apache Pinot timestamp index on a column",title:"Apache Pinot timestamp index on a column"})),(0,o.kt)("p",null,"These columns will be assigned the following values:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"$DateEpoch$DAY = dateTrunc(\u2018DAY\u2019, DateEpoch)"),(0,o.kt)("li",{parentName:"ul"},"$DateEpoch$WEEK = dateTrunc(\u2018WEEK\u2019, DateEpoch)"),(0,o.kt)("li",{parentName:"ul"},"$DateEpoch$MONTH = dateTrunc(\u2018MONTH\u2019, DateEpoch)")),(0,o.kt)("p",null,"Pinot will also rewrite any queries that use the dateTrunc function with DAY, WEEK, or MONTH and the DateEpoch field to use those new columns."),(0,o.kt)("p",null,"This means that this query:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sql"},"select datetrunc('WEEK', DateEpoch) as tsWeek, count(*) \nfrom crimes_indexed\nGROUP BY tsWeek\nlimit 10\n")),(0,o.kt)("p",null,"Would be rewritten as:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sql"},"select  $DateEpoch$WEEK as tsWeek, count(*) \nfrom crimes_indexed\nGROUP BY tsWeek\nlimit 10\n")),(0,o.kt)("p",null,"And our query:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sql"},"select datetrunc('WEEK', DateEpoch) as tsWeek, count(*) \nfrom crimes \nWHERE tsWeek > fromDateTime('2017-01-16', 'yyyy-MM-dd') \ngroup by tsWeek\norder by count(*) DESC\nlimit 10\n")),(0,o.kt)("p",null,"Would be rewritten as:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sql"},"select $DateEpoch$WEEK as tsWeek, count(*) \nfrom crimes \nWHERE tsWeek > fromDateTime('2017-01-16', 'yyyy-MM-dd') \ngroup by tsWeek\norder by count(*) DESC\nlimit 10\n")),(0,o.kt)("h2",{id:"re-running-the-query"},"Re-running the query"),(0,o.kt)("p",null,"Let\u2019s now run our initial query against the ",(0,o.kt)("em",{parentName:"p"},"crimes","_","indexed")," table. We\u2019ll get exactly the same results as before, but let\u2019s take a look at the query stats:"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1669133083-image4.png",alt:"Chicago crime dataset updated query stats",title:"Chicago crime dataset updated query stats"})),(0,o.kt)("p",null,"This time the query takes 36 milliseconds rather than 140 milliseconds. That\u2019s an almost 5x improvement, thanks to the timestamp index."),(0,o.kt)("h2",{id:"summary"},"Summary"),(0,o.kt)("p",null,"Hopefully, you\u2019ll agree that timestamp indexes are pretty cool, and achieving a 5x query improvement without much work is always welcome!"),(0,o.kt)("p",null,"If you\u2019re using timestamps in your Pinot tables, be sure to try out this index and let us know how it goes on the ",(0,o.kt)("a",{parentName:"p",href:"https://stree.ai/slack"},"StarTree Community Slack")," . We\u2019re always happy to help out with any questions or problems you encounter."))}d.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/3865.e160bdc2.js b/assets/js/3865.e160bdc2.js
deleted file mode 100644
index 8ab79e6..0000000
--- a/assets/js/3865.e160bdc2.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3865],{830:function(e,t,n){n.d(t,{W:function(){return a}});var r=n(7294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},6681:function(e,t,n){n.d(t,{Z:function(){return o}});var r=n(7294),a="iconExternalLink_wgqa",o=function(e){var t=e.width,n=void 0===t?13.5:t,o=e.height,l=void 0===o?13.5:o;return r.createElement("svg",{width:n,height:l,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},6416:function(e,t,n){var r=n(7462),a=n(3366),o=n(7294),l=["width","height","className"];t.Z=function(e){var t=e.width,n=void 0===t?30:t,c=e.height,i=void 0===c?30:c,u=e.className,s=(0,a.Z)(e,l);return o.createElement("svg",(0,r.Z)({className:u,width:n,height:i,viewBox:"0 0 30 30","aria-hidden":"true"},s),o.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}},3865:function(e,t,n){n.d(t,{Z:function(){return Pe}});var r=n(7294),a=n(6010),o=n(7130),l=n(4395),c={skipToContent:"skipToContent_OuoZ"};function i(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}var u=function(){var e=(0,r.useRef)(null);return(0,l.ru)((function(){e.current&&i(e.current)})),r.createElement("div",{ref:e},r.createElement("a",{href:"#main",className:(0,a.Z)(c.skipToContent,"shadow--md"),onClick:function(e){e.preventDefault();var t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&i(t)}},r.createElement(o.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))},s=n(50),m={announcementBar:"announcementBar_axC9",announcementBarClose:"announcementBarClose_A3A1",announcementBarContent:"announcementBarContent_6uhP",announcementBarCloseable:"announcementBarCloseable_y4cp"};var d=function(){var e,t=(0,s.Z)(),n=t.isAnnouncementBarClosed,c=t.closeAnnouncementBar,i=(0,l.LU)().announcementBar;if(!i)return null;var u=i.content,d=i.backgroundColor,f=i.textColor,v=i.isCloseable;return!u||v&&n?null:r.createElement("div",{className:m.announcementBar,style:{backgroundColor:d,color:f},role:"banner"},r.createElement("div",{className:(0,a.Z)(m.announcementBarContent,(e={},e[m.announcementBarCloseable]=v,e)),dangerouslySetInnerHTML:{__html:u}}),v?r.createElement("button",{type:"button",className:(0,a.Z)(m.announcementBarClose,"clean-btn"),onClick:c,"aria-label":(0,o.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},r.createElement("span",{"aria-hidden":"true"},"\xd7")):null)},f=n(7462),v=n(3366),h=n(3935),b=n(9962),g=n(6550),p=n(9524),E=n(2511),k=n(9584),y=n(9963);function Z(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var C=n(830),w=["translations"];function N(){return N=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},N.apply(this,arguments)}function _(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,a,o=[],l=!0,c=!1;try{for(n=n.call(e);!(l=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);l=!0);}catch(i){c=!0,a=i}finally{try{l||null==n.return||n.return()}finally{if(c)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return S(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return S(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function I(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var L="Ctrl";var B=r.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,o=I(e,w),l=a.buttonText,c=void 0===l?"Search":l,i=a.buttonAriaLabel,u=void 0===i?"Search":i,s=_((0,r.useState)(null),2),m=s[0],d=s[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?d("\u2318"):d(L))}),[]),r.createElement("button",N({type:"button",className:"DocSearch DocSearch-Button","aria-label":u},o,{ref:t}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(C.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},c)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==m&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},m===L?r.createElement(Z,null):m),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),A=n(7849);function D(){var e=function(){var e=(0,b.Z)().i18n,t=(0,A._r)(),n=(0,A.WS)(),r=(0,l.Oh)(),a=[l.HX].concat(Object.keys(t).map((function(e){var a,o,c=(null==n||null==(a=n.activePlugin)?void 0:a.pluginId)===e?n.activeVersion:void 0,i=r[e],u=t[e].versions.find((function(e){return e.isLast})),s=null!=(o=null!=c?c:i)?o:u;return(0,l.os)(e,s.name)})));return{locale:e.currentLocale,tags:a}}();return["language:"+e.locale,e.tags.map((function(e){return"docusaurus_tag:"+e}))]}var T={searchBox:"searchBox_NKBi"},x=["contextualSearch"],O=null;function M(e){var t=e.hit,n=e.children;return r.createElement(E.Z,{to:t.url},n)}function P(e){var t=e.state,n=e.onClose,a=(0,y.Z)().generateSearchPageLink;return r.createElement(E.Z,{to:a(t.query),onClick:n},"See all ",t.context.nbHits," results")}function R(e){var t,a,l=e.contextualSearch,c=(0,v.Z)(e,x),i=(0,b.Z)().siteMetadata,u=D(),s=null!=(t=null==(a=c.searchParameters)?void 0:a.facetFilters)?t:[],m=l?[].concat(u,s):s,d=Object.assign({},c.searchParameters,{facetFilters:m}),E=(0,p.C)().withBaseUrl,y=(0,g.k6)(),Z=(0,r.useRef)(null),C=(0,r.useRef)(null),w=(0,r.useState)(!1),N=w[0],_=w[1],S=(0,r.useState)(null),I=S[0],L=S[1],A=(0,r.useCallback)((function(){return O?Promise.resolve():Promise.all([n.e(2431).then(n.bind(n,2431)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,6945)),Promise.all([n.e(532),n.e(1212)]).then(n.bind(n,1212))]).then((function(e){var t=e[0].DocSearchModal;O=t}))}),[]),R=(0,r.useCallback)((function(){A().then((function(){Z.current=document.createElement("div"),document.body.insertBefore(Z.current,document.body.firstChild),_(!0)}))}),[A,_]),U=(0,r.useCallback)((function(){_(!1),Z.current.remove()}),[_]),V=(0,r.useCallback)((function(e){A().then((function(){_(!0),L(e.key)}))}),[A,_,L]),H=(0,r.useRef)({navigate:function(e){var t=e.itemUrl;y.push(t)}}).current,j=(0,r.useRef)((function(e){return e.map((function(e){var t=document.createElement("a");return t.href=e.url,Object.assign({},e,{url:E(""+t.pathname+t.hash)})}))})).current,W=(0,r.useMemo)((function(){return function(e){return r.createElement(P,(0,f.Z)({},e,{onClose:U}))}}),[U]),z=(0,r.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e}),[i.docusaurusVersion]);!function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,l=e.searchButtonRef;r.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key.toLowerCase()&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),l&&l.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,o,l])}({isOpen:N,onOpen:R,onClose:U,onInput:V,searchButtonRef:C});var F=(0,o.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"});return r.createElement(r.Fragment,null,r.createElement(k.Z,null,r.createElement("link",{rel:"preconnect",href:"https://"+c.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})),r.createElement("div",{className:T.searchBox},r.createElement(B,{onTouchStart:A,onFocus:A,onMouseOver:A,onClick:R,ref:C,translations:{buttonText:F,buttonAriaLabel:F}})),N&&(0,h.createPortal)(r.createElement(O,(0,f.Z)({onClose:U,initialScrollY:window.scrollY,initialQuery:I,navigator:H,transformItems:j,hitComponent:M,resultsFooterComponent:W,transformSearchClient:z},c,{searchParameters:d})),Z.current))}var U=function(){var e=(0,b.Z)().siteConfig;return r.createElement(R,e.themeConfig.algolia)},V={toggle:"toggle_iYfV"},H=function(e){var t=e.icon,n=e.style;return r.createElement("span",{className:(0,a.Z)(V.toggle,V.dark),style:n},t)},j=function(e){var t=e.icon,n=e.style;return r.createElement("span",{className:(0,a.Z)(V.toggle,V.light),style:n},t)},W=(0,r.memo)((function(e){var t=e.className,n=e.icons,o=e.checked,l=e.disabled,c=e.onChange,i=(0,r.useState)(o),u=i[0],s=i[1],m=(0,r.useState)(!1),d=m[0],f=m[1],v=(0,r.useRef)(null);return r.createElement("div",{className:(0,a.Z)("react-toggle",t,{"react-toggle--checked":u,"react-toggle--focus":d,"react-toggle--disabled":l})},r.createElement("div",{className:"react-toggle-track",role:"button",tabIndex:-1,onClick:function(){var e;return null==(e=v.current)?void 0:e.click()}},r.createElement("div",{className:"react-toggle-track-check"},n.checked),r.createElement("div",{className:"react-toggle-track-x"},n.unchecked),r.createElement("div",{className:"react-toggle-thumb"})),r.createElement("input",{ref:v,checked:u,type:"checkbox",className:"react-toggle-screenreader-only","aria-label":"Switch between dark and light mode",onChange:c,onClick:function(){return s(!u)},onFocus:function(){return f(!0)},onBlur:function(){return f(!1)}}))}));function z(e){var t=(0,l.LU)().colorMode.switchConfig,n=t.darkIcon,a=t.darkIconStyle,o=t.lightIcon,c=t.lightIconStyle,i=(0,b.Z)().isClient;return r.createElement(W,(0,f.Z)({disabled:!i,icons:{checked:r.createElement(H,{icon:n,style:a}),unchecked:r.createElement(j,{icon:o,style:c})}},e))}var F=n(8002),K=n(5717),q=function(e){var t=(0,g.TH)(),n=(0,r.useState)(e),a=n[0],o=n[1],c=(0,r.useRef)(!1),i=(0,r.useState)(0),u=i[0],s=i[1],m=(0,r.useCallback)((function(e){null!==e&&s(e.getBoundingClientRect().height)}),[]);return(0,K.Z)((function(t,n){var r=t.scrollY,a=n.scrollY;if(e)if(r<u)o(!0);else{if(c.current)return c.current=!1,void o(!1);a&&0===r&&o(!0);var l=document.documentElement.scrollHeight-u,i=window.innerHeight;a&&r>=a?o(!1):r+i<l&&o(!0)}}),[u,c]),(0,l.ru)((function(){e&&o(!0)})),(0,r.useEffect)((function(){e&&t.hash&&(c.current=!0)}),[t.hash]),{navbarRef:m,isNavbarVisible:a}},Y=n(9729),G=n(3301),X=n(6971),Q=["width","height"],J=function(e){var t=e.width,n=void 0===t?20:t,a=e.height,o=void 0===a?20:a,l=(0,v.Z)(e,Q);return r.createElement("svg",(0,f.Z)({viewBox:"0 0 20 20",width:n,height:o,"aria-hidden":"true"},l),r.createElement("path",{fill:"currentColor",d:"M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"}))},$=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function ee(e){var t=e.mobile,n=e.dropdownItemsBefore,a=e.dropdownItemsAfter,o=(0,v.Z)(e,$),c=(0,b.Z)().i18n,i=c.currentLocale,u=c.locales,s=c.localeConfigs,m=(0,l.l5)();function d(e){return s[e].label}var h=u.map((function(e){var t="pathname://"+m.createUrl({locale:e,fullyQualified:!1});return{isNavLink:!0,label:d(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===i?"dropdown__link--active":"",style:{textTransform:"capitalize"}}})),g=[].concat(n,h,a),p=t?"Languages":d(i);return r.createElement(X.Z,(0,f.Z)({},o,{href:"#",mobile:t,label:r.createElement("span",null,r.createElement(J,{style:{verticalAlign:"text-bottom",marginRight:5}}),r.createElement("span",null,p)),items:g}))}function te(e){return e.mobile?null:r.createElement(U,null)}var ne=["type"],re={default:function(){return X.Z},localeDropdown:function(){return ee},search:function(){return te},docsVersion:function(){return n(6028).Z},docsVersionDropdown:function(){return n(7999).Z},doc:function(){return n(4520).Z}},ae=function(e){void 0===e&&(e="default");var t=re[e];if(!t)throw new Error('No NavbarItem component found for type "'+e+'".');return t()};function oe(e){var t=e.type,n=(0,v.Z)(e,ne),a=ae(t);return r.createElement(a,n)}var le=n(2827),ce=n(6416),ie={displayOnlyInLargeViewport:"displayOnlyInLargeViewport_cxYs",navbarHideable:"navbarHideable_RReh",navbarHidden:"navbarHidden_FBwS"},ue="right";var se=function(){var e,t=(0,l.LU)(),n=t.navbar,o=n.items,c=n.hideOnScroll,i=n.style,u=t.colorMode.disableSwitch,s=(0,r.useState)(!1),m=s[0],d=s[1],v=(0,F.Z)(),h=v.isDarkTheme,b=v.setLightTheme,g=v.setDarkTheme,p=q(c),E=p.navbarRef,k=p.isNavbarVisible;(0,Y.Z)(m);var y=(0,r.useCallback)((function(){d(!0)}),[d]),Z=(0,r.useCallback)((function(){d(!1)}),[d]),C=(0,r.useCallback)((function(e){return e.target.checked?g():b()}),[b,g]),w=(0,G.Z)();(0,r.useEffect)((function(){w===G.D.desktop&&d(!1)}),[w]);var N=o.some((function(e){return"search"===e.type})),_=function(e){return{leftItems:e.filter((function(e){var t;return"left"===(null!=(t=e.position)?t:ue)})),rightItems:e.filter((function(e){var t;return"right"===(null!=(t=e.position)?t:ue)}))}}(o),S=_.leftItems,I=_.rightItems;return r.createElement("nav",{ref:E,className:(0,a.Z)("navbar","navbar--fixed-top",(e={"navbar--dark":"dark"===i,"navbar--primary":"primary"===i,"navbar-sidebar--show":m},e[ie.navbarHideable]=c,e[ie.navbarHidden]=c&&!k,e))},r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},null!=o&&0!==o.length&&r.createElement("button",{"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0,onClick:y,onKeyDown:y},r.createElement(ce.Z,null)),r.createElement(le.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),S.map((function(e,t){return r.createElement(oe,(0,f.Z)({},e,{key:t}))}))),r.createElement("div",{className:"navbar__items navbar__items--right"},I.map((function(e,t){return r.createElement(oe,(0,f.Z)({},e,{key:t}))})),!u&&r.createElement(z,{className:ie.displayOnlyInLargeViewport,checked:h,onChange:C}),!N&&r.createElement(U,null))),r.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:Z}),r.createElement("div",{className:"navbar-sidebar"},r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(le.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title",onClick:Z}),!u&&m&&r.createElement(z,{checked:h,onChange:C})),r.createElement("div",{className:"navbar-sidebar__items"},r.createElement("div",{className:"menu"},r.createElement("ul",{className:"menu__list"},o.map((function(e,t){return r.createElement(oe,(0,f.Z)({mobile:!0},e,{onClick:Z,key:t}))})))))))},me=n(283),de=n(6136),fe=(0,l.WA)("theme"),ve="light",he="dark",be=function(e){return e===he?he:ve},ge=function(e){(0,l.WA)("theme").set(be(e))},pe=function(){var e=(0,l.LU)().colorMode,t=e.defaultMode,n=e.disableSwitch,a=e.respectPrefersColorScheme,o=(0,r.useState)(function(e){return de.Z.canUseDOM?be(document.documentElement.getAttribute("data-theme")):be(e)}(t)),c=o[0],i=o[1],u=(0,r.useCallback)((function(){i(ve),ge(ve)}),[]),s=(0,r.useCallback)((function(){i(he),ge(he)}),[]);return(0,r.useEffect)((function(){document.documentElement.setAttribute("data-theme",be(c))}),[c]),(0,r.useEffect)((function(){if(!n)try{var e=fe.get();null!==e&&i(be(e))}catch(t){console.error(t)}}),[i]),(0,r.useEffect)((function(){n&&!a||window.matchMedia("(prefers-color-scheme: dark)").addListener((function(e){var t=e.matches;i(t?he:ve)}))}),[]),{isDarkTheme:c===he,setLightTheme:u,setDarkTheme:s}},Ee=n(5406);var ke=function(e){var t=pe(),n=t.isDarkTheme,a=t.setLightTheme,o=t.setDarkTheme;return r.createElement(Ee.Z.Provider,{value:{isDarkTheme:n,setLightTheme:a,setDarkTheme:o}},e.children)};function ye(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Ze(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return ye(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ye(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var Ce="docusaurus.tab.",we=function(){var e=(0,r.useState)({}),t=e[0],n=e[1],a=(0,r.useCallback)((function(e,t){(0,l.WA)(""+Ce+e).set(t)}),[]);return(0,r.useEffect)((function(){try{for(var e,t={},r=Ze((0,l._f)());!(e=r()).done;){var a=e.value;if(a.startsWith(Ce))t[a.substring(Ce.length)]=(0,l.WA)(a).get()}n(t)}catch(o){console.error(o)}}),[]),{tabGroupChoices:t,setTabGroupChoices:function(e,t){n((function(n){var r;return Object.assign({},n,((r={})[e]=t,r))})),a(e,t)}}},Ne=(0,l.WA)("docusaurus.announcement.dismiss"),_e=(0,l.WA)("docusaurus.announcement.id"),Se=function(){var e=(0,l.LU)().announcementBar,t=(0,r.useState)(!0),n=t[0],a=t[1],o=(0,r.useCallback)((function(){Ne.set("true"),a(!0)}),[]);return(0,r.useEffect)((function(){if(e){var t=e.id,n=_e.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;_e.set(t),r&&Ne.set("false"),(r||"false"===Ne.get())&&a(!1)}}),[]),{isAnnouncementBarClosed:n,closeAnnouncementBar:o}},Ie=n(2713);var Le=function(e){var t=we(),n=t.tabGroupChoices,a=t.setTabGroupChoices,o=Se(),l=o.isAnnouncementBarClosed,c=o.closeAnnouncementBar;return r.createElement(Ie.Z.Provider,{value:{tabGroupChoices:n,setTabGroupChoices:a,isAnnouncementBarClosed:l,closeAnnouncementBar:c}},e.children)};function Be(e){var t=e.children;return r.createElement(ke,null,r.createElement(Le,null,r.createElement(l.L5,null,t)))}function Ae(e){var t=e.locale,n=e.version,a=e.tag,o=t;return r.createElement(k.Z,null,o&&r.createElement("meta",{name:"docsearch:language",content:o}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),a&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:a}))}var De=n(4175);function Te(){var e=(0,b.Z)().i18n,t=e.defaultLocale,n=e.locales,a=(0,l.l5)();return r.createElement(k.Z,null,n.map((function(e){return r.createElement("link",{key:e,rel:"alternate",href:a.createUrl({locale:e,fullyQualified:!0}),hrefLang:e})})),r.createElement("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}))}function xe(e){var t=e.permalink,n=(0,b.Z)().siteConfig.url,a=function(){var e=(0,b.Z)().siteConfig.url,t=(0,g.TH)().pathname;return e+(0,p.Z)(t)}(),o=t?""+n+t:a;return r.createElement(k.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function Oe(e){var t=(0,b.Z)(),n=t.siteConfig,a=n.favicon,o=n.themeConfig,c=o.metadatas,i=o.image,u=t.i18n,s=u.currentLocale,m=u.localeConfigs,d=e.title,v=e.description,h=e.image,g=e.keywords,E=e.searchMetadatas,y=(0,p.Z)(a),Z=(0,l.pe)(d),C=s,w=m[s].direction;return r.createElement(r.Fragment,null,r.createElement(k.Z,null,r.createElement("html",{lang:C,dir:w}),a&&r.createElement("link",{rel:"shortcut icon",href:y}),r.createElement("title",null,Z),r.createElement("meta",{property:"og:title",content:Z}),h||i&&r.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),r.createElement(De.Z,{description:v,keywords:g,image:h}),r.createElement(xe,null),r.createElement(Te,null),r.createElement(Ae,(0,f.Z)({tag:l.HX,locale:s},E)),r.createElement(k.Z,null,c.map((function(e,t){return r.createElement("meta",(0,f.Z)({key:"metadata_"+t},e))}))))}var Me=function(){(0,r.useEffect)((function(){var e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),function(){document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};var Pe=function(e){var t=e.children,n=e.noFooter,o=e.wrapperClassName,c=e.pageClassName;return Me(),r.createElement(Be,null,r.createElement(Oe,e),r.createElement(u,null),r.createElement(d,null),r.createElement(se,null),r.createElement("div",{className:(0,a.Z)(l.kM.wrapper.main,o,c)},t),!n&&r.createElement(me.Z,null))}},2827:function(e,t,n){var r=n(7462),a=n(3366),o=n(7294),l=n(2511),c=n(4087),i=n(9524),u=n(9962),s=["imageClassName","titleClassName"];t.Z=function(e){var t=(0,u.Z)(),n=t.siteConfig,m=n.title,d=n.themeConfig.navbar,f=d.title,v=d.logo,h=void 0===v?{src:""}:v,b=t.isClient,g=e.imageClassName,p=e.titleClassName,E=(0,a.Z)(e,s),k=(0,i.Z)(h.href||"/"),y={light:(0,i.Z)(h.src),dark:(0,i.Z)(h.srcDark||h.src)};return o.createElement(l.Z,(0,r.Z)({to:k},E,h.target&&{target:h.target}),h.src&&o.createElement(c.Z,{key:b,className:g,sources:y,alt:h.alt||f||m}),null!=f&&o.createElement("b",{className:p},f))}},6971:function(e,t,n){var r=n(7462),a=n(3366),o=n(7294),l=n(6010),c=n(2511),i=n(9524),u=n(6550),s=n(4395),m=n(6681),d=n(2735),f=["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"],v=["items","position","className"],h=["className"],b=["items","className","position"],g=["className"],p=["mobile"],E="dropdown__link--active";function k(e){var t=e.activeBasePath,n=e.activeBaseRegex,l=e.to,u=e.href,s=e.label,v=e.activeClassName,h=void 0===v?"navbar__link--active":v,b=e.prependBaseUrlToHref,g=(0,a.Z)(e,f),p=(0,i.Z)(l),k=(0,i.Z)(t),y=(0,i.Z)(u,{forcePrependBaseUrl:!0}),Z=s&&u&&!(0,d.Z)(u),C=h===E;return o.createElement(c.Z,(0,r.Z)({},u?{href:b?y:u}:Object.assign({isNavLink:!0,activeClassName:h,to:p},t||n?{isActive:function(e,t){return n?new RegExp(n).test(t.pathname):t.pathname.startsWith(k)}}:null),g),Z?o.createElement("span",null,s,o.createElement(m.Z,C&&{width:12,height:12})):s)}function y(e){var t,n=e.items,c=e.position,i=e.className,u=(0,a.Z)(e,v),s=(0,o.useRef)(null),m=(0,o.useRef)(null),d=(0,o.useState)(!1),f=d[0],b=d[1];(0,o.useEffect)((function(){var e=function(e){s.current&&!s.current.contains(e.target)&&b(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[s]);var g=function(e,t){return void 0===t&&(t=!1),(0,l.Z)({"navbar__item navbar__link":!t,dropdown__link:t},e)};return n?o.createElement("div",{ref:s,className:(0,l.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--left":"left"===c,"dropdown--right":"right"===c,"dropdown--show":f})},o.createElement(k,(0,r.Z)({className:g(i)},u,{onClick:u.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),b(!f))}}),null!=(t=u.children)?t:u.label),o.createElement("ul",{ref:m,className:"dropdown__menu"},n.map((function(e,t){var l=e.className,c=(0,a.Z)(e,h);return o.createElement("li",{key:t},o.createElement(k,(0,r.Z)({onKeyDown:function(e){if(t===n.length-1&&"Tab"===e.key){e.preventDefault(),b(!1);var r=s.current.nextElementSibling;r&&r.focus()}},activeClassName:E,className:g(l,!0)},c)))})))):o.createElement(k,(0,r.Z)({className:g(i)},u))}function Z(e){var t,n,c,i=e.items,m=e.className,d=(e.position,(0,a.Z)(e,b)),f=(0,o.useRef)(null),v=(0,u.TH)().pathname,h=(0,o.useState)((function(){var e;return null==(e=!(null!=i&&i.some((function(e){return(0,s.Mg)(e.to,v)}))))||e})),p=h[0],E=h[1],y=function(e,t){return void 0===t&&(t=!1),(0,l.Z)("menu__link",{"menu__link--sublist":t},e)};if(!i)return o.createElement("li",{className:"menu__list-item"},o.createElement(k,(0,r.Z)({className:y(m)},d)));var Z=null!=(t=f.current)&&t.scrollHeight?(null==(n=f.current)?void 0:n.scrollHeight)+"px":void 0;return o.createElement("li",{className:(0,l.Z)("menu__list-item",{"menu__list-item--collapsed":p})},o.createElement(k,(0,r.Z)({role:"button",className:y(m,!0)},d,{onClick:function(e){e.preventDefault(),E((function(e){return!e}))}}),null!=(c=d.children)?c:d.label),o.createElement("ul",{className:"menu__list",ref:f,style:{height:p?void 0:Z}},i.map((function(e,t){var n=e.className,l=(0,a.Z)(e,g);return o.createElement("li",{className:"menu__list-item",key:t},o.createElement(k,(0,r.Z)({activeClassName:"menu__link--active",className:y(n)},l,{onClick:d.onClick})))}))))}t.Z=function(e){var t=e.mobile,n=void 0!==t&&t,r=(0,a.Z)(e,p),l=n?Z:y;return o.createElement(l,r)}},4520:function(e,t,n){n.d(t,{Z:function(){return d}});var r=n(7462),a=n(3366),o=n(7294),l=n(6971),c=n(7849),i=n(6010),u=n(4395),s=n(3905),m=["docId","activeSidebarClassName","label","docsPluginId"];function d(e){var t,n=e.docId,d=e.activeSidebarClassName,f=e.label,v=e.docsPluginId,h=(0,a.Z)(e,m),b=(0,c.Iw)(v),g=b.activeVersion,p=b.activeDoc,E=(0,u.J)(v).preferredVersion,k=(0,c.yW)(v),y=function(e,t){var n,r=(n=[]).concat.apply(n,e.map((function(e){return e.docs}))),a=r.find((function(e){return e.id===t}));if(!a){var o=r.map((function(e){return e.id})).join("\n- ");throw new Error("DocNavbarItem: couldn't find any doc with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+o)}return a}((0,s.uniq)([g,E,k].filter(Boolean)),n);return o.createElement(l.Z,(0,r.Z)({exact:!0},h,{className:(0,i.Z)(h.className,(t={},t[d]=p&&p.sidebar===y.sidebar,t)),label:null!=f?f:y.id,to:y.path}))}},7999:function(e,t,n){n.d(t,{Z:function(){return m}});var r=n(7462),a=n(3366),o=n(7294),l=n(6971),c=n(7849),i=n(4395),u=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],s=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function m(e){var t,n,m=e.mobile,d=e.docsPluginId,f=e.dropdownActiveClassDisabled,v=e.dropdownItemsBefore,h=e.dropdownItemsAfter,b=(0,a.Z)(e,u),g=(0,c.Iw)(d),p=(0,c.gB)(d),E=(0,c.yW)(d),k=(0,i.J)(d),y=k.preferredVersion,Z=k.savePreferredVersionName;var C=function(){var e=p.map((function(e){var t=(null==g?void 0:g.alternateDocVersions[e.name])||s(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==g?void 0:g.activeVersion)},onClick:function(){Z(e.name)}}})),t=[].concat(v,e,h);if(!(t.length<=1))return t}(),w=null!=(t=null!=(n=g.activeVersion)?n:y)?t:E,N=m&&C?"Versions":w.label,_=m&&C?void 0:s(w).path;return o.createElement(l.Z,(0,r.Z)({},b,{mobile:m,label:N,to:_,items:C,isActive:f?function(){return!1}:void 0}))}},6028:function(e,t,n){n.d(t,{Z:function(){return m}});var r=n(7462),a=n(3366),o=n(7294),l=n(6971),c=n(7849),i=n(4395),u=["label","to","docsPluginId"],s=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function m(e){var t,n=e.label,m=e.to,d=e.docsPluginId,f=(0,a.Z)(e,u),v=(0,c.zu)(d),h=(0,i.J)(d).preferredVersion,b=(0,c.yW)(d),g=null!=(t=null!=v?v:h)?t:b,p=null!=n?n:g.label,E=null!=m?m:s(g).path;return o.createElement(l.Z,(0,r.Z)({},f,{label:p,to:E}))}},5406:function(e,t,n){var r=n(7294).createContext(void 0);t.Z=r},4087:function(e,t,n){n.d(t,{Z:function(){return m}});var r=n(7462),a=n(3366),o=n(7294),l=n(6010),c=n(9962),i=n(8002),u={themedImage:"themedImage_TMUO","themedImage--light":"themedImage--light_4Vu1","themedImage--dark":"themedImage--dark_uzRr"},s=["sources","className","alt"],m=function(e){var t=(0,c.Z)().isClient,n=(0,i.Z)().isDarkTheme,m=e.sources,d=e.className,f=e.alt,v=void 0===f?"":f,h=(0,a.Z)(e,s),b=t?n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,b.map((function(e){return o.createElement("img",(0,r.Z)({key:e,src:m[e],alt:v,className:(0,l.Z)(u.themedImage,u["themedImage--"+e],d)},h))})))}},2713:function(e,t,n){var r=(0,n(7294).createContext)(void 0);t.Z=r},9729:function(e,t,n){var r=n(7294);t.Z=function(e){void 0===e&&(e=!0),(0,r.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e])}},5717:function(e,t,n){var r=n(7294),a=n(6136),o=function(){return{scrollX:a.Z.canUseDOM?window.pageXOffset:0,scrollY:a.Z.canUseDOM?window.pageYOffset:0}};t.Z=function(e,t){void 0===t&&(t=[]);var n=(0,r.useRef)(o()),a=function(){var t=o();e&&e(t,n.current),n.current=t};(0,r.useEffect)((function(){var e={passive:!0};return a(),window.addEventListener("scroll",a,e),function(){return window.removeEventListener("scroll",a,e)}}),t)}},8002:function(e,t,n){var r=n(7294),a=n(5406);t.Z=function(){var e=(0,r.useContext)(a.Z);if(null==e)throw new Error('"useThemeContext" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#usethemecontext.');return e}},50:function(e,t,n){var r=n(7294),a=n(2713);t.Z=function(){var e=(0,r.useContext)(a.Z);if(null==e)throw new Error('"useUserPreferencesContext" is used outside of "Layout" component.');return e}},3301:function(e,t,n){n.d(t,{D:function(){return l}});var r=n(7294),a=n(6136),o=996,l={desktop:"desktop",mobile:"mobile"};t.Z=function(){var e=a.Z.canUseDOM;function t(){if(e)return window.innerWidth>o?l.desktop:l.mobile}var n=(0,r.useState)(t),c=n[0],i=n[1];return(0,r.useEffect)((function(){if(e)return window.addEventListener("resize",n),function(){return window.removeEventListener("resize",n)};function n(){i(t())}}),[]),c}},9963:function(e,t,n){var r=n(6550),a=n(6136),o=n(9962),l="q";t.Z=function(){var e=(0,r.k6)(),t=(0,r.TH)(),n=(0,o.Z)().siteConfig,c=(void 0===n?{}:n).baseUrl;return{searchValue:a.Z.canUseDOM&&new URLSearchParams(t.search).get(l)||"",updateSearchPath:function(n){var r=new URLSearchParams(t.search);n?r.set(l,n):r.delete(l),e.replace({search:r.toString()})},generateSearchPageLink:function(e){return c+"search?q="+encodeURIComponent(e)}}}}}]);
\ No newline at end of file
diff --git a/assets/js/38a398f5.af81869a.js b/assets/js/38a398f5.af81869a.js
deleted file mode 100644
index de806f9..0000000
--- a/assets/js/38a398f5.af81869a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1690],{4137:function(e,t,a){a.d(t,{Zo:function(){return c},kt:function(){return m}});var n=a(7294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?i(Object(a),!0).forEach((function(t){o(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):i(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function r(e,t){if(null==e)return{};var a,n,o=function(e,t){if(null==e)return{};var a,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)a=i[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},c=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},h="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,c=r(e,["components","mdxType","originalType","parentName"]),h=p(a),d=o,m=h["".concat(s,".").concat(d)]||h[d]||u[d]||i;return a?n.createElement(m,l(l({ref:t},c),{},{components:a})):n.createElement(m,l({ref:t},c))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=a.length,l=new Array(i);l[0]=d;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r[h]="string"==typeof e?e:o,l[1]=r;for(var p=2;p<i;p++)l[p]=a[p];return n.createElement.apply(null,l)}return n.createElement.apply(null,a)}d.displayName="MDXCreateElement"},5340:function(e,t,a){a.r(t),a.d(t,{contentTitle:function(){return s},default:function(){return d},frontMatter:function(){return r},metadata:function(){return p},toc:function(){return c}});var n=a(7462),o=a(3366),i=(a(7294),a(4137)),l=["components"],r={title:"Apache Pinot Tutorial for Getting Started - A Step-by-Step Guide",author:"Barkha Herman",author_title:"Developer Advocate",author_url:"https://pinot.apache.org/",author_image_url:"https://pinot.apache.org/authors/pinot_team.jpg",description:"This blog post is a guide to getting started with Apache Pinot, including installing and running the necessary components of a Pinot cluster. It also explains how to set up schemas, tables, and load data into Pinot, as well as how to run queries using the Pinot Data Explorer. The next article in the series will cover consuming event streaming data with Apache Pinot and Apache Kafka.",keywords:["Apache Pinot","getting started with Pinot","DataExplorer","streaming data","Apache Kafka"],tags:["Pinot","Data","Analytics","User-Facing Analytics","data explorer","getting started","streaming","kafka"]},s=void 0,p={permalink:"/blog/2023/05/18/apache-pinot-tutorial-for-getting-started-a-step-by-step-guide",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2023-05-18-apache-pinot-tutorial-for-getting-started-a-step-by-step-guide.md",source:"@site/blog/2023-05-18-apache-pinot-tutorial-for-getting-started-a-step-by-step-guide.md",title:"Apache Pinot Tutorial for Getting Started - A Step-by-Step Guide",description:"This blog post is a guide to getting started with Apache Pinot, including installing and running the necessary components of a Pinot cluster. It also explains how to set up schemas, tables, and load data into Pinot, as well as how to run queries using the Pinot Data Explorer. The next article in the series will cover consuming event streaming data with Apache Pinot and Apache Kafka.",date:"2023-05-18T00:00:00.000Z",formattedDate:"May 18, 2023",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Data",permalink:"/blog/tags/data"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"data explorer",permalink:"/blog/tags/data-explorer"},{label:"getting started",permalink:"/blog/tags/getting-started"},{label:"streaming",permalink:"/blog/tags/streaming"},{label:"kafka",permalink:"/blog/tags/kafka"}],readingTime:7.91,truncated:!1,prevItem:{title:"Change Data Capture with Apache Pinot - How Does It Work?",permalink:"/blog/2023/05/23/change-data-capture-with-apache-pinot-how-does-it-work"},nextItem:{title:"StarTree Indexes in Apache Pinot Part-1 - Understanding the Impact on Query Performance",permalink:"/blog/2023/05/16/star-tree-indexes-in-apache-pinot-part-1-understanding-the-impact-on-query-performance"}},c=[{value:"The Obligatory What is Apache Pinot and StarTree Section",id:"the-obligatory-what-is-apache-pinot-and-startree-section",children:[]},{value:"What do you need to run Apache Pinot?",id:"what-do-you-need-to-run-apache-pinot",children:[]},{value:"Step-by-step installation of Apache Pinot",id:"step-by-step-installation-of-apache-pinot",children:[{value:"Step 1:\xa0",id:"step-1",children:[]},{value:"Step 2:",id:"step-2",children:[]},{value:"Step 3:",id:"step-3",children:[]},{value:"Step 4:",id:"step-4",children:[]},{value:"Step 5:",id:"step-5",children:[]}]},{value:"What\u2019s under the hood?",id:"whats-under-the-hood",children:[]},{value:"Conclusion",id:"conclusion",children:[]}],h={toc:c},u="wrapper";function d(e){var t=e.components,a=(0,o.Z)(e,l);return(0,i.kt)(u,(0,n.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"How do you get started with ",(0,i.kt)("a",{parentName:"p",href:"https://startree.ai/resources/what-is-apache-pinot"},"Apache Pinot\u2122"),"? Good question! To save you the hassle of trying to tackle this on your own, here\u2019s a handy guide that overviews all of the components that make up Pinot and how to set Pinot up."),(0,i.kt)("h2",{id:"the-obligatory-what-is-apache-pinot-and-startree-section"},"The Obligatory What is Apache Pinot and StarTree Section"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://startree.ai/what-is-apache-pinot"},"Pinot")," is an open source, free-to-use, real-time, and distributed OLAP datastore, purpose built to provide ultra low-latency analytics at extremely high throughput."),(0,i.kt)("p",null,"StarTree offers a fully managed version of the Apache Pinot ",(0,i.kt)("a",{parentName:"p",href:"https://startree.ai/resources/what-is-real-time-analytics"},"real-time analytics")," system and other tools around it, such as a real-time anomaly detection and root cause analysis tool, which you can ",(0,i.kt)("a",{parentName:"p",href:"https://startree.ai/saas-signup"},"try for free"),"."),(0,i.kt)("h2",{id:"what-do-you-need-to-run-apache-pinot"},"What do you need to run Apache Pinot?"),(0,i.kt)("p",null,"The Docker image that we will use runs multiple services. To accommodate this, we recommend at a minimum the following resources in order to run the sample:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"CPUs: four or more"),(0,i.kt)("li",{parentName:"ul"},"Memory: 8 GB or more"),(0,i.kt)("li",{parentName:"ul"},"Swap: 2 GB or more"),(0,i.kt)("li",{parentName:"ul"},"Disk space: 10 GB or more")),(0,i.kt)("p",null,"Note: When importing custom data or event streaming, you may need more resources. Additionally, note that if not set, Docker will use resources from the host environment as needed and available."),(0,i.kt)("h2",{id:"step-by-step-installation-of-apache-pinot"},"Step-by-step installation of Apache Pinot"),(0,i.kt)("p",null,"For this intro tutorial, we will use Docker. Alternatively, you can run Pinot locally if you wish.\xa0"),(0,i.kt)("p",null,"The instructions use a Windows 11 computer, but they will work on Macs as well. Also note that I am using VS Code with the Docker extension installed."),(0,i.kt)("h3",{id:"step-1"},"Step 1:\xa0"),(0,i.kt)("p",null,"Make sure you have ",(0,i.kt)("a",{parentName:"p",href:"https://docs.docker.com/get-docker/"},"Docker installed")," on your machine."),(0,i.kt)("p",null,(0,i.kt)("em",{parentName:"p"},"Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers.")),(0,i.kt)("h3",{id:"step-2"},"Step 2:"),(0,i.kt)("p",null,"Now, let\u2019s download the Docker image. On a Windows machine, start a new PowerShell command window. Note that this is not the same as a Windows PowerShell command window, as shown below.\xa0"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684419409-image7.png",alt:"Download Docker image on Windows with PowerShell command window",title:"Download Docker image on Windows with PowerShell command window"})),(0,i.kt)("p",null,"Use the following command to get (pull) the image we are looking for:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker pull apachepinot/pinot:0.12.0\n")),(0,i.kt)("p",null,"You can also download the latest version like so:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker pull apachepinot/pinot:latest\n")),(0,i.kt)("p",null,"Here, apachepinot is the name of the repository in Docker Hub, pinot is the name of the image, and :latest or :0.12.0 is the version for the image.\xa0 Note that we will be using the 0.12.0 version for this blog post."),(0,i.kt)("p",null,(0,i.kt)("em",{parentName:"p"},"Docker Hub is the world\u2019s largest repository of container images in the world."),"\xa0"),(0,i.kt)("p",null,"You can verify the image was downloaded or pulled by running the following command:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker images\n")),(0,i.kt)("p",null,"It should show you the image like so:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684420004-image3.png",alt:"Docker images command",title:"Docker images command"})),(0,i.kt)("h3",{id:"step-3"},"Step 3:"),(0,i.kt)("p",null,"Let\u2019s run a container using the Docker image that we downloaded:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker run -it --entrypoint /bin/bash -p 9000:9000 apachepinot/pinot:0.12.0\n")),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684420103-image4.png",alt:"Running a container with downloaded Docker image",title:"Running a container with downloaded Docker image"})),(0,i.kt)("p",null,"The docker run command runs the image. The ","-","p 9000:00 option maps the docker container port 9000 to the local machine port 9000. This allows us to access the Pinot UI, which defaults to port 9000 to be accessible from the localhost. We are using the \u2013entrypoint to override the default entrypoint and replace it with Bash. We want to override the default behavior so that we can start each component one at a time. The next parameter apachepinot/pinot:0.12.0 is the Docker image we pulled above."),(0,i.kt)("p",null,"After running the command, we\u2019ll find ourselves in the Docker container instance running Bash shell. We can use ls to list the contents of the Docker container as shown above."),(0,i.kt)("p",null,"If you\u2019re using VS Code, with the Docker extension installed, you can click on the Docker extension and see our container and its content:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684421493-image11.png",alt:"VS Code Docker extension open to see container and content",title:"VS Code Docker extension open to see container and content"})),(0,i.kt)("p",null,"Click on the Docker icon in the left menu, and apachepinot/pinot:0.12.0. This should take a few seconds to connect to the running container. Now, you can navigate to the files and see what we have under the opt folder."),(0,i.kt)("h3",{id:"step-4"},"Step 4:"),(0,i.kt)("p",null,"Let\u2019s run the components that are essential to running a Pinot cluster. Change directory to the bin folder and list the contents like so:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684421611-image10.png",alt:"Running components, directory changed to bin folder and contents listed",title:"Running components, directory changed to bin folder and contents listed"})),(0,i.kt)("p",null,"In order to start the Pinot cluster, we will need to run the following essential components:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Apache ZooKeeper\u2122"),(0,i.kt)("li",{parentName:"ul"},"Controller"),(0,i.kt)("li",{parentName:"ul"},"Broker"),(0,i.kt)("li",{parentName:"ul"},"Server")),(0,i.kt)("p",null,"Start ZooKeeper using the following command:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./pinot-admin.sh StartZookeeper &\n")),(0,i.kt)("p",null,"pinot-admin.sh is a shell script for starting the various components. The & allows us to continue using the Bash shell. ZooKeeper is responsible for the configuration for the Pinot cluster and needs to be started first."),(0,i.kt)("p",null,"We can start the remaining components using these commands one at a time:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./pinot-admin.sh StartController &\n./pinot-admin.sh StartBroker &\n./pinot-admin.sh StartServer &\n")),(0,i.kt)("p",null,"The controller controls the cluster health and coordinates with ZooKeeper for configuration and status changes. The broker is responsible for query distribution and result collation, sometimes called Scatter-Gather. Servers manage individual table segments and perform the actual read/writes. To get a better understanding of each component, read this ",(0,i.kt)("a",{parentName:"p",href:"https://startree.ai/blog/introduction-to-apache-pinot-a-beginners-guide"},"intro to Apache Pinot"),"."),(0,i.kt)("p",null,"At this time, we should have a running Pinot cluster. We can verify via the Pinot Data Explorer by browsing to localhost:9000. You should see something like this:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684419932-image2.png",alt:"Pinot data explorer",title:"Pinot data explorer"})),(0,i.kt)("p",null,"What just happened?"),(0,i.kt)("p",null,"Let\u2019s dive in."),(0,i.kt)("p",null,"We have started the four essential components of Pinot, however, you will note that there is not yet any data in our fresh new instance."),(0,i.kt)("p",null,"Before we create a table and load data, notice the four navigation menus on the left-hand side. You can look at the cluster status, run queries, inspect ZooKeeper, or launch the Swagger endpoints for the REST API that Pinot supports."),(0,i.kt)("p",null,"On the cluster, we notice that we have the essentials deployed: controller, broker, and server. Currently, there are no tables and no minions\u2014dispatchable components used for task management\u2014exist, though Notice also that multi-tenancy support is available in the cluster manager."),(0,i.kt)("h3",{id:"step-5"},"Step 5:"),(0,i.kt)("p",null,"Now that we have our Apache Pinot cluster ready, let\u2019s load some data. Of course, before we do that, we have to create a schema.\xa0"),(0,i.kt)("p",null,"Let\u2019s navigate to the folder:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"cd /opt/pinot/examples/batch/baseballStats\n")),(0,i.kt)("p",null,"You will notice that there are the following files listed here:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"baseballStats_offline_table_config.json \nbaseballStats_schema.json \ningestionJobSpec.yaml \nsparkIngestionJobSpec.yaml \nrawdata\n")),(0,i.kt)("p",null,"From the names, we can see that there is a schema file, a table config file, an ingestion job, and Apache Spark\u2122 ingestion job files as well as a raw data folder."),(0,i.kt)("p",null,"The content of the schema file contains both metric and dimension like so (abbreviated):"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "metricFieldSpecs": [\n {\n "dataType": "INT",\n "name": "playerStint"\n },\n \u2026 \n {\n "dataType": "INT",\n "name": "baseOnBalls"\n },\n ],\n "dimensionFieldSpecs": [\n {\n "dataType": "STRING",\n "name": "playerID"\n },\n \u2026.\n {\n "dataType": "STRING",\n "name": "playerName"\n }\n ],\n "schemaName": "baseballStats"\n}\n')),(0,i.kt)("p",null,"To create a schema and table for the baseball stats file, run the following command from the /app/pinot/bin folder:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./pinot-admin.sh AddTable -schemaFile /opt/pinot/examples/batch/baseballStats/baseballStats_schema.json -tableConfigFile /opt/pinot/examples/batch/baseballStats/baseballStats_offline_table_config.json -exec\n")),(0,i.kt)("p",null,"You should now see the schema and table created:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684421406-image12.png",alt:"Apache Pinot tables created",title:"Apache Pinot tables created"})),(0,i.kt)("p",null,"Next, we\u2019ll want to load some data into the table that we created. We have some sample data in the folder rawdata that we can use to load. We will need a YAML file to perform the actual ingestion job and can use the following command to import data:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"./pinot-admin.sh LaunchDataIngestionJob -jobSpecFile /opt/pinot/examples/batch/baseballStats/ingestionJobSpec.yaml\n\n")),(0,i.kt)("p",null,"If you run into trouble on this step like I did, edit the ingestJobSpec.yaml file using Docker Desktop to change the inputDirURI from relative to absolute path. Then rerun the above command."),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684419802-image1.png",alt:"Editing the .yaml file with Docker Desktop",title:"Editing the .yaml file with Docker Desktop"})),(0,i.kt)("p",null,"You should now be able to see the table has been populated like so:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684421215-image8.png",alt:"Apache Pinot table populated",title:"Apache Pinot table populated"})),(0,i.kt)("p",null,"Now, let\u2019s run some queries. From localhost:9000, select the Query Console in the left-hand menu. Then type in some of these queries:"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"select * from baseballStats limit 10\nselect sum(runs), playerName from baseballStats group by playerName order by sum(runs) desc\n")),(0,i.kt)("p",null,"You should see results like so:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684421163-image6.png",alt:"Apache Pinot query console",title:"Apache Pinot query console"})),(0,i.kt)("p",null,"And there you have it!"),(0,i.kt)("h2",{id:"whats-under-the-hood"},"What\u2019s under the hood?"),(0,i.kt)("p",null,"If you\u2019re curious to go a step further and see what the segments look like and what the actual data on disk looks like, keep reading! In the Tables section of localhost:9000, you can scroll down to find a segment:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684421358-image9.png",alt:"Apache Pinot data on disk segment",title:"Apache Pinot data on disk segment"})),(0,i.kt)("p",null,"Clicking on this gives the specifics of the segment:"),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1684420155-image5.png",alt:"Segment specifics in Pinot UI",title:"Segment specifics in Pinot UI"})),(0,i.kt)("p",null,"Pinot allows you to easily inspect your segments and tables in one easy-to-use UI. You can find what\u2019s where and keep an eye on size, location, number of documents, etc."),(0,i.kt)("h2",{id:"conclusion"},"Conclusion"),(0,i.kt)("p",null,"Congratulations!"),(0,i.kt)("p",null,"Together, we\u2019ve:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Installed and ran Apache Pinot components"),(0,i.kt)("li",{parentName:"ul"},"Created a table schema and a table"),(0,i.kt)("li",{parentName:"ul"},"Loaded data in a table"),(0,i.kt)("li",{parentName:"ul"},"Ran a few queries"),(0,i.kt)("li",{parentName:"ul"},"Explored the Pinot UI")),(0,i.kt)("p",null,"In my next article, we\u2019ll consume event streaming data using Apache Pinot and Apache Kafka\xae."),(0,i.kt)("p",null,"In the meantime, run more queries, load more data, and don\u2019t forget to ",(0,i.kt)("a",{parentName:"p",href:"https://communityinviter.com/apps/startreedata/startree-community"},"join the Community Slack")," for support if you get stuck!"))}d.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/38ce0a13.e126d3ee.js b/assets/js/38ce0a13.e126d3ee.js
deleted file mode 100644
index 4e7b499..0000000
--- a/assets/js/38ce0a13.e126d3ee.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3203],{4137:function(t,e,n){n.d(e,{Zo:function(){return u},kt:function(){return d}});var r=n(7294);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function a(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){o(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function s(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r<i.length;r++)n=i[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var c=r.createContext({}),l=function(t){var e=r.useContext(c),n=e;return t&&(n="function"==typeof t?t(e):a(a({},e),t)),n},u=function(t){var e=l(t.components);return r.createElement(c.Provider,{value:e},t.children)},p="mdxType",m={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},f=r.forwardRef((function(t,e){var n=t.components,o=t.mdxType,i=t.originalType,c=t.parentName,u=s(t,["components","mdxType","originalType","parentName"]),p=l(n),f=o,d=p["".concat(c,".").concat(f)]||p[f]||m[f]||i;return n?r.createElement(d,a(a({ref:e},u),{},{components:n})):r.createElement(d,a({ref:e},u))}));function d(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var i=n.length,a=new Array(i);a[0]=f;var s={};for(var c in e)hasOwnProperty.call(e,c)&&(s[c]=e[c]);s.originalType=t,s[p]="string"==typeof t?t:o,a[1]=s;for(var l=2;l<i;l++)a[l]=n[l];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}f.displayName="MDXCreateElement"},7533:function(t,e,n){n.r(e),n.d(e,{contentTitle:function(){return c},default:function(){return f},frontMatter:function(){return s},metadata:function(){return l},toc:function(){return u}});var r=n(7462),o=n(3366),i=(n(7294),n(4137)),a=["components"],s={title:"Install Pinot On MacOS",sidebar_label:"MacOS",description:"Install Pinot on MacOS",draft:!0},c=void 0,l={unversionedId:"administration/installation/operating-systems/macos",id:"administration/installation/operating-systems/macos",isDocsHomePage:!1,title:"Install Pinot On MacOS",description:"Install Pinot on MacOS",source:"@site/docs/administration/installation/operating-systems/macos.md",sourceDirName:"administration/installation/operating-systems",slug:"/administration/installation/operating-systems/macos",permalink:"/docs/administration/installation/operating-systems/macos",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/administration/installation/operating-systems/macos.md",version:"current",frontMatter:{title:"Install Pinot On MacOS",sidebar_label:"MacOS",description:"Install Pinot on MacOS",draft:!0},sidebar:"docs",previous:{title:"Azure",permalink:"/docs/administration/installation/cloud/azure"},next:{title:"Ubuntu",permalink:"/docs/administration/installation/operating-systems/ubuntu"}},u=[],p={toc:u},m="wrapper";function f(t){var e=t.components,n=(0,o.Z)(t,a);return(0,i.kt)(m,(0,r.Z)({},p,n,{components:e,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/39e3cdf0.5d2d7c39.js b/assets/js/39e3cdf0.5d2d7c39.js
deleted file mode 100644
index d6073df..0000000
--- a/assets/js/39e3cdf0.5d2d7c39.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3298],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return f}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=o,f=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,a(a({ref:t},p),{},{components:n})):r.createElement(f,a({ref:t},p))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=m;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:o,a[1]=l;for(var s=2;s<i;s++)a[s]=n[s];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}m.displayName="MDXCreateElement"},5309:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return c},default:function(){return m},frontMatter:function(){return l},metadata:function(){return s},toc:function(){return p}});var r=n(7462),o=n(3366),i=(n(7294),n(4137)),a=["components"],l={title:"A Brief History of Scaling LinkedIn",author:"LinkedIn",author_title:"LinkedIn Engineering Team",author_url:"https://engineering.linkedin.com/blog/topic/pinot",author_image_url:"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Linkedin_icon.svg/512px-Linkedin_icon.svg.png",description:"LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn\u2019s product portfolio, member base, and server load has grown tremendously.",keywords:["Pinot","LinkedIn","Data Scaling","User-Facing Analytics","Real-time data platform"],tags:["Pinot","LinkedIn","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},c=void 0,s={permalink:"/blog/2015/05/16/LinkedIn-Scaling",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2015-05-16-LinkedIn-Scaling.md",source:"@site/blog/2015-05-16-LinkedIn-Scaling.md",title:"A Brief History of Scaling LinkedIn",description:"LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn\u2019s product portfolio, member base, and server load has grown tremendously.",date:"2015-05-16T00:00:00.000Z",formattedDate:"May 16, 2015",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"LinkedIn",permalink:"/blog/tags/linked-in"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.545,truncated:!1,prevItem:{title:"Open Sourcing Pinot - Scaling the Wall of Real-Time Analytics",permalink:"/blog/2015/06/10/Open-Sourcing-Pinot"}},p=[],u={toc:p},d="wrapper";function m(e){var t=e.components,n=(0,o.Z)(e,a);return(0,i.kt)(d,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"LinkedIn started in 2003 with the goal of connecting to your network for better job opportunities. It had only 2,700 members the first week. Fast forward many years, and LinkedIn\u2019s product portfolio, member base, and server load has grown tremendously."),(0,i.kt)("p",null,"Today, LinkedIn operates globally with more than 350 million members. We serve tens of thousands of web pages every second of every day. We've hit our mobile moment where mobile accounts for more than 50 percent of all global traffic. All those requests are fetching data from our backend systems, which in turn handle millions of queries per second."),(0,i.kt)("p",null,"Read More at ",(0,i.kt)("a",{parentName:"p",href:"https://engineering.linkedin.com/architecture/brief-history-scaling-linkedin"},"https://engineering.linkedin.com/architecture/brief-history-scaling-linkedin")),(0,i.kt)("p",null,(0,i.kt)("img",{parentName:"p",src:"https://content.linkedin.com/content/dam/engineering/en-us/blog/migrated/data_centers_pops_0.png",alt:"A Brief History of Scaling LinkedIn"})))}m.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/3b71b88c.85e1fee0.js b/assets/js/3b71b88c.85e1fee0.js
deleted file mode 100644
index 743edf1..0000000
--- a/assets/js/3b71b88c.85e1fee0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8499],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,i=function(e,t){if(null==e)return{};var n,a,i={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},h=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),c=d(n),h=i,m=c["".concat(s,".").concat(h)]||c[h]||u[h]||o;return n?a.createElement(m,r(r({ref:t},p),{},{components:n})):a.createElement(m,r({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,r=new Array(o);r[0]=h;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[c]="string"==typeof e?e:i,r[1]=l;for(var d=2;d<o;d++)r[d]=n[d];return a.createElement.apply(null,r)}return a.createElement.apply(null,n)}h.displayName="MDXCreateElement"},4085:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return s},default:function(){return h},frontMatter:function(){return l},metadata:function(){return d},toc:function(){return p}});var a=n(7462),i=n(3366),o=(n(7294),n(4137)),r=["components"],l={title:"Apache Pinot\u2122 0.11 - How do I see my indexes?",author:"Mark Needham",author_title:"Mark Needham",author_url:"https://www.linkedin.com/in/markhneedham/",author_image_url:"https://www.datocms-assets.com/75153/1661544338-mark-needham.png",description:"How you can work out which indexes are currently defined on a Pinot table",keywords:["Apache Pinot","Apache Pinot 0.11.0","Indexes"],tags:["Pinot","Data","Analytics","User-Facing Analytics","Indexes"]},s=void 0,d={permalink:"/blog/2022/11/08/Apache Pinot-How-do-I-see-my-indexes",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2022-11-08-Apache Pinot-How-do-I-see-my-indexes.md",source:"@site/blog/2022-11-08-Apache Pinot-How-do-I-see-my-indexes.md",title:"Apache Pinot\u2122 0.11 - How do I see my indexes?",description:"How you can work out which indexes are currently defined on a Pinot table",date:"2022-11-08T00:00:00.000Z",formattedDate:"November 8, 2022",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Data",permalink:"/blog/tags/data"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"Indexes",permalink:"/blog/tags/indexes"}],readingTime:3.79,truncated:!1,prevItem:{title:"Apache Pinot\u2122 0.11 - Inserts from SQL",permalink:"/blog/2022/11/17/Apache Pinot-Inserts-from-SQL"},nextItem:{title:"GapFill Function For Time-Series Datasets In Pinot",permalink:"/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot"}},p=[{value:"Spinning up Pinot",id:"spinning-up-pinot",children:[]},{value:"Indexing Config",id:"indexing-config",children:[]},{value:"Viewing Indexes",id:"viewing-indexes",children:[]},{value:"Adding an Index",id:"adding-an-index",children:[]},{value:"Summary",id:"summary",children:[]}],c={toc:p},u="wrapper";function h(e){var t=e.components,n=(0,i.Z)(e,r);return(0,o.kt)(u,(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"We recently released ",(0,o.kt)("a",{parentName:"p",href:"https://medium.com/apache-pinot-developer-blog/apache-pinot-0-11-released-d564684df5d4"},"Pinot 0.11.0")," , which has lots of goodies for you to play with. This is the first in a series of blog posts showing off some of the new features in this release."),(0,o.kt)("p",null,"A common question from the community is: how can you work out which indexes are currently defined on a Pinot table? This information has always been ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/users/api/pinot-rest-admin-interface"},"available via the REST API"),", but sometimes you simply want to see it on the UI and not have to parse your way through a bunch of JSON. Let's see how it works!"),(0,o.kt)("h2",{id:"spinning-up-pinot"},"Spinning up Pinot"),(0,o.kt)("p",null,"We\u2019re going to spin up the Batch ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/getting-started/quick-start"},"QuickStart")," in Docker using the following command:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n  -p 8000:8000 \\\n  -p 9000:9000 \\\n  apachepinot/pinot:0.11.0 \\\n  QuickStart -type BATCH\n")),(0,o.kt)("p",null,"Or if you\u2019re on a Mac M1, change the name of the image to have the arm-64 suffix, like this:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n  -p 8000:8000 \\\n  -p 9000:9000 \\\n  apachepinot/pinot:0.11.0-arm64 \\\n  QuickStart -type BATCH\n")),(0,o.kt)("p",null,"Once that\u2019s up and running, navigate to ",(0,o.kt)("a",{parentName:"p",href:"http://localhost:9000/#/"},"http://localhost:9000/#/")," and click on Tables. Under the tables section click on airlineStats","_","OFFLINE. You should see a page that looks like this:"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667915561-image1-edittable.png",alt:"airlineStats_OFFLINE page",title:"airlineStats_OFFLINE page"})),(0,o.kt)("p",null,"Click on Edit Table. This will show a window with the config for this table."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667915654-image3.png",alt:"Window with configuration for airlineStats_OFFLINE table",title:"Window with configuration for airlineStats_OFFLINE table"})),(0,o.kt)("h2",{id:"indexing-config"},"Indexing Config"),(0,o.kt)("p",null,"We\u2019re interested in the tableIndexConfig and fieldConfigList sections. These sections are responsible for defining indexes, which are applied to a table on a per segment basis.\xa0"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"tableIndexConfig is responsible for inverted, JSON, range, Geospatial, and StarTree indexes."),(0,o.kt)("li",{parentName:"ul"},"fieldConfigList is responsible for timestamp and text indexes.")),(0,o.kt)("p",null,"tableIndexConfig is defined below:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'"tableIndexConfig": {\n  "rangeIndexVersion": 2,\n  "autoGeneratedInvertedIndex": false,\n  "createInvertedIndexDuringSegmentGeneration": false,\n  "loadMode": "MMAP",\n  "enableDefaultStarTree": false,\n  "enableDynamicStarTreeCreation": false,\n  "aggregateMetrics": false,\n  "nullHandlingEnabled": false,\n  "optimizeDictionaryForMetrics": false,\n  "noDictionarySizeRatioThreshold": 0\n},\n')),(0,o.kt)("p",null,"From reading this config we learn that no indexes have been explicitly defined."),(0,o.kt)("p",null,"Now for fieldConfigList, which is defined below:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'"fieldConfigList": [\n  {\n    "name": "ts",\n    "encodingType": "DICTIONARY",\n    "indexType": "TIMESTAMP",\n    "indexTypes": [\n      "TIMESTAMP"\n    ],\n    "timestampConfig": {\n      "granularities": [\n        "DAY",\n        "WEEK",\n        "MONTH"\n      ]\n    }\n  }\n],\n')),(0,o.kt)("p",null,"From reading this config we learn that a timestamp index is being applied to the ",(0,o.kt)("em",{parentName:"p"},"ts")," column. It is applied at DAY, WEEK, and MONTH granularities, which means that the derived columns $ts$DAY, $ts$WEEK, and $ts$MONTH will be created for the segments in this table."),(0,o.kt)("h2",{id:"viewing-indexes"},"Viewing Indexes"),(0,o.kt)("p",null,"Now, close the table config modal, and under the segments section, open airlineStats","_","OFFLINE","_","16071","_","16071","_","0 and airlineStats","_","OFFLINE","_","16073","_","16073","_","0 in new tabs."),(0,o.kt)("p",null,"If you look at one of those segments, you\u2019ll see the following grid that lists columns/field names against the indexes defined on those fields."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667915996-image7.png",alt:"Segment grid that lists columns/field names against the indexes defined on those fields",title:"Segment grid that lists columns/field names against the indexes defined on those fields"})),(0,o.kt)("p",null,"All the fields on display are persisting their values using the dictionary/forward ",(0,o.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/indexing/forward-index"},"index format")," ). Still, we can also see that the Quarter column is sorted and has an inverted index, neither of which we explicitly defined."),(0,o.kt)("p",null,"This is because Pinot will automatically create sorted and inverted indexes for columns whose data is sorted when the segment is created.\xa0"),(0,o.kt)("p",null,"So the data for the Quarter column was sorted, and hence it has a sorted index."),(0,o.kt)("p",null,"I\u2019ve written a couple of blog posts explaining how sorted indexes work on offline and real-time tables:"),(0,o.kt)("h2",{id:"adding-an-index"},"Adding an Index"),(0,o.kt)("p",null,"Next, let\u2019s see what happens if we add an explicit index. We\u2019re going to add an inverted index to the FlightNum column. Go to Edit Table config again and update tableIndexConfig to have the following value:"),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667916147-image6.png",alt:"Inverted index addition",title:"Inverted index addition"})),(0,o.kt)("p",null,"If you go back to the page for segment airlineStats","_","OFFLINE","_","16073","_","16073","_","0, notice that it does not have an inverted index for this field."),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://www.datocms-assets.com/75153/1667916232-image2.png",alt:"page for segment airlineStats_OFFLINE_16073_16073_0 without an inverted index",title:"page for segment airlineStats_OFFLINE_16073_16073_0 without an inverted index"})),(0,o.kt)("p",null,"This is because indexes are applied on a per segment basis. If we want the inverted index on the FlightNum column in this segment, we can click ",(0,o.kt)("em",{parentName:"p"},"Reload Segment")," on this page, or we can go back to the table page and click ",(0,o.kt)("em",{parentName:"p"},"Reload All Segments"),".\xa0"),(0,o.kt)("p",null,"If we do that, all the segments in the airlineStats","_","OFFLINE table will eventually have an inverted index on FlightNum."),(0,o.kt)("h2",{id:"summary"},"Summary"),(0,o.kt)("p",null,"As I mentioned in the introduction, information about the indexes on each segment has always been available via the REST API, but this feature democratizes that information.\xa0"),(0,o.kt)("p",null,"If you have any questions about this feature, feel free to join us on ",(0,o.kt)("a",{parentName:"p",href:"https://stree.ai/slack"},"Slack"),", where we\u2019ll be happy to help you out."))}h.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/3bf23df0.464a02a0.js b/assets/js/3bf23df0.464a02a0.js
deleted file mode 100644
index 2eb5f17..0000000
--- a/assets/js/3bf23df0.464a02a0.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4037],{4137:function(e,t,a){a.d(t,{Zo:function(){return p},kt:function(){return h}});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?l(Object(a),!0).forEach((function(t){r(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):l(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function o(e,t){if(null==e)return{};var a,n,r=function(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)a=l[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),u=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},p=function(e){var t=u(e.components);return n.createElement(s.Provider,{value:t},e.children)},d="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,l=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=u(a),c=r,h=d["".concat(s,".").concat(c)]||d[c]||m[c]||l;return a?n.createElement(h,i(i({ref:t},p),{},{components:a})):n.createElement(h,i({ref:t},p))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var l=a.length,i=new Array(l);i[0]=c;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[d]="string"==typeof e?e:r,i[1]=o;for(var u=2;u<l;u++)i[u]=a[u];return n.createElement.apply(null,i)}return n.createElement.apply(null,a)}c.displayName="MDXCreateElement"},1179:function(e,t,a){a.r(t),a.d(t,{contentTitle:function(){return s},default:function(){return c},frontMatter:function(){return o},metadata:function(){return u},toc:function(){return p}});var n=a(7462),r=a(3366),l=(a(7294),a(4137)),i=["components"],o={title:"Announcing Apache Pinot 0.10",author:"Apache Pinot Engineering Team",author_title:"Apache Pinot Engineering Team",author_url:"https://twitter.com/ApachePinot",author_image_url:"https://pinot.apache.org/authors/pinot_team.jpg",description:"Learn more about the release of Apache Pinot 0.10 and all of new features that have been included in this version of the product.",keywords:["Apache Pinot","Apache Pinot Releases","Apache Pinot 0.10.0"],tags:["Pinot","Data","Analytics","User-Facing Analytics","Releases"]},s=void 0,u={permalink:"/blog/2022/04/04/Announcing-Apache-Pinot-0-10",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2022-04-04-Announcing-Apache-Pinot-0-10.md",source:"@site/blog/2022-04-04-Announcing-Apache-Pinot-0-10.md",title:"Announcing Apache Pinot 0.10",description:"Learn more about the release of Apache Pinot 0.10 and all of new features that have been included in this version of the product.",date:"2022-04-04T00:00:00.000Z",formattedDate:"April 4, 2022",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"Data",permalink:"/blog/tags/data"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"},{label:"Releases",permalink:"/blog/tags/releases"}],readingTime:4.615,truncated:!1,prevItem:{title:"GapFill Function For Time-Series Datasets In Pinot",permalink:"/blog/2022/08/02/GapFill-Function-For-Time-Series-Datasets-In-Pinot"},nextItem:{title:"Text analytics on LinkedIn Talent Insights using Apache Pinot",permalink:"/blog/2021/06/16/LinkedIn-TextAnalytics"}},p=[{value:"Query Plans",id:"query-plans",children:[]},{value:"FILTER Clauses for Aggregates",id:"filter-clauses-for-aggregates",children:[]},{value:"greatest and least",id:"greatest-and-least",children:[]},{value:"DistinctCountSmartHLL",id:"distinctcountsmarthll",children:[]},{value:"UI updates",id:"ui-updates",children:[]},{value:"RealTimeToOffline Task",id:"realtimetooffline-task",children:[]},{value:"Empty QuickStart",id:"empty-quickstart",children:[]},{value:"Data Ingestion",id:"data-ingestion",children:[]},{value:"Other changes",id:"other-changes",children:[]},{value:"Dependency updates",id:"dependency-updates",children:[]},{value:"Resources",id:"resources",children:[]}],d={toc:p},m="wrapper";function c(e){var t=e.components,o=(0,r.Z)(e,i);return(0,l.kt)(m,(0,n.Z)({},d,o,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"We are excited to announce the release this week of Apache Pinot 0.10.\nApache Pinot is a real-time distributed datastore designed to answer OLAP queries with high throughput and low latency."),(0,l.kt)("p",null,"This release is cut from commit ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/apache/pinot/commit/fd9c58a11ed16d27109baefcee138eea30132ad3"},"fd9c58a11ed16d27109baefcee138eea30132ad3"),".\nYou can find a full list of everything included in the ",(0,l.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/releases/0.10.0"},"release notes"),"."),(0,l.kt)("p",null,"Let\u2019s have a look at some of the changes, with the help of the batch ",(0,l.kt)("a",{parentName:"p",href:"https://docs.pinot.apache.org/basics/getting-started/running-pinot-in-docker"},"QuickStart configuration"),"."),(0,l.kt)("h2",{id:"query-plans"},"Query Plans"),(0,l.kt)("p",null,"Amrish Lal implemented the ",(0,l.kt)("inlineCode",{parentName:"p"},"EXPLAIN PLAN")," clause, which returns the execution plan that will be chosen by the Pinot Query Engine.\nThis lets us see what the query is likely to do without actually having to run it."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sql"},"EXPLAIN PLAN FOR\nSELECT *\nFROM baseballStats\nWHERE league = 'NL'\n")),(0,l.kt)("p",null,"If we run this query, we'll see the following results:"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Operator"),(0,l.kt)("th",{parentName:"tr",align:null},"Operator_Id"),(0,l.kt)("th",{parentName:"tr",align:null},"Parent_Id"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"BROKER_REDUCE(limit:10)"),(0,l.kt)("td",{parentName:"tr",align:null},"0"),(0,l.kt)("td",{parentName:"tr",align:null},"-1")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"COMBINE_SELECT"),(0,l.kt)("td",{parentName:"tr",align:null},"1"),(0,l.kt)("td",{parentName:"tr",align:null},"0")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"SELECT(selectList:AtBatting, G_old, baseOnBalls, caughtStealing, doules, groundedIntoDoublePlays, hits, hitsByPitch, homeRuns, intentionalWalks, league, numberOfGames, numberOfGamesAsBatter, playerID, playerName, playerStint, runs, runsBattedIn, sacrificeFlies, sacrificeHits, stolenBases, strikeouts, teamID, tripples, yearID)"),(0,l.kt)("td",{parentName:"tr",align:null},"2"),(0,l.kt)("td",{parentName:"tr",align:null},"1")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"TRANSFORM_PASSTHROUGH(AtBatting, G_old, baseOnBalls, caughtStealing, doules, groundedIntoDoublePlays, hits, hitsByPitch, homeRuns, intentionalWalks, league, numberOfGames, numberOfGamesAsBatter, playerID, playerName, playerStint, runs, runsBattedIn, sacrificeFlies, sacrificeHits, stolenBases, strikeouts, teamID, tripples, yearID)"),(0,l.kt)("td",{parentName:"tr",align:null},"3"),(0,l.kt)("td",{parentName:"tr",align:null},"2")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"PROJECT(homeRuns, playerStint, groundedIntoDoublePlays, numberOfGames, AtBatting, stolenBases, tripples, hitsByPitch, teamID, numberOfGamesAsBatter, strikeouts, sacrificeFlies, caughtStealing, baseOnBalls, playerName, doules, league, yearID, hits, runsBattedIn, G_old, sacrificeHits, intentionalWalks, runs, playerID)"),(0,l.kt)("td",{parentName:"tr",align:null},"4"),(0,l.kt)("td",{parentName:"tr",align:null},"3")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"FILTER_FULL_SCAN(operator:EQ,predicate:league = 'NL')"),(0,l.kt)("td",{parentName:"tr",align:null},"5"),(0,l.kt)("td",{parentName:"tr",align:null},"4")))),(0,l.kt)("h2",{id:"filter-clauses-for-aggregates"},"FILTER Clauses for Aggregates"),(0,l.kt)("p",null,"Atri Sharma added the filter clause for aggregates.\nThis feature makes it possible to write queries like this:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT SUM(homeRuns) FILTER(WHERE league = 'NL') AS nlHomeRuns,\n       SUM(homeRuns) FILTER(WHERE league = 'AL') AS alHomeRuns\nFROM baseballStats\n")),(0,l.kt)("p",null,"If we run this query, we'll see the following output:"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"nlHomeRuns"),(0,l.kt)("th",{parentName:"tr",align:null},"alHomeRuns"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"135486"),(0,l.kt)("td",{parentName:"tr",align:null},"135990")))),(0,l.kt)("h2",{id:"greatest-and-least"},"greatest and least"),(0,l.kt)("p",null,"Richard Startin added the ",(0,l.kt)("inlineCode",{parentName:"p"},"greatest")," and ",(0,l.kt)("inlineCode",{parentName:"p"},"least")," functions:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT playerID,\n       least(5.0, max(homeRuns)) AS homeRuns,\n       greatest(5.0, max(hits)) AS hits\nFROM baseballStats\nWHERE league = 'NL' AND teamID = 'SFN'\nGROUP BY playerID\nLIMIT 5\n")),(0,l.kt)("p",null,"If we run this query, we'll see the following output:"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"playerID"),(0,l.kt)("th",{parentName:"tr",align:null},"homeRuns"),(0,l.kt)("th",{parentName:"tr",align:null},"hits"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"ramirju01"),(0,l.kt)("td",{parentName:"tr",align:null},"0"),(0,l.kt)("td",{parentName:"tr",align:null},"5")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"milneed01"),(0,l.kt)("td",{parentName:"tr",align:null},"4"),(0,l.kt)("td",{parentName:"tr",align:null},"54")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"testani01"),(0,l.kt)("td",{parentName:"tr",align:null},"0"),(0,l.kt)("td",{parentName:"tr",align:null},"5")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"shawbo01"),(0,l.kt)("td",{parentName:"tr",align:null},"0"),(0,l.kt)("td",{parentName:"tr",align:null},"8")),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"vogelry01"),(0,l.kt)("td",{parentName:"tr",align:null},"0"),(0,l.kt)("td",{parentName:"tr",align:null},"12")))),(0,l.kt)("h2",{id:"distinctcountsmarthll"},"DistinctCountSmartHLL"),(0,l.kt)("p",null," Xiaotian (Jackie) Jiang added the ",(0,l.kt)("inlineCode",{parentName:"p"},"DistinctCountSmartHLL")," aggregation function, which automatically converts the Set to HyperLogLog if the set size grows too big to protect the servers from running out of memory:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT DISTINCTCOUNTSMARTHLL(homeRuns, 'hllLog2m=8;hllConversionThreshold=10')\nFROM baseballStats\n")),(0,l.kt)("p",null,"If we run this query, we'll see the following output:"),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"distinctcountsmarthll(homeRuns)"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},"66")))),(0,l.kt)("h2",{id:"ui-updates"},"UI updates"),(0,l.kt)("p",null,"There were also a bunch of updates to the Pinot Data Explorer, by Sanket Shah and Johan Adami."),(0,l.kt)("p",null,"The display of reported size and estimated size is now in a human readable format:"),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"Human readable sizes",src:a(2019).Z})),(0,l.kt)("p",null,"Fixes for the following issues:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Error messages weren't showing on the UI when an invalid operation is attempted:")),(0,l.kt)("p",null,(0,l.kt)("img",{alt:"A backwards incompatible attempted schema change",src:a(734).Z})),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Query console goes blank on syntax error."),(0,l.kt)("li",{parentName:"ul"},"Query console cannot show query result when multiple columns have the same name."),(0,l.kt)("li",{parentName:"ul"},"Adding extra fields after ",(0,l.kt)("inlineCode",{parentName:"li"},"SELECT *")," would throw a NullPointerException."),(0,l.kt)("li",{parentName:"ul"},"Some queries were returning ",(0,l.kt)("inlineCode",{parentName:"li"},"--")," instead of ",(0,l.kt)("inlineCode",{parentName:"li"},"0"),"."),(0,l.kt)("li",{parentName:"ul"},"Query console couldn't show the query result if multiple columns had the same name."),(0,l.kt)("li",{parentName:"ul"},"Pinot Dashboard tenant view showing the incorrect amount of servers and brokers.")),(0,l.kt)("h2",{id:"realtimetooffline-task"},"RealTimeToOffline Task"),(0,l.kt)("p",null,"Xiaotian (Jackie) Jiang made some fixes to the ",(0,l.kt)("a",{parentName:"p",href:"https://dev.startree.ai/docs/pinot/recipes/real-time-offline-job"},"RealTimeToOffline job")," to handle time gaps and proceed to the next time window when no segment matches the current one."),(0,l.kt)("h2",{id:"empty-quickstart"},"Empty QuickStart"),(0,l.kt)("p",null,"Kenny Bastani added an empty QuickStart command, which lets you quickly spin up an empty Pinot cluster:"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-bash"},"docker run \\\n  -p 8000:8000 \\\n  -p 9000:9000 \\\n  apachepinot/pinot:0.10.0 QuickStart \\\n  -type empty\n")),(0,l.kt)("p",null,"You can then ingest your own dataset without needing to worry about spinning up each of the Pinot components individually."),(0,l.kt)("h2",{id:"data-ingestion"},"Data Ingestion"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Richard Startin fixed some issues with real-time ingestion where consumption of messages would stop if a bad batch of messages was consumed from Kafka.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Mohemmad Zaid Khan added the BoundedColumnValue partition function, which partitions segments based on column values.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("p",{parentName:"li"},"Xiaobing Li added the fixed name segment generator, which can be used when you want to replace a specific existing segment."))),(0,l.kt)("h2",{id:"other-changes"},"Other changes"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Richard Startin set LZ4 compression as the default for all metrics fields."),(0,l.kt)("li",{parentName:"ul"},"Mark Needham added the ",(0,l.kt)("inlineCode",{parentName:"li"},"ST_Within")," geospatial function."),(0,l.kt)("li",{parentName:"ul"},"Rong Rong fixed a bug where query stats wouldn't show if there was an error processing the query (e.g. if the query timed out)."),(0,l.kt)("li",{parentName:"ul"},"Prashant Pandey fixed the query engine to handle extra columns added to a ",(0,l.kt)("inlineCode",{parentName:"li"},"SELECT *")," statement."),(0,l.kt)("li",{parentName:"ul"},"Richard Startin added support for forward indexes on JSON columns."),(0,l.kt)("li",{parentName:"ul"},"Rong Rong added the GRPC broker request handler so that data can be streamed back from the server to the broker when processing queries."),(0,l.kt)("li",{parentName:"ul"},"deemoliu made it possible to add a default strategy when using the ",(0,l.kt)("a",{parentName:"li",href:"https://dev.startree.ai/docs/pinot/recipes/upserts-partial"},"partial upsert feature"),"."),(0,l.kt)("li",{parentName:"ul"},"Jeff Moszuti added support for the ",(0,l.kt)("inlineCode",{parentName:"li"},"TIMESTAMP")," data type in the ",(0,l.kt)("a",{parentName:"li",href:"https://docs.pinot.apache.org/operators/configuration-recommendation-engine"},"configuration recommendation engine"),".")),(0,l.kt)("h2",{id:"dependency-updates"},"Dependency updates"),(0,l.kt)("p",null,"The following dependencies were updated:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"async-http-client because the library moved to a different organization."),(0,l.kt)("li",{parentName:"ul"},"RoaringBitmap to 0.9.25"),(0,l.kt)("li",{parentName:"ul"},"JsonPath to 2.7.0"),(0,l.kt)("li",{parentName:"ul"},"Kafka to 2.8.1"),(0,l.kt)("li",{parentName:"ul"},"Prometheus to 0.16.1")),(0,l.kt)("h2",{id:"resources"},"Resources"),(0,l.kt)("p",null,"If you want to try out Apache Pinot, the following resources will help you get started:"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Download page: ",(0,l.kt)("a",{parentName:"li",href:"https://pinot.apache.org/download/"},"https://pinot.apache.org/download/")),(0,l.kt)("li",{parentName:"ul"},"Getting started: ",(0,l.kt)("a",{parentName:"li",href:"https://docs.pinot.apache.org/getting-started"},"https://docs.pinot.apache.org/getting-started")),(0,l.kt)("li",{parentName:"ul"},"Apache Pinot Recipes: ",(0,l.kt)("a",{parentName:"li",href:"https://dev.startree.ai/docs/pinot/recipes/"},"https://dev.startree.ai/docs/pinot/recipes/")),(0,l.kt)("li",{parentName:"ul"},"Join our Slack channel: ",(0,l.kt)("a",{parentName:"li",href:"https://communityinviter.com/apps/apache-pinot/apache-pinot"},"https://communityinviter.com/apps/apache-pinot/apache-pinot")),(0,l.kt)("li",{parentName:"ul"},"See our upcoming events: ",(0,l.kt)("a",{parentName:"li",href:"https://www.meetup.com/apache-pinot"},"https://www.meetup.com/apache-pinot")),(0,l.kt)("li",{parentName:"ul"},"Follow us on Twitter: ",(0,l.kt)("a",{parentName:"li",href:"https://twitter.com/startreedata"},"https://twitter.com/startreedata")),(0,l.kt)("li",{parentName:"ul"},"Subscribe to our YouTube channel: ",(0,l.kt)("a",{parentName:"li",href:"https://www.youtube.com/c/StarTree"},"https://www.youtube.com/c/StarTree"))))}c.isMDXComponent=!0},734:function(e,t,a){t.Z=a.p+"assets/images/backwards-incompatible-99886dcd0be55a8100a7d6c5f3da3bda.png"},2019:function(e,t,a){t.Z=a.p+"assets/images/human-readable-sizes-b8c4009dd53d23da3b8637963827a8de.png"}}]);
\ No newline at end of file
diff --git a/assets/js/3d8d21df.78af694c.js b/assets/js/3d8d21df.78af694c.js
deleted file mode 100644
index e9b41f8..0000000
--- a/assets/js/3d8d21df.78af694c.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 3d8d21df.78af694c.js.LICENSE.txt */
-(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6535],{4137:function(e,t,n){"use strict";n.d(t,{Zo:function(){return l},kt:function(){return v}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function u(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},l=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},f="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,l=u(e,["components","mdxType","originalType","parentName"]),f=s(n),d=i,v=f["".concat(c,".").concat(d)]||f[d]||p[d]||o;return n?r.createElement(v,a(a({ref:t},l),{},{components:n})):r.createElement(v,a({ref:t},l))}));function v(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var u={};for(var c in t)hasOwnProperty.call(t,c)&&(u[c]=t[c]);u.originalType=e,u[f]="string"==typeof e?e:i,a[1]=u;for(var s=2;s<o;s++)a[s]=n[s];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},2511:function(e,t,n){"use strict";n.d(t,{Z:function(){return m}});var r=n(3366),i=n(7294),o=n(3727),a=n(9962),u=n(2735),c=n(6136),s=(0,i.createContext)({collectLink:function(){}}),l=function(){return(0,i.useContext)(s)},f=n(9524),p=n(3905),d=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"],v=function(e){return e.startsWith("/")};var m=function(e){var t,n,s=e.isNavLink,m=e.to,b=e.href,h=e.activeClassName,y=e.isActive,g=e["data-noBrokenLinkCheck"],O=e.autoAddBaseUrl,w=void 0===O||O,j=(0,r.Z)(e,d),P=(0,a.Z)().siteConfig.trailingSlash,k=(0,f.C)().withBaseUrl,E=l(),_=m||b,C=(0,u.Z)(_),N=null==_?void 0:_.replace("pathname://",""),x=void 0!==N?(n=N,w&&v(n)?k(n):n):void 0;x&&C&&(x=(0,p.applyTrailingSlash)(x,P));var Z,A=(0,i.useRef)(!1),T=s?o.OL:o.rU,S=c.Z.canUseIntersectionObserver;(0,i.useEffect)((function(){return!S&&C&&null!=x&&window.docusaurus.prefetch(x),function(){S&&Z&&Z.disconnect()}}),[x,S,C]);var D=null!==(t=null==x?void 0:x.startsWith("#"))&&void 0!==t&&t,M=!x||!C||D;return x&&C&&!D&&!g&&E.collectLink(x),M?i.createElement("a",Object.assign({href:x},_&&!C&&{target:"_blank",rel:"noopener noreferrer"},j)):i.createElement(T,Object.assign({},j,{onMouseEnter:function(){A.current||null==x||(window.docusaurus.preload(x),A.current=!0)},innerRef:function(e){var t,n;S&&e&&C&&(t=e,n=function(){null!=x&&window.docusaurus.prefetch(x)},(Z=new window.IntersectionObserver((function(e){e.forEach((function(e){t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(Z.unobserve(t),Z.disconnect(),n())}))}))).observe(t))},to:x||""},s&&{isActive:y,activeClassName:h}))}},2735:function(e,t,n){"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function i(e){return void 0!==e&&!r(e)}n.d(t,{Z:function(){return i},b:function(){return r}})},9524:function(e,t,n){"use strict";n.d(t,{C:function(){return o},Z:function(){return a}});var r=n(9962),i=n(2735);function o(){var e=(0,r.Z)().siteConfig,t=void 0===e?{}:e,n=t.baseUrl,o=void 0===n?"/":n,a=t.url;return{withBaseUrl:function(e,t){return function(e,t,n,r){var o=void 0===r?{}:r,a=o.forcePrependBaseUrl,u=void 0!==a&&a,c=o.absolute,s=void 0!==c&&c;if(!n)return n;if(n.startsWith("#"))return n;if((0,i.b)(n))return n;if(u)return t+n;var l=n.startsWith(t)?n:t+n.replace(/^\//,"");return s?e+l:l}(a,o,e,t)}}}function a(e,t){return void 0===t&&(t={}),(0,o().withBaseUrl)(e,t)}},4136:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(e.startsWith("#"))return e;if(void 0===t)return e;var n,r=e.split(/[#?]/)[0],i="/"===r?"/":t?(n=r).endsWith("/")?n:n+"/":function(e){return e.endsWith("/")?e.slice(0,-1):e}(r);return e.replace(r,i)}},3905:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.uniq=t.applyTrailingSlash=void 0;var i=n(4136);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(i).default}});var o=n(3509);Object.defineProperty(t,"uniq",{enumerable:!0,get:function(){return r(o).default}})},3509:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return Array.from(new Set(e))}},9342:function(e,t,n){"use strict";var r=n(7294),i=n(2511),o=n(4184),a=n.n(o);t.Z=function(e){var t=e.children,n=e.className,o=e.badge,u=e.icon,c=e.size,s=e.target,l=e.to,f=a()("jump-to","jump-to--"+c,n),p=r.createElement("div",{className:"jump-to--inner"},r.createElement("div",{className:"jump-to--inner-2"},r.createElement("div",{className:"jump-to--main"},o?r.createElement("span",{className:"badge badge--primary badge--right"},o):"",t),r.createElement("div",{className:"jump-to--right"},r.createElement("i",{className:"feather icon-"+(u||"chevron-right")+" arrow"}))));return s?r.createElement("a",{href:l,target:s,className:f},p):r.createElement(i.Z,{to:l,className:f},p)}},7837:function(e,t,n){"use strict";n.r(t),n.d(t,{contentTitle:function(){return s},default:function(){return v},frontMatter:function(){return c},metadata:function(){return l},toc:function(){return f}});var r=n(7462),i=n(3366),o=(n(7294),n(4137)),a=n(9342),u=["components"],c={title:"About",description:"About Pinot",sidebar_label:"hidden",hide_pagination:!0,draft:!0},s=void 0,l={unversionedId:"about",id:"about",isDocsHomePage:!1,title:"About",description:"About Pinot",source:"@site/docs/about.md",sourceDirName:".",slug:"/about",permalink:"/docs/about",editUrl:"https://github.com/apache/pinot/edit/master/website/docs/about.md",version:"current",frontMatter:{title:"About",description:"About Pinot",sidebar_label:"hidden",hide_pagination:!0,draft:!0}},f=[],p={toc:f},d="wrapper";function v(e){var t=e.components,n=(0,i.Z)(e,u);return(0,o.kt)(d,(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Provide basic foundation of Pinot."),(0,o.kt)(a.Z,{to:"/docs/about/what_is_pinot/",mdxType:"Jump"},"What is Pinot?"),(0,o.kt)(a.Z,{to:"/docs/about/features_of_pinot/",mdxType:"Jump"},"Features of Pinot"),(0,o.kt)(a.Z,{to:"/docs/about/guarantees/",mdxType:"Jump"},"Who is using Pinot?"))}v.isMDXComponent=!0},4184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var a=i.apply(null,n);a&&e.push(a)}}else if("object"===o)if(n.toString===Object.prototype.toString)for(var u in n)r.call(n,u)&&n[u]&&e.push(u);else e.push(n.toString())}}return e.join(" ")}e.exports?(i.default=i,e.exports=i):void 0===(n=function(){return i}.apply(t,[]))||(e.exports=n)}()}}]);
\ No newline at end of file
diff --git a/assets/js/3d8d21df.78af694c.js.LICENSE.txt b/assets/js/3d8d21df.78af694c.js.LICENSE.txt
deleted file mode 100644
index 0c20a87..0000000
--- a/assets/js/3d8d21df.78af694c.js.LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
-  Copyright (c) 2018 Jed Watson.
-  Licensed under the MIT License (MIT), see
-  http://jedwatson.github.io/classnames
-*/
diff --git a/assets/js/3e46ac02.fcf93e3d.js b/assets/js/3e46ac02.fcf93e3d.js
deleted file mode 100644
index ead67b7..0000000
--- a/assets/js/3e46ac02.fcf93e3d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6593],{4137:function(e,t,r){r.d(t,{Zo:function(){return s},kt:function(){return f}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function l(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=p(r),g=a,f=u["".concat(c,".").concat(g)]||u[g]||m[g]||o;return r?n.createElement(f,i(i({ref:t},s),{},{components:r})):n.createElement(f,i({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=g;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:a,i[1]=l;for(var p=2;p<o;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}g.displayName="MDXCreateElement"},8365:function(e,t,r){r.r(t),r.d(t,{contentTitle:function(){return c},default:function(){return g},frontMatter:function(){return l},metadata:function(){return p},toc:function(){return s}});var n=r(7462),a=r(3366),o=(r(7294),r(4137)),i=["components"],l={title:"Utilize UDFs to Supercharge Queries in Apache Pinot",author:"PinotDev",author_title:"Pinot Editorial Team",author_url:"https://medium.com/apache-pinot-developer-blog",author_image_url:"https://pinot.apache.org/authors/pinot_team.jpg",description:"Scalar Functions that allow users to write and add their functions as a plugin.",keywords:["Pinot","UDF","User-Facing Analytics","Scalar Functions","Real-time data platform"],tags:["Pinot","SLA","DevBlog","ThirdEye","real-time data platform","Realtime","Analytics","User-Facing Analytics"]},c=void 0,p={permalink:"/blog/2020/08/08/DevBlog-ScalarUDFs",editUrl:"https://github.com/apache/pinot-site/edit/dev/website/blog/2020-08-08-DevBlog-ScalarUDFs.md",source:"@site/blog/2020-08-08-DevBlog-ScalarUDFs.md",title:"Utilize UDFs to Supercharge Queries in Apache Pinot",description:"Scalar Functions that allow users to write and add their functions as a plugin.",date:"2020-08-08T00:00:00.000Z",formattedDate:"August 8, 2020",tags:[{label:"Pinot",permalink:"/blog/tags/pinot"},{label:"SLA",permalink:"/blog/tags/sla"},{label:"DevBlog",permalink:"/blog/tags/dev-blog"},{label:"ThirdEye",permalink:"/blog/tags/third-eye"},{label:"real-time data platform",permalink:"/blog/tags/real-time-data-platform"},{label:"Realtime",permalink:"/blog/tags/realtime"},{label:"Analytics",permalink:"/blog/tags/analytics"},{label:"User-Facing Analytics",permalink:"/blog/tags/user-facing-analytics"}],readingTime:.51,truncated:!1,prevItem:{title:"Achieving 99th percentile latency SLA using Apache Pinot",permalink:"/blog/2020/08/08/DevBlog-SLAApps"},nextItem:{title:"Moving developers up the stack with Apache Pinot",permalink:"/blog/2020/07/28/DevBlog-DevUpStack"}},s=[],u={toc:s},m="wrapper";function g(e){var t=e.components,r=(0,a.Z)(e,i);return(0,o.kt)(m,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Apache Pinot is a realtime distributed OLAP datastore that can answer hundreds of thousands of queries with millisecond latencies. You can head over to ",(0,o.kt)("a",{parentName:"p",href:"https://pinot.apache.org/"},"https://pinot.apache.org/")," to get started with Apache Pinot."),(0,o.kt)("p",null,"While using any database, we can come across a scenario where a function required for the query is not supported out of the box. In such time, we have to resort to raising a pull request for a new function or finding a tedious workaround."),(0,o.kt)("p",null,"Scalar Functions that allow users to write and add their functions as a plugin."),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://medium.com/apache-pinot-developer-blog/utilize-udfs-to-supercharge-queries-in-apache-pinot-e488a0f164f1"},"Read more at https://medium.com/apache-pinot-developer-blog/utilize-udfs-to-supercharge-queries-in-apache-pinot-e488a0f164f1")),(0,o.kt)("p",null,(0,o.kt)("img",{parentName:"p",src:"https://miro.medium.com/max/10368/0*VtswFI-HcaXyyjhK",alt:"Utilize UDFs to Supercharge Queries in Apache Pinot"})))}g.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/4146.1f8a57c5.js b/assets/js/4146.1f8a57c5.js
deleted file mode 100644
index 739ed19..0000000
--- a/assets/js/4146.1f8a57c5.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4146],{2511:function(e,n,t){t.d(n,{Z:function(){return g}});var r=t(3366),o=t(7294),u=t(3727),i=t(9962),a=t(2735),c=t(6136),s=(0,o.createContext)({collectLink:function(){}}),l=function(){return(0,o.useContext)(s)},f=t(9524),d=t(3905),v=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"],p=function(e){return e.startsWith("/")};var g=function(e){var n,t,s=e.isNavLink,g=e.to,h=e.href,y=e.activeClassName,m=e.isActive,b=e["data-noBrokenLinkCheck"],w=e.autoAddBaseUrl,_=void 0===w||w,P=(0,r.Z)(e,v),D=(0,i.Z)().siteConfig.trailingSlash,O=(0,f.C)().withBaseUrl,A=l(),E=g||h,j=(0,a.Z)(E),V=null==E?void 0:E.replace("pathname://",""),x=void 0!==V?(t=V,_&&p(t)?O(t):t):void 0;x&&j&&(x=(0,d.applyTrailingSlash)(x,D));var S,k=(0,o.useRef)(!1),C=s?u.OL:u.rU,L=c.Z.canUseIntersectionObserver;(0,o.useEffect)((function(){return!L&&j&&null!=x&&window.docusaurus.prefetch(x),function(){L&&S&&S.disconnect()}}),[x,L,j]);var I=null!==(n=null==x?void 0:x.startsWith("#"))&&void 0!==n&&n,R=!x||!j||I;return x&&j&&!I&&!b&&A.collectLink(x),R?o.createElement("a",Object.assign({href:x},E&&!j&&{target:"_blank",rel:"noopener noreferrer"},P)):o.createElement(C,Object.assign({},P,{onMouseEnter:function(){k.current||null==x||(window.docusaurus.preload(x),k.current=!0)},innerRef:function(e){var n,t;L&&e&&j&&(n=e,t=function(){null!=x&&window.docusaurus.prefetch(x)},(S=new window.IntersectionObserver((function(e){e.forEach((function(e){n===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(S.unobserve(n),S.disconnect(),t())}))}))).observe(n))},to:x||""},s&&{isActive:m,activeClassName:y}))}},7130:function(e,n,t){t.d(n,{Z:function(){return f},I:function(){return l}});var r=t(7294),o=/{\w+}/g,u="{}";function i(e,n){var t=[],i=e.replace(o,(function(e){var o=e.substr(1,e.length-2),i=null==n?void 0:n[o];if(void 0!==i){var a=r.isValidElement(i)?i:String(i);return t.push(a),u}return e}));return 0===t.length?e:t.every((function(e){return"string"==typeof e}))?i.split(u).reduce((function(e,n,r){var o;return e.concat(n).concat(null!==(o=t[r])&&void 0!==o?o:"")}),""):i.split(u).reduce((function(e,n,o){return[].concat(e,[r.createElement(r.Fragment,{key:o},n,t[o])])}),[])}function a(e){return i(e.children,e.values)}var c=t(7529);function s(e){var n,t=e.id,r=e.message;return null!==(n=c[null!=t?t:r])&&void 0!==n?n:r}function l(e,n){var t,r=e.message;return i(null!==(t=s({message:r,id:e.id}))&&void 0!==t?t:r,n)}function f(e){var n,t=e.children,o=e.id,u=e.values,i=null!==(n=s({message:t,id:o}))&&void 0!==n?n:t;return r.createElement(a,{values:u},i)}},2735:function(e,n,t){function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}t.d(n,{Z:function(){return o},b:function(){return r}})},5094:function(e,n,t){t.r(n),t.d(n,{BrowserRouter:function(){return r.VK},HashRouter:function(){return r.UT},Link:function(){return r.rU},MemoryRouter:function(){return r.VA},NavLink:function(){return r.OL},Prompt:function(){return r.NL},Redirect:function(){return r.l_},Route:function(){return r.AW},Router:function(){return r.F0},StaticRouter:function(){return r.gx},Switch:function(){return r.rs},generatePath:function(){return r.Gn},matchPath:function(){return r.LX},useHistory:function(){return r.k6},useLocation:function(){return r.TH},useParams:function(){return r.UO},useRouteMatch:function(){return r.$B},withRouter:function(){return r.EN}});var r=t(3727)},9524:function(e,n,t){t.d(n,{C:function(){return u},Z:function(){return i}});var r=t(9962),o=t(2735);function u(){var e=(0,r.Z)().siteConfig,n=void 0===e?{}:e,t=n.baseUrl,u=void 0===t?"/":t,i=n.url;return{withBaseUrl:function(e,n){return function(e,n,t,r){var u=void 0===r?{}:r,i=u.forcePrependBaseUrl,a=void 0!==i&&i,c=u.absolute,s=void 0!==c&&c;if(!t)return t;if(t.startsWith("#"))return t;if((0,o.b)(t))return t;if(a)return n+t;var l=t.startsWith(n)?t:n+t.replace(/^\//,"");return s?e+l:l}(i,u,e,n)}}}function i(e,n){return void 0===n&&(n={}),(0,u().withBaseUrl)(e,n)}},1610:function(e,n,t){t.r(n),t.d(n,{default:function(){return u},useAllPluginInstancesData:function(){return i},usePluginData:function(){return a}});var r=t(9962),o="default";function u(){var e=(0,r.Z)().globalData;if(!e)throw new Error("Docusaurus global data not found.");return e}function i(e){var n=u()[e];if(!n)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}function a(e,n){void 0===n&&(n=o);var t=i(e)[n];if(!t)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+n+'".');return t}},3167:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),n.getDocVersionSuggestions=n.getActiveDocContext=n.getActiveVersion=n.getLatestVersion=n.getActivePlugin=void 0;var r=t(5094);n.getActivePlugin=function(e,n,t){void 0===t&&(t={});var o=Object.entries(e).find((function(e){e[0];var t=e[1];return!!r.matchPath(n,{path:t.path,exact:!1,strict:!1})})),u=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!u&&t.failfast)throw new Error("Can't find active docs plugin for \""+n+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return u};n.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))};n.getActiveVersion=function(e,t){var o=n.getLatestVersion(e);return[].concat(e.versions.filter((function(e){return e!==o})),[o]).find((function(e){return!!r.matchPath(t,{path:e.path,exact:!1,strict:!1})}))};n.getActiveDocContext=function(e,t){var o,u,i=n.getActiveVersion(e,t),a=null==i?void 0:i.docs.find((function(e){return!!r.matchPath(t,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:i,activeDoc:a,alternateDocVersions:a?(o=a.id,u={},e.versions.forEach((function(e){e.docs.forEach((function(n){n.id===o&&(u[e.name]=n)}))})),u):{}}};n.getDocVersionSuggestions=function(e,t){var r=n.getLatestVersion(e),o=n.getActiveDocContext(e,t),u=o.activeVersion!==r;return{latestDocSuggestion:u?null==o?void 0:o.alternateDocVersions[r.name]:void 0,latestVersionSuggestion:u?r:void 0}}},3256:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),n.useDocVersionSuggestions=n.useActiveDocContext=n.useActiveVersion=n.useLatestVersion=n.useVersions=n.useActivePluginAndVersion=n.useActivePlugin=n.useDocsData=n.useAllDocsData=void 0;var r=t(655),o=t(5094),u=r.__importStar(t(1610)),i=t(3167);n.useAllDocsData=function(){var e;return null!==(e=u.default()["docusaurus-plugin-content-docs"])&&void 0!==e?e:{}};n.useDocsData=function(e){return u.usePluginData("docusaurus-plugin-content-docs",e)};n.useActivePlugin=function(e){void 0===e&&(e={});var t=n.useAllDocsData(),r=o.useLocation().pathname;return i.getActivePlugin(t,r,e)};n.useActivePluginAndVersion=function(e){void 0===e&&(e={});var t=n.useActivePlugin(e),r=o.useLocation().pathname;if(t)return{activePlugin:t,activeVersion:i.getActiveVersion(t.pluginData,r)}};n.useVersions=function(e){return n.useDocsData(e).versions};n.useLatestVersion=function(e){var t=n.useDocsData(e);return i.getLatestVersion(t)};n.useActiveVersion=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getActiveVersion(t,r)};n.useActiveDocContext=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getActiveDocContext(t,r)};n.useDocVersionSuggestions=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getDocVersionSuggestions(t,r)}},4175:function(e,n,t){t.d(n,{Z:function(){return a}});var r=t(7294),o=t(9584),u=t(4395),i=t(9524);function a(e){var n=e.title,t=e.description,a=e.keywords,c=e.image,s=(0,u.LU)().image,l=(0,u.pe)(n),f=(0,i.Z)(c||s,{absolute:!0});return r.createElement(o.Z,null,n&&r.createElement("title",null,l),n&&r.createElement("meta",{property:"og:title",content:l}),t&&r.createElement("meta",{name:"description",content:t}),t&&r.createElement("meta",{property:"og:description",content:t}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}))}},7849:function(e,n,t){t.d(n,{Iw:function(){return r.useActiveDocContext},Jo:function(){return r.useDocVersionSuggestions},WS:function(){return r.useActivePluginAndVersion},_r:function(){return r.useAllDocsData},gA:function(){return r.useActivePlugin},gB:function(){return r.useVersions},yW:function(){return r.useLatestVersion},zh:function(){return r.useDocsData},zu:function(){return r.useActiveVersion}});var r=t(3256)},4395:function(e,n,t){t.d(n,{HX:function(){return g},L5:function(){return L},kM:function(){return N},WA:function(){return s},os:function(){return h},Mg:function(){return b},_f:function(){return l},bc:function(){return p},l5:function(){return d},ru:function(){return j},J:function(){return M},Oh:function(){return Z},c2:function(){return E},LU:function(){return o},pe:function(){return w}});var r=t(9962);function o(){return(0,r.Z)().siteConfig.themeConfig}var u="localStorage";function i(e){if(void 0===e&&(e=u),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(t){return n=t,a||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",n),a=!0),null}var n}var a=!1;var c={get:function(){return null},set:function(){},del:function(){}};var s=function(e,n){if("undefined"==typeof window)return function(e){function n(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:n,set:n,del:n}}(e);var t=i(null==n?void 0:n.persistence);return null===t?c:{get:function(){return t.getItem(e)},set:function(n){return t.setItem(e,n)},del:function(){return t.removeItem(e)}}};function l(e){void 0===e&&(e=u);var n=i(e);if(!n)return[];for(var t=[],r=0;r<n.length;r+=1){var o=n.key(r);null!==o&&t.push(o)}return t}var f=t(6550);function d(){var e=(0,r.Z)(),n=e.siteConfig,t=n.baseUrl,o=n.url,u=e.i18n,i=u.defaultLocale,a=u.currentLocale,c=(0,f.TH)().pathname,s=a===i?t:t.replace("/"+a+"/","/"),l=c.replace(t,"");return{createUrl:function(e){var n=e.locale;return""+(e.fullyQualified?o:"")+function(e){return e===i?""+s:""+s+e+"/"}(n)+l}}}var v=/title=(["'])(.*?)\1/;function p(e){var n,t;return null!==(t=null===(n=null==e?void 0:e.match(v))||void 0===n?void 0:n[2])&&void 0!==t?t:""}var g="default";function h(e,n){return"docs-"+e+"-"+n}var y=t(7849),m=!!y._r,b=function(e,n){var t=function(e){return!e||(null==e?void 0:e.endsWith("/"))?e:e+"/"};return t(e)===t(n)},w=function(e){var n=(0,r.Z)().siteConfig,t=void 0===n?{}:n,o=t.title,u=t.titleDelimiter,i=void 0===u?"|":u;return e&&e.trim().length?e.trim()+" "+i+" "+o:o},_=t(7294),P=["zero","one","two","few","many","other"];function D(e){return P.filter((function(n){return e.includes(n)}))}var O={locale:"en",pluralForms:D(["one","other"]),select:function(e){return 1===e?"one":"other"}};function A(){var e=(0,r.Z)().i18n.currentLocale;return(0,_.useMemo)((function(){if(!Intl.PluralRules)return console.error("Intl.PluralRules not available!\nDocusaurus will fallback to a default/fallback (English) Intl.PluralRules implementation.\n        "),O;try{return n=e,t=new Intl.PluralRules(n),{locale:n,pluralForms:D(t.resolvedOptions().pluralCategories),select:function(e){return t.select(e)}}}catch(r){return console.error('Failed to use Intl.PluralRules for locale "'+e+'".\nDocusaurus will fallback to a default/fallback (English) Intl.PluralRules implementation.\n'),O}var n,t}),[e])}function E(){var e=A();return{selectMessage:function(n,t){return function(e,n,t){var r=e.split("|");if(1===r.length)return r[0];r.length>t.pluralForms.length&&console.error("For locale="+t.locale+", a maximum of "+t.pluralForms.length+" plural forms are expected ("+t.pluralForms+"), but the message contains "+r.length+" plural forms: "+e+" ");var o=t.select(n),u=t.pluralForms.indexOf(o);return r[Math.min(u,r.length-1)]}(t,n,e)}}}function j(e){var n=(0,f.TH)().pathname,t=(0,_.useRef)(n);(0,_.useEffect)((function(){n!==t.current&&(t.current=n,e())}),[n,t,e])}var V=function(e){return"docs-preferred-version-"+e},x={save:function(e,n,t){s(V(e),{persistence:n}).set(t)},read:function(e,n){return s(V(e),{persistence:n}).get()},clear:function(e,n){s(V(e),{persistence:n}).del()}};function S(e){var n=e.pluginIds,t=e.versionPersistence,r=e.allDocsData;var o={};return n.forEach((function(e){o[e]=function(e){var n=x.read(e,t);return r[e].versions.some((function(e){return e.name===n}))?{preferredVersionName:n}:(x.clear(e,t),{preferredVersionName:null})}(e)})),o}function k(){var e=(0,y._r)(),n=o().docs.versionPersistence,t=(0,_.useMemo)((function(){return Object.keys(e)}),[e]),r=(0,_.useState)((function(){return function(e){var n={};return e.forEach((function(e){n[e]={preferredVersionName:null}})),n}(t)})),u=r[0],i=r[1];return(0,_.useEffect)((function(){i(S({allDocsData:e,versionPersistence:n,pluginIds:t}))}),[e,n,t]),[u,(0,_.useMemo)((function(){return{savePreferredVersion:function(e,t){x.save(e,n,t),i((function(n){var r;return Object.assign({},n,((r={})[e]={preferredVersionName:t},r))}))}}}),[i])]}var C=(0,_.createContext)(null);function L(e){var n=e.children;return m?_.createElement(I,null,n):_.createElement(_.Fragment,null,n)}function I(e){var n=e.children,t=k();return _.createElement(C.Provider,{value:t},n)}function R(){var e=(0,_.useContext)(C);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}var T="default";function M(e){void 0===e&&(e=T);var n=(0,y.zh)(e),t=R(),r=t[0],o=t[1],u=r[e].preferredVersionName;return{preferredVersion:u?n.versions.find((function(e){return e.name===u})):null,savePreferredVersionName:(0,_.useCallback)((function(n){o.savePreferredVersion(e,n)}),[o])}}function Z(){var e=(0,y._r)(),n=R()[0];var t=Object.keys(e),r={};return t.forEach((function(t){r[t]=function(t){var r=e[t],o=n[t].preferredVersionName;return o?r.versions.find((function(e){return e.name===o})):null}(t)})),r}var N={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagsPostPage:"blog-tags-post-page",docPage:"doc-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docPages:"docs-wrapper",mdxPages:"mdx-wrapper"}}},4136:function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(e.startsWith("#"))return e;if(void 0===n)return e;var t,r=e.split(/[#?]/)[0],o="/"===r?"/":n?(t=r).endsWith("/")?t:t+"/":function(e){return e.endsWith("/")?e.slice(0,-1):e}(r);return e.replace(r,o)}},3905:function(e,n,t){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0}),n.uniq=n.applyTrailingSlash=void 0;var o=t(4136);Object.defineProperty(n,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var u=t(3509);Object.defineProperty(n,"uniq",{enumerable:!0,get:function(){return r(u).default}})},3509:function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return Array.from(new Set(e))}},6010:function(e,n,t){function r(e){var n,t,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n<e.length;n++)e[n]&&(t=r(e[n]))&&(o&&(o+=" "),o+=t);else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}n.Z=function(){for(var e,n,t=0,o="";t<arguments.length;)(e=arguments[t++])&&(n=r(e))&&(o&&(o+=" "),o+=n);return o}},655:function(e,n,t){t.r(n),t.d(n,{__assign:function(){return u},__asyncDelegator:function(){return A},__asyncGenerator:function(){return O},__asyncValues:function(){return E},__await:function(){return D},__awaiter:function(){return p},__classPrivateFieldGet:function(){return k},__classPrivateFieldIn:function(){return L},__classPrivateFieldSet:function(){return C},__createBinding:function(){return h},__decorate:function(){return a},__esDecorate:function(){return s},__exportStar:function(){return y},__extends:function(){return o},__generator:function(){return g},__importDefault:function(){return S},__importStar:function(){return x},__makeTemplateObject:function(){return j},__metadata:function(){return v},__param:function(){return c},__propKey:function(){return f},__read:function(){return b},__rest:function(){return i},__runInitializers:function(){return l},__setFunctionName:function(){return d},__spread:function(){return w},__spreadArray:function(){return P},__spreadArrays:function(){return _},__values:function(){return m}});var r=function(e,n){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])},r(e,n)};function o(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function t(){this.constructor=e}r(e,n),e.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}var u=function(){return u=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},u.apply(this,arguments)};function i(e,n){var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0&&(t[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)n.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(t[r[o]]=e[r[o]])}return t}function a(e,n,t,r){var o,u=arguments.length,i=u<3?n:null===r?r=Object.getOwnPropertyDescriptor(n,t):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,n,t,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(i=(u<3?o(i):u>3?o(n,t,i):o(n,t))||i);return u>3&&i&&Object.defineProperty(n,t,i),i}function c(e,n){return function(t,r){n(t,r,e)}}function s(e,n,t,r,o,u){function i(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var a,c=r.kind,s="getter"===c?"get":"setter"===c?"set":"value",l=!n&&e?r.static?e:e.prototype:null,f=n||(l?Object.getOwnPropertyDescriptor(l,r.name):{}),d=!1,v=t.length-1;v>=0;v--){var p={};for(var g in r)p[g]="access"===g?{}:r[g];for(var g in r.access)p.access[g]=r.access[g];p.addInitializer=function(e){if(d)throw new TypeError("Cannot add initializers after decoration has completed");u.push(i(e||null))};var h=(0,t[v])("accessor"===c?{get:f.get,set:f.set}:f[s],p);if("accessor"===c){if(void 0===h)continue;if(null===h||"object"!=typeof h)throw new TypeError("Object expected");(a=i(h.get))&&(f.get=a),(a=i(h.set))&&(f.set=a),(a=i(h.init))&&o.push(a)}else(a=i(h))&&("field"===c?o.push(a):f[s]=a)}l&&Object.defineProperty(l,r.name,f),d=!0}function l(e,n,t){for(var r=arguments.length>2,o=0;o<n.length;o++)t=r?n[o].call(e,t):n[o].call(e);return r?t:void 0}function f(e){return"symbol"==typeof e?e:"".concat(e)}function d(e,n,t){return"symbol"==typeof n&&(n=n.description?"[".concat(n.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:t?"".concat(t," ",n):n})}function v(e,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,n)}function p(e,n,t,r){return new(t||(t=Promise))((function(o,u){function i(e){try{c(r.next(e))}catch(n){u(n)}}function a(e){try{c(r.throw(e))}catch(n){u(n)}}function c(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,a)}c((r=r.apply(e,n||[])).next())}))}function g(e,n){var t,r,o,u,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return u={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function a(a){return function(c){return function(a){if(t)throw new TypeError("Generator is already executing.");for(;u&&(u=0,a[0]&&(i=0)),i;)try{if(t=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1],o=a;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(a);break}o[2]&&i.ops.pop(),i.trys.pop();continue}a=n.call(e,i)}catch(c){a=[6,c],r=0}finally{t=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}var h=Object.create?function(e,n,t,r){void 0===r&&(r=t);var o=Object.getOwnPropertyDescriptor(n,t);o&&!("get"in o?!n.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return n[t]}}),Object.defineProperty(e,r,o)}:function(e,n,t,r){void 0===r&&(r=t),e[r]=n[t]};function y(e,n){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(n,t)||h(n,e,t)}function m(e){var n="function"==typeof Symbol&&Symbol.iterator,t=n&&e[n],r=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function b(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,o,u=t.call(e),i=[];try{for(;(void 0===n||n-- >0)&&!(r=u.next()).done;)i.push(r.value)}catch(a){o={error:a}}finally{try{r&&!r.done&&(t=u.return)&&t.call(u)}finally{if(o)throw o.error}}return i}function w(){for(var e=[],n=0;n<arguments.length;n++)e=e.concat(b(arguments[n]));return e}function _(){for(var e=0,n=0,t=arguments.length;n<t;n++)e+=arguments[n].length;var r=Array(e),o=0;for(n=0;n<t;n++)for(var u=arguments[n],i=0,a=u.length;i<a;i++,o++)r[o]=u[i];return r}function P(e,n,t){if(t||2===arguments.length)for(var r,o=0,u=n.length;o<u;o++)!r&&o in n||(r||(r=Array.prototype.slice.call(n,0,o)),r[o]=n[o]);return e.concat(r||Array.prototype.slice.call(n))}function D(e){return this instanceof D?(this.v=e,this):new D(e)}function O(e,n,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,o=t.apply(e,n||[]),u=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){o[e]&&(r[e]=function(n){return new Promise((function(t,r){u.push([e,n,t,r])>1||a(e,n)}))})}function a(e,n){try{(t=o[e](n)).value instanceof D?Promise.resolve(t.value.v).then(c,s):l(u[0][2],t)}catch(r){l(u[0][3],r)}var t}function c(e){a("next",e)}function s(e){a("throw",e)}function l(e,n){e(n),u.shift(),u.length&&a(u[0][0],u[0][1])}}function A(e){var n,t;return n={},r("next"),r("throw",(function(e){throw e})),r("return"),n[Symbol.iterator]=function(){return this},n;function r(r,o){n[r]=e[r]?function(n){return(t=!t)?{value:D(e[r](n)),done:!1}:o?o(n):n}:o}}function E(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,t=e[Symbol.asyncIterator];return t?t.call(e):(e=m(e),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise((function(r,o){(function(e,n,t,r){Promise.resolve(r).then((function(n){e({value:n,done:t})}),n)})(r,o,(n=e[t](n)).done,n.value)}))}}}function j(e,n){return Object.defineProperty?Object.defineProperty(e,"raw",{value:n}):e.raw=n,e}var V=Object.create?function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}:function(e,n){e.default=n};function x(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&h(n,e,t);return V(n,e),n}function S(e){return e&&e.__esModule?e:{default:e}}function k(e,n,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof n?e!==n||!r:!n.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(e):r?r.value:n.get(e)}function C(e,n,t,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof n?e!==n||!o:!n.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,t):o?o.value=t:n.set(e,t),t}function L(e,n){if(null===n||"object"!=typeof n&&"function"!=typeof n)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?n===e:e.has(n)}}}]);
\ No newline at end of file
diff --git a/assets/js/446dc453.ce7fc23e.js b/assets/js/446dc453.ce7fc23e.js
deleted file mode 100644
index 34e7c3f..0000000
--- a/assets/js/446dc453.ce7fc23e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8240],{2655:function(a){a.exports=JSON.parse('{"allTagsPath":"/blog/tags","slug":"querying-data","name":"querying data","count":1,"permalink":"/blog/tags/querying-data"}')}}]);
\ No newline at end of file
diff --git a/assets/js/44e9dcf7.c8f8b662.js b/assets/js/44e9dcf7.c8f8b662.js
deleted file mode 100644
index 5038b47..0000000
--- a/assets/js/44e9dcf7.c8f8b662.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1665],{4137:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var i=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,i,r=function(e,t){if(null==e)return{};var n,i,r={},a=Object.keys(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)n=a[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=i.createContext({}),s=function(e){var t=i.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return i.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},g=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),g=r,m=u["".concat(c,".").concat(g)]||u[g]||d[g]||a;return n?i.createElement(m,o(o({ref:t},p),{},{components:n})):i.createElement(m,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,o=new Array(a);o[0]=g;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l[u]="string"==typeof e?e:r,o[1]=l;for(var s=2;s<a;s++)o[s]=n[s];return i.createElement.apply(null,o)}return i.createElement.apply(null,n)}g.displayName="MDXCreateElement"},9063:function(e,t,n){n.r(t),n.d(t,{contentTitle:function(){return c},default:function(){return g},frontMatter:function(){return l},metadata:function(){return s},toc:function(){return p}});var i=n(7462),r=n(3366),a=(n(7294),n(4137)),o=["components"],l={title:"Building LinkedIn Talent Insights to democratize data-driven decision making",author:"LinkedIn",author_title:"LinkedIn Engineering Team",author_url:"https://engineering.linkedin.com/blog/topic/pinot",author_image_url:"https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Linkedin_icon.svg/512px-Linkedin_icon.svg.png",description:"Focus on using large set intersection cardinality approximations with Apache Pinot and Theta Sketches, which allow us to efficiently figure out the unique size of a targeted audience when factoring in multiple criteria of an advertising campaign.",keywords:["Pinot","LinkedIn","User Apps","User-Facing Analytics","Real-time data platform"],tags:["Pinot","LinkedIn","real-time data platform","