gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-ops-www] branch master updated (215a0f6 -> e900a81)


From: gnunet
Subject: [taler-taler-ops-www] branch master updated (215a0f6 -> e900a81)
Date: Sat, 24 Feb 2024 23:36:49 +0100

This is an automated email from the git hooks/post-receive script.

nora pushed a change to branch master
in repository taler-ops-www.

    from 215a0f6  update messages
     new d759c24  feat: a bunch of optimization shit
     new ce03c28  remove unused gitignore lines
     new c896160  remove unused bootstrap js import
     new 1dbf01a  properly resolve favicon
     new 8e3d097  fix: nuke the nonexistent image's import for now
     new 650818c  remove nonexistent imports, add favicon.png
     new b7ae4d0  add links in the image dir as to make stuff resolve
     new 5516c53  comment out currently nonexistent locale
     new 447ec9c  create blank merchants file to not 404
     new d288e92  get rid of carousell stuff
     new 118e639  parcel changes
     new e900a81  Merge branch 'master' of git.taler.net:taler-ops-www

The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitignore                        |    6 +-
 .parcelrc                         |    7 +
 Makefile                          |   34 +-
 build-system/parcel-resolver.cjs  |   19 +
 common/base.j2                    |    6 +-
 common/header.j2.inc              |   19 +-
 locale/de/LC_MESSAGES/messages.po |    2 +-
 locale/en/LC_MESSAGES/messages.po |  459 ++++++
 locale/fr/LC_MESSAGES/messages.po |    2 +-
 locale/messages.pot               |    2 +-
 package.json                      |   18 +-
 pnpm-lock.yaml                    | 2694 +++++++++++++++++++++++++++---
 static/favicon.png                |  Bin 0 -> 19222 bytes
 static/images/favicon.ico         |    1 +
 static/images/favicon.png         |    1 +
 static/js/bootstrap.js            |    6 -
 static/js/carouselscript.js       |   53 -
 static/js/owl.carousel.js         | 3275 -------------------------------------
 static/js/owl.script.js           |   82 -
 static/scss/owl.carousel.scss     |  190 ---
 20 files changed, 3003 insertions(+), 3873 deletions(-)
 create mode 100644 .parcelrc
 create mode 100644 build-system/parcel-resolver.cjs
 create mode 100644 static/favicon.png
 create mode 120000 static/images/favicon.ico
 create mode 120000 static/images/favicon.png
 delete mode 100644 static/js/bootstrap.js
 delete mode 100644 static/js/carouselscript.js
 delete mode 100644 static/js/owl.carousel.js
 delete mode 100644 static/js/owl.script.js
 delete mode 100644 static/scss/owl.carousel.scss

diff --git a/.gitignore b/.gitignore
index 5e440ec..0a4e6d0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,9 +16,9 @@ rendered/
 # Keep the PNPM lockfile, not the npm one - we only need one lockfile!
 package-lock.json
 
-# Ignore outputted .css files; we generate them from sass files in the scss 
directory
-/static/css
-
 # Ignore node modules, duh
 node_modules
 
+# Parcel's cache
+.parcel-cache
+dist
diff --git a/.parcelrc b/.parcelrc
new file mode 100644
index 0000000..a2e4064
--- /dev/null
+++ b/.parcelrc
@@ -0,0 +1,7 @@
+{
+  "extends": "@parcel/config-default",
+  "resolvers": [
+    "./build-system/parcel-resolver.cjs",
+    "..."
+  ]
+}
diff --git a/Makefile b/Makefile
index c656a78..4975e91 100644
--- a/Makefile
+++ b/Makefile
@@ -4,12 +4,32 @@ include build-system/config.mk
 
 # All: build HTML pages in all languages.
 .PHONY: all
-all: preprocess
+all: build-site build-css optimize-css parcel
+
+# build-unoptimized: Builds without optimizing CSS as to allow for faster 
testing
+build-unoptimized: build-site build-css parcel-no-optimize
+
+build-site:
        ./inc/update-messages
        env "BASEURL=$(opt_baseurl)" ./inc/build-site
 
-preprocess:
-       env "NODE_ENV=production" ./build-system/pkgmgr build:css;
+build-css:
+       ./build-system/pkgmgr run build-css;
+optimize-css:
+       ./build-system/pkgmgr run optimize-css;
+
+parcel: prepare-parcel build-parcel postbuild-parcel
+parcel-no-optimize: prepare-parcel build-parcel-no-optimize postbuild-parcel
+
+prepare-parcel:
+       ./build-system/pkgmgr run prepare-parcel;
+build-parcel:
+       ./build-system/pkgmgr run build-parcel;
+build-parcel-no-optimize:
+       ./build-system/pkgmgr run build-parcel-no-optimize;
+postbuild-parcel:
+       ./build-system/pkgmgr run handle-parcel-output;
+       ./build-system/pkgmgr run cleanup-parcel;
 
 .PHONY: run
 run: all
@@ -23,7 +43,13 @@ $(error variant is not set)
 endif
 
 .PHONY: install
-install: all
+install: all install-files
+
+# install-dev: Same functionality as install, but using build-unoptimized for 
faster build times
+install-dev: build-unoptimized install-files
+
+# install-files: The internal install task
+install-files:
        $(mkdir) -p $(prefix)/$(variant)
        $(cp) -r rendered/* $(prefix)/$(variant)/
        $(cp) -r rendered/.well-known/ $(prefix)/$(variant)/
diff --git a/build-system/parcel-resolver.cjs b/build-system/parcel-resolver.cjs
new file mode 100644
index 0000000..e260fa3
--- /dev/null
+++ b/build-system/parcel-resolver.cjs
@@ -0,0 +1,19 @@
+const { Resolver } = require('@parcel/plugin');
+const path = require('path');
+const fs = require('fs');
+
+module.exports = new Resolver({
+  async resolve({ specifier }) {
+    if (specifier.startsWith('/')) {
+      const filePath = path.resolve('rendered', specifier.substring(1));
+      if (fs.existsSync(filePath))
+        return {
+          filePath,
+        };
+    }
+
+    // Let the next resolver in the pipeline handle
+    // this dependency.
+    return null;
+  },
+});
diff --git a/common/base.j2 b/common/base.j2
index 8121999..1d307e0 100644
--- a/common/base.j2
+++ b/common/base.j2
@@ -3,12 +3,12 @@
   <head>
     <meta charset="UTF-8"/>
     <link rel="shortcut icon" href="/favicon.ico">
-    <link rel="icon" type="image/svg+xml" href="{{ 
url_static('images/favicon.svg') }}" sizes="any">
+    <!--<link rel="icon" type="image/svg+xml" href="{{ 
url_static('images/favicon.svg') }}" sizes="any"
     <link rel="icon" type="image/png" href="{{ 
url_static('images/android-chrome-192x192.png') }}" sizes="192x192">
-    <link rel="icon" type="image/png" href="{{ 
url_static('images/android-chrome-512x512.png') }}" sizes="512x512">
+    <link rel="icon" type="image/png" href="{{ 
url_static('images/android-chrome-512x512.png') }}" sizes="512x512">>
     <link rel="apple-touch-icon" sizes="180x180" href="{{ 
url_static('images/apple-touch-icon.png') }}">
     <meta name="msapplication-TileColor" content="#ffffff">
-    <meta name="msapplication-TileImage" content="{{ 
url_static('images/mstile-150x150.png') }}">
+    <meta name="msapplication-TileImage" content="{{ 
url_static('images/mstile-150x150.png') }}">-->
     <meta property="og:title" content="Taler Operations AG, Biel, Switzerland" 
/>
     <meta property="og:type" content="website" />
     <meta property="og:url" content="{{ url_localized('index.html') }}" />
diff --git a/common/header.j2.inc b/common/header.j2.inc
index 698fcd5..52cacc9 100644
--- a/common/header.j2.inc
+++ b/common/header.j2.inc
@@ -24,11 +24,12 @@
     for the JavaScript code in this page.
   */
 </script>
-<link rel="icon" type="image/ico" href="/favicon.ico?v=2" />
+
+<link rel="icon" type="image/ico" href="{{ url_static('favicon.ico?v=2') }}" />
 <link rel="alternate" hreflang="en" href="{{ self_localized('en') }}" />
 <link rel="alternate" hreflang="fr" href="{{ self_localized('fr') }}" />
 <link rel="alternate" hreflang="de" href="{{ self_localized('de') }}" />
-<link rel="alternate" hreflang="it" href="{{ self_localized('it') }}" />
+{# <link rel="alternate" hreflang="it" href="{{ self_localized('it') }}" /> #}
 
 <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
 <meta charset="utf-8" />
@@ -41,13 +42,7 @@
 <meta name="author" content="" />
 
 <script src="{{ url_static('js/jquerymin.js') }}"></script>
-<script src="{{ url_static('js/bootstrap.js') }}"></script>
-<script src="{{ url_static('js/carouselscript.js') }}"></script>
-<script src="{{ url_static('js/owl.carousel.js') }}"></script>
-<script src="{{ url_static('js/owl.script.js') }}"></script>
-
-<link href="{{ url_static('css/min/bootstrap5.css') }}" rel="stylesheet" />
-<link href="{{ url_static('css/min/doc.css') }}" rel="stylesheet" />
-<link href="{{ url_static('css/min/fonts.css') }}" rel="stylesheet" />
-<link href="{{ url_static('css/min/owl.carousel.css') }}" rel="stylesheet" />
-<script src="{{ url_static('js/toggle.js') }}" defer></script>
+
+<link href="{{ url_static('css/bootstrap5.css') }}" rel="stylesheet" />
+<link href="{{ url_static('css/doc.css') }}" rel="stylesheet" />
+<link href="{{ url_static('css/fonts.css') }}" rel="stylesheet" />
diff --git a/locale/de/LC_MESSAGES/messages.po 
b/locale/de/LC_MESSAGES/messages.po
index f545ad5..82ae398 100644
--- a/locale/de/LC_MESSAGES/messages.po
+++ b/locale/de/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2024-02-24 23:34+0100\n"
+"POT-Creation-Date: 2024-02-24 22:02+0100\n"
 "PO-Revision-Date: 2024-02-24 20:06+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language-Team: German <https://weblate.taler.net/projects/taler-ops/website/";
diff --git a/locale/en/LC_MESSAGES/messages.po 
b/locale/en/LC_MESSAGES/messages.po
index e69de29..8073a6e 100644
--- a/locale/en/LC_MESSAGES/messages.po
+++ b/locale/en/LC_MESSAGES/messages.po
@@ -0,0 +1,459 @@
+# Translations template for PROJECT.
+# Copyright (C) 2020 ORGANIZATION
+# This file is distributed under the same license as the PROJECT project.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2024-02-24 22:02+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: en\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 2.6.0\n"
+
+#: common/base.j2:18
+msgid "Taler Operations AG, Biel, Switzerland"
+msgstr ""
+
+#: common/footer.j2.inc:15
+msgid "Switzerland"
+msgstr ""
+
+#: common/footer.j2.inc:23
+msgid "Quick Links"
+msgstr ""
+
+#: common/footer.j2.inc:28
+msgid "Taler Operations AG Homepage"
+msgstr ""
+
+#: common/footer.j2.inc:29 common/navigation.j2.inc:34
+msgid "Home"
+msgstr ""
+
+#: common/footer.j2.inc:38 common/navigation.j2.inc:49 template/fees.html.j2:3
+#: template/fees.html.j2:9 template/fees.html.j2:19
+msgid "Fees"
+msgstr ""
+
+#: common/footer.j2.inc:43
+msgid "Terms of Service"
+msgstr ""
+
+#: common/footer.j2.inc:51
+msgid "Partners"
+msgstr ""
+
+#: common/footer.j2.inc:58
+msgid "Taler Consortium"
+msgstr ""
+
+#: common/footer.j2.inc:66
+msgid "Bern&nbsp;University of Applied&nbsp;Sciences"
+msgstr ""
+
+#: common/footer.j2.inc:75
+msgid "NetzBon"
+msgstr ""
+
+#: common/footer.j2.inc:83
+msgid "Contacts"
+msgstr ""
+
+#: common/footer.j2.inc:87
+msgid "Tel:"
+msgstr ""
+
+#: common/footer.j2.inc:92
+msgid "Compliance Officer"
+msgstr ""
+
+#: common/footer.j2.inc:97
+msgid "AML Officer"
+msgstr ""
+
+#: common/footer.j2.inc:110
+msgid "Copyright"
+msgstr ""
+
+#: common/footer.j2.inc:116
+msgid "License"
+msgstr ""
+
+#: common/footer.j2.inc:120
+msgid ""
+"We do not assume any liability for the correctness of contents. We do not "
+"collect any data and do not use cookies. <br />Our web server generates a "
+"log file with IP addresses of visitors. However, these are evaluated "
+"exclusively for troubleshooting or problem mitigation."
+msgstr ""
+
+#: common/navigation.j2.inc:4
+msgid "Skip to main content"
+msgstr ""
+
+#: common/navigation.j2.inc:39 template/index.html.j2:50
+msgid "For Merchants"
+msgstr ""
+
+#: common/navigation.j2.inc:44 template/index.html.j2:40
+msgid "For Users"
+msgstr ""
+
+#: common/navigation.j2.inc:54
+msgid "AGB für eNetzBon (interim!)"
+msgstr ""
+
+#: template/fees.html.j2:11
+msgid ""
+"This <b>Fee Overview</b> is waived for <b>users or merchants</b> making use "
+"of the Taler payment system for <b>eNetzBon</b>."
+msgstr ""
+
+#: template/fees.html.j2:290
+msgid "Costs for sending SMS to users"
+msgstr ""
+
+#: template/index.html.j2:11
+msgid "Welcome to <span>Taler Operations</span>!"
+msgstr ""
+
+#: template/index.html.j2:13
+msgid "Taler Operations runs the GNU Taler payment system in Switzerland."
+msgstr ""
+
+#: template/index.html.j2:15
+msgid ""
+"Taler Operations wird nicht von der Eidgenössischen Finanzmarktaufsicht "
+"(FINMA) beaufsichtigt. Die Deckungssumme (in Schweizer Franken) Ihrer eCHF "
+"wird aber auf einem separaten Bankkonto hinterlegt."
+msgstr ""
+
+#: template/index.html.j2:41
+msgid ""
+"Taler provides the world with a payment solution that definitely makes sense "
+"in a society where privacy, data safety, technical security, and reliability "
+"become more and more crucial for everyone."
+msgstr ""
+
+#: template/index.html.j2:44
+msgid "Pay&nbsp;with&nbsp;Taler"
+msgstr ""
+
+#: template/index.html.j2:51
+msgid ""
+"Taler offers efficient payments and backoffice procedures with security, "
+"privacy and data minimization by design. Payers and payees can rely on "
+"technology, and do not need to purely rely on trust anymore."
+msgstr ""
+
+#: template/index.html.j2:54
+msgid "Integrate"
+msgstr ""
+
+#: template/terms.html.j2:3
+msgid "Taler Operations AG - Terms of Service"
+msgstr ""
+
+#: template/terms.html.j2:9 template/terms.html.j2:18
+msgid "eNetzBon Terms of Service"
+msgstr ""
+
+#: template/terms.html.j2:10
+msgid ""
+"These <b>Terms of Service</b> are applicable to any <b>user or merchant</b> "
+"making use of the Taler payment system for <b>eNetzBon</b>."
+msgstr ""
+
+#: template/terms.html.j2:358
+msgid "Contact"
+msgstr ""
+
+#: template/terms.html.j2:359
+msgid ""
+"You can get into touch with Taler Operations AG via mail or email and on the "
+"phone:"
+msgstr ""
+
+#: template/terms.html.j2:366
+msgid "Reach Us"
+msgstr ""
+
+#: template/terms.html.j2:373
+msgid ""
+"Email Us</h4> <p>Get into touch with us via <br>one of the email contacts "
+"below"
+msgstr ""
+
+#: template/terms.html.j2:380
+msgid "Call Us"
+msgstr ""
+
+#: template/terms.html.j2:381
+msgid "Have a question?"
+msgstr ""
+
+#: template/users.html.j2:3
+msgid "Taler Operations AG - Users"
+msgstr ""
+
+#: template/users.html.j2:11
+msgid "Quick Steps for<span> Users</span>"
+msgstr ""
+
+#: template/users.html.j2:12
+msgid "What do I need to use Taler for payments?"
+msgstr ""
+
+#: template/users.html.j2:14
+msgid "<b>SWISS BANK ACCOUNT</b> with an IBAN beginning with CH**"
+msgstr ""
+
+#: template/users.html.j2:15
+msgid ""
+"<b>PHONE NUMBER</b> beginning with ++41 for withdrawals of Taler's digital "
+"cash into the wallet"
+msgstr ""
+
+#: template/users.html.j2:16
+msgid "<b>TALER WALLET</b> installed for"
+msgstr ""
+
+#: template/users.html.j2:20
+msgid "or a <b>BROWSER WALLET</b>"
+msgstr ""
+
+#: template/users.html.j2:33
+msgid "1. Step:<span> Withdrawal to the wallet</span>"
+msgstr ""
+
+#: template/users.html.j2:34
+msgid ""
+"A desired amount to be withdrawn to the wallet must be added to the wallet's "
+"balance by wiring from your Swiss bank account to the Swiss bank account of "
+"a Taler payment service provider. Your wallet application helps you to do so."
+msgstr ""
+
+#: template/users.html.j2:36
+msgid ""
+"The wallet obtains the withdrawn amount automatically when you are connected "
+"to the internet or a mobile network."
+msgstr ""
+
+#: template/users.html.j2:48
+msgid ""
+"In the wallet, click on \"Get digital cash\", then select the currency, "
+"specify the origin of the money (bank account or another wallet) and choose "
+"a payment service provider."
+msgstr ""
+
+#: template/users.html.j2:50
+msgid ""
+"For Switzerland, you can choose Taler Operations AG as your payment service "
+"provider."
+msgstr ""
+
+#: template/users.html.j2:51
+msgid "Please read the Terms of Service and accept them."
+msgstr ""
+
+#: template/users.html.j2:61
+msgid ""
+"You confirm the withdrawal and the wallet connects to the payment provider "
+"when the device is online and withdraws the chosen amount."
+msgstr ""
+
+#: template/users.html.j2:69
+msgid "All actions mentioned above also apply for the browser wallet."
+msgstr ""
+
+#: template/users.html.j2:70
+msgid ""
+"The withdrawn amount will be shown in the balance. You see the withdrawal in "
+"\"Recent transactions\"."
+msgstr ""
+
+#: template/users.html.j2:84
+msgid "2. Step:<span> Payments from the mobile wallet</span>"
+msgstr ""
+
+#: template/users.html.j2:85
+msgid ""
+"Payments with Taler are possible at point of sale, web shops or at vending "
+"machines that offer Taler as a payment option."
+msgstr ""
+
+#: template/users.html.j2:86
+msgid ""
+"When you want to pay to a seller, you have to scan the QR code shown at the "
+"point of sale."
+msgstr ""
+
+#: template/users.html.j2:87 template/users.html.j2:105
+msgid "You check the message and the amount to pay shown on your device."
+msgstr ""
+
+#: template/users.html.j2:88 template/users.html.j2:106
+msgid ""
+"With one click on \"Pay\" you accept to pay the amount to the seller and get "
+"an electronic receipt of your payment."
+msgstr ""
+
+#: template/users.html.j2:100
+msgid "Payments from the <span>browser wallet</span>"
+msgstr ""
+
+#: template/users.html.j2:102
+msgid "Alternatively, if you have a Taler wallet installed in the browser:"
+msgstr ""
+
+#: template/users.html.j2:104
+msgid ""
+"When you want to pay to a seller, you have to just click on the payment "
+"option to pay with Taler shown on the web site."
+msgstr ""
+
+#: template/users.html.j2:122
+msgid "3. Step:<span> Checking balances in the wallet</span>"
+msgstr ""
+
+#: template/users.html.j2:123
+msgid ""
+"Click on 'Balance\" in the wallet. You will see an overview of digital cash, "
+"withdrawals and payments."
+msgstr ""
+
+#: template/users.html.j2:144
+msgid "Frequently Asked Questions"
+msgstr ""
+
+#: template/users.html.j2:159
+msgid "How do I install a Taler wallet on my browser?"
+msgstr ""
+
+#: template/users.html.j2:163
+msgid ""
+"Please visit the <a href=\"https://wallet.taler.net/\"; target=\"_blank\" "
+"rel=\"noopener noreferrer\">Taler wallet install page for browser "
+"extensions</a> and select the wallet matching with your browser type."
+msgstr ""
+
+#: template/users.html.j2:177
+msgid "How do I install a Taler wallet on my phone?"
+msgstr ""
+
+#: template/users.html.j2:181
+msgid ""
+"Please visit an app store matching with your smartphone and select the Taler "
+"app. Above here on this page, you will find links guiding you to the "
+"respective app stores</a>."
+msgstr ""
+
+#: template/users.html.j2:195
+msgid "Where is the balance in my wallet stored?"
+msgstr ""
+
+#: template/users.html.j2:199
+msgid ""
+"Your wallet stores digital cash and thus ultimately your computer holds your "
+"balance. The Taler Exchange keeps funds matching all unspent digital cash in "
+"a settlement account."
+msgstr ""
+
+#: template/users.html.j2:214
+msgid "What if my wallet is lost?"
+msgstr ""
+
+#: template/users.html.j2:218
+msgid ""
+"In case of a compromise of one of your devices, an attacker can spend "
+"digital cash from your wallet. Checking your balance might reveal to you "
+"whether your device has eventually been compromised. If a coin has been "
+"spent, this coin cannot be spent a second time. The Exchange examines every "
+"coin whether it has been spent and thus makes double spending impossible."
+msgstr ""
+
+#: template/users.html.j2:222 template/users.html.j2:242
+msgid ""
+"The risk of losing a wallet can be mitigated by making backups or keeping "
+"the balance reasonably low."
+msgstr ""
+
+#: template/users.html.j2:236
+msgid "What if my computer is hacked?"
+msgstr ""
+
+#: template/users.html.j2:240
+msgid ""
+"Since Taler's digital cash in your wallet is anonymized, the exchange cannot "
+"assist you in recovering a lost or stolen wallet. Just like with a physical "
+"wallet for cash, you are responsible for keeping it safe."
+msgstr ""
+
+#: template/users.html.j2:256
+msgid "How does Taler protect my privacy?"
+msgstr ""
+
+#: template/users.html.j2:260
+msgid ""
+"Your wallet stores digital coins that are <a href=\"https://en.wikipedia.org/";
+"wiki/Blind_signature\">blindly signed</a> by an exchange. The use of a blind "
+"signature protects your privacy as it prevents the exchange from knowing "
+"which coin it signed for which customer."
+msgstr ""
+
+#: template/users.html.j2:276
+msgid "Can I send money to my friends with Taler?"
+msgstr ""
+
+#: template/users.html.j2:280
+msgid ""
+"Taler supports push and pull payments between wallets (also known as peer-to-"
+"peer payments). While the payment appears to be directly between wallets, "
+"technically the operation is intermediated by the payment service provider "
+"which will typically be legally required to identify the recipient of the "
+"funds before allowing the transaction to complete."
+msgstr ""
+
+#: template/users.html.j2:297
+msgid ""
+"To whom would consumers complain to in case of non-conversion or non-"
+"compliance?"
+msgstr ""
+
+#: template/users.html.j2:301
+msgid ""
+"In case that customers or merchants have reason to complain about the Taler "
+"payment system, Taler Operations AG will be their first point of contact. We "
+"are always grateful for your suggestions for improvement and for error "
+"messages. The best way to file these is done via our <a href=\"https://bugs.";
+"gnunet.org\" target=\"_blank\" rel=\"noopener noreferrer\">bug tracker</a>. "
+"The ticket system makes it possible to submit reports anonymously. Taler "
+"Operations AG is a member at VQF, a Swiss association for the quality "
+"assurance of financial services (Verein zur Qualitätssicherung von "
+"Finanzdienstleistungen, General-Guisan-Str. 6, 6300 Zug, phone +41 41 763 28 "
+"20) where users could also turn to in case of complaints."
+msgstr ""
+
+#: template/users.html.j2:316
+msgid "More FAQs"
+msgstr ""
+
+#: template/users.html.j2:328
+msgid "I want to use digital cash <br>in my browser!"
+msgstr ""
+
+#: template/users.html.j2:329 template/users.html.j2:336
+msgid "GO"
+msgstr ""
+
+#: template/users.html.j2:335
+msgid "I want to use digital cash <br>on my phone!"
+msgstr ""
diff --git a/locale/fr/LC_MESSAGES/messages.po 
b/locale/fr/LC_MESSAGES/messages.po
index a40c667..8425d0d 100644
--- a/locale/fr/LC_MESSAGES/messages.po
+++ b/locale/fr/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2024-02-24 23:34+0100\n"
+"POT-Creation-Date: 2024-02-24 22:02+0100\n"
 "PO-Revision-Date: 2024-02-12 18:13+0000\n"
 "Last-Translator: Stefan Kügel <skuegel@web.de>\n"
 "Language-Team: French <https://weblate.taler.net/projects/taler-ops/website/";
diff --git a/locale/messages.pot b/locale/messages.pot
index 1a49856..5527140 100644
--- a/locale/messages.pot
+++ b/locale/messages.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PROJECT VERSION\n"
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2024-02-24 23:34+0100\n"
+"POT-Creation-Date: 2024-02-24 22:02+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
diff --git a/package.json b/package.json
index 7539a17..47cf61b 100644
--- a/package.json
+++ b/package.json
@@ -2,13 +2,21 @@
   "name": "taler-ops-www",
   "description": "Taler Operations WWW",
   "scripts": {
-    "build:css": "pnpm build:css:sass && pnpm build:css:min",
-    "build:css:sass": "sass static/scss:static/css",
-    "build:css:min": "esbuild static/css/*.css --sourcemap --minify 
--outdir=static/css/min/"
+    "build-css": "sass rendered/scss:rendered/css",
+    "optimize-css": "for file in rendered/css/*.css; do purifycss $file 
'rendered/**/*.html' -m -i -o $file.pure.css; mv $file.pure.css $file;done;",
+    "prepare-parcel": "rm -f rendered/index.html && for file in 
rendered/**/*.html; do echo \"<a href='$file'>...</a>\" >> rendered/index.html; 
done; sed -i 's/rendered/./g' rendered/index.html",
+    "build-parcel": "parcel build rendered/index.html",
+    "build-parcel-no-optimize": "parcel build rendered/index.html 
--no-optimize",
+    "handle-parcel-output": "rm -rf rendered && mv dist rendered",
+    "cleanup-parcel": "rm rendered/index.html"
   },
   "private": true,
   "devDependencies": {
-    "esbuild": "^0.20.1",
+    "@parcel/config-default": "^2.11.0",
+    "@parcel/plugin": "^2.11.0",
+    "parcel": "^2.11.0",
+    "purify-css": "^1.2.5",
     "sass": "^1.71.1"
-  }
+  },
+  "browserslist": "> 0.5%, last 4 versions, not dead"
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 808dbee..1024859 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,373 +5,2593 @@ settings:
   excludeLinksFromLockfile: false
 
 devDependencies:
-  esbuild:
-    specifier: ^0.20.1
-    version: 0.20.1
+  '@parcel/config-default':
+    specifier: ^2.11.0
+    version: 2.11.0(@parcel/core@2.11.0)
+  '@parcel/plugin':
+    specifier: ^2.11.0
+    version: 2.11.0(@parcel/core@2.11.0)
+  parcel:
+    specifier: ^2.11.0
+    version: 2.11.0
+  purify-css:
+    specifier: ^1.2.5
+    version: 1.2.5
   sass:
     specifier: ^1.71.1
     version: 1.71.1
 
 packages:
 
-  /@esbuild/aix-ppc64@0.20.1:
-    resolution: {integrity: 
sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [aix]
-    requiresBuild: true
-    dev: true
-    optional: true
-
-  /@esbuild/android-arm64@0.20.1:
-    resolution: {integrity: 
sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [android]
-    requiresBuild: true
+  /@babel/code-frame@7.23.5:
+    resolution: {integrity: 
sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/highlight': 7.23.4
+      chalk: 2.4.2
     dev: true
-    optional: true
 
-  /@esbuild/android-arm@0.20.1:
-    resolution: {integrity: 
sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==}
-    engines: {node: '>=12'}
-    cpu: [arm]
-    os: [android]
-    requiresBuild: true
+  /@babel/helper-validator-identifier@7.22.20:
+    resolution: {integrity: 
sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+    engines: {node: '>=6.9.0'}
     dev: true
-    optional: true
 
-  /@esbuild/android-x64@0.20.1:
-    resolution: {integrity: 
sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [android]
-    requiresBuild: true
+  /@babel/highlight@7.23.4:
+    resolution: {integrity: 
sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-validator-identifier': 7.22.20
+      chalk: 2.4.2
+      js-tokens: 4.0.0
     dev: true
-    optional: true
 
-  /@esbuild/darwin-arm64@0.20.1:
-    resolution: {integrity: 
sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [darwin]
-    requiresBuild: true
+  /@lezer/common@1.2.1:
+    resolution: {integrity: 
sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==}
     dev: true
-    optional: true
 
-  /@esbuild/darwin-x64@0.20.1:
-    resolution: {integrity: 
sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [darwin]
-    requiresBuild: true
+  /@lezer/lr@1.4.0:
+    resolution: {integrity: 
sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==}
+    dependencies:
+      '@lezer/common': 1.2.1
     dev: true
-    optional: true
 
-  /@esbuild/freebsd-arm64@0.20.1:
-    resolution: {integrity: 
sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==}
-    engines: {node: '>=12'}
+  /@lmdb/lmdb-darwin-arm64@2.8.5:
+    resolution: {integrity: 
sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==}
     cpu: [arm64]
-    os: [freebsd]
+    os: [darwin]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/freebsd-x64@0.20.1:
-    resolution: {integrity: 
sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==}
-    engines: {node: '>=12'}
+  /@lmdb/lmdb-darwin-x64@2.8.5:
+    resolution: {integrity: 
sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==}
     cpu: [x64]
-    os: [freebsd]
+    os: [darwin]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-arm64@0.20.1:
-    resolution: {integrity: 
sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==}
-    engines: {node: '>=12'}
+  /@lmdb/lmdb-linux-arm64@2.8.5:
+    resolution: {integrity: 
sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==}
     cpu: [arm64]
     os: [linux]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-arm@0.20.1:
-    resolution: {integrity: 
sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==}
-    engines: {node: '>=12'}
+  /@lmdb/lmdb-linux-arm@2.8.5:
+    resolution: {integrity: 
sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==}
     cpu: [arm]
     os: [linux]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-ia32@0.20.1:
-    resolution: {integrity: 
sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
+  /@lmdb/lmdb-linux-x64@2.8.5:
+    resolution: {integrity: 
sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==}
+    cpu: [x64]
     os: [linux]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-loong64@0.20.1:
-    resolution: {integrity: 
sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==}
-    engines: {node: '>=12'}
-    cpu: [loong64]
-    os: [linux]
+  /@lmdb/lmdb-win32-x64@2.8.5:
+    resolution: {integrity: 
sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==}
+    cpu: [x64]
+    os: [win32]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-mips64el@0.20.1:
-    resolution: {integrity: 
sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==}
-    engines: {node: '>=12'}
-    cpu: [mips64el]
-    os: [linux]
+  /@mischnic/json-sourcemap@0.1.1:
+    resolution: {integrity: 
sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==}
+    engines: {node: '>=12.0.0'}
+    dependencies:
+      '@lezer/common': 1.2.1
+      '@lezer/lr': 1.4.0
+      json5: 2.2.3
+    dev: true
+
+  /@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2:
+    resolution: {integrity: 
sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==}
+    cpu: [arm64]
+    os: [darwin]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-ppc64@0.20.1:
-    resolution: {integrity: 
sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==}
-    engines: {node: '>=12'}
-    cpu: [ppc64]
-    os: [linux]
+  /@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2:
+    resolution: {integrity: 
sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==}
+    cpu: [x64]
+    os: [darwin]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-riscv64@0.20.1:
-    resolution: {integrity: 
sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==}
-    engines: {node: '>=12'}
-    cpu: [riscv64]
+  /@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2:
+    resolution: {integrity: 
sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==}
+    cpu: [arm64]
     os: [linux]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-s390x@0.20.1:
-    resolution: {integrity: 
sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==}
-    engines: {node: '>=12'}
-    cpu: [s390x]
+  /@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2:
+    resolution: {integrity: 
sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==}
+    cpu: [arm]
     os: [linux]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/linux-x64@0.20.1:
-    resolution: {integrity: 
sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==}
-    engines: {node: '>=12'}
+  /@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2:
+    resolution: {integrity: 
sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==}
     cpu: [x64]
     os: [linux]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/netbsd-x64@0.20.1:
-    resolution: {integrity: 
sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==}
-    engines: {node: '>=12'}
+  /@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2:
+    resolution: {integrity: 
sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==}
     cpu: [x64]
-    os: [netbsd]
+    os: [win32]
     requiresBuild: true
     dev: true
     optional: true
 
-  /@esbuild/openbsd-x64@0.20.1:
-    resolution: {integrity: 
sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [openbsd]
-    requiresBuild: true
+  /@parcel/bundler-default@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-ZIs0865Lp871ZK83k5I9L4DeeE26muNMrHa7j8bvls6fKBJKAn8djrhfU4XOLyziU4aAOobcPwXU0+npWqs52g==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/graph': 3.1.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/rust': 2.11.0
+      '@parcel/utils': 2.11.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
-    optional: true
 
-  /@esbuild/sunos-x64@0.20.1:
-    resolution: {integrity: 
sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [sunos]
-    requiresBuild: true
+  /@parcel/cache@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-RSSkGNjO00lJPyftzaC9eaNVs4jMjPSAm0VJNWQ9JSm2n4A9BzQtTFAt1vhJOzzW1UsQvvBge9DdfkB7a2gIOw==}
+    engines: {node: '>= 12.0.0'}
+    peerDependencies:
+      '@parcel/core': ^2.11.0
+    dependencies:
+      '@parcel/core': 2.11.0
+      '@parcel/fs': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/logger': 2.11.0
+      '@parcel/utils': 2.11.0
+      lmdb: 2.8.5
     dev: true
-    optional: true
 
-  /@esbuild/win32-arm64@0.20.1:
-    resolution: {integrity: 
sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==}
-    engines: {node: '>=12'}
-    cpu: [arm64]
-    os: [win32]
-    requiresBuild: true
+  /@parcel/codeframe@2.11.0:
+    resolution: {integrity: 
sha512-YHs9g/i5af/sd/JrWAojU9YFbKffcJ3Tx2EJaK0ME8OJsye91UaI/3lxSUYLmJG9e4WLNJtqci8V5FBMz//ZPg==}
+    engines: {node: '>= 12.0.0'}
+    dependencies:
+      chalk: 4.1.2
     dev: true
-    optional: true
 
-  /@esbuild/win32-ia32@0.20.1:
-    resolution: {integrity: 
sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==}
-    engines: {node: '>=12'}
-    cpu: [ia32]
-    os: [win32]
-    requiresBuild: true
+  /@parcel/compressor-raw@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-RArhBPRTCfz77soX2IECH09NUd76UBWujXiPRcXGPIHK+C3L1cRuzsNcA39QeSb3thz3b99JcozMJ1nkC2Bsgw==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
-    optional: true
 
-  /@esbuild/win32-x64@0.20.1:
-    resolution: {integrity: 
sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==}
-    engines: {node: '>=12'}
-    cpu: [x64]
-    os: [win32]
-    requiresBuild: true
+  /@parcel/config-default@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-1e2+qcZkm5/0f4eI20p/DemcYiSxq9d/eyjpTXA7PulJaHbL1wonwUAuy3mvnAvDnLOJmAk/obDVgX1ZfxMGtg==}
+    peerDependencies:
+      '@parcel/core': ^2.11.0
+    dependencies:
+      '@parcel/bundler-default': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/compressor-raw': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/core': 2.11.0
+      '@parcel/namer-default': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/optimizer-css': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/optimizer-htmlnano': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/optimizer-image': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/optimizer-svgo': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/optimizer-swc': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/packager-css': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/packager-html': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/packager-js': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/packager-raw': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/packager-svg': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/packager-wasm': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/reporter-dev-server': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/resolver-default': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/runtime-browser-hmr': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/runtime-js': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/runtime-react-refresh': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/runtime-service-worker': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-babel': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-css': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-html': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-image': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-js': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-json': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-postcss': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-posthtml': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-raw': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-react-refresh-wrap': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/transformer-svg': 2.11.0(@parcel/core@2.11.0)
+    transitivePeerDependencies:
+      - '@swc/helpers'
+      - cssnano
+      - postcss
+      - purgecss
+      - relateurl
+      - srcset
+      - terser
+      - typescript
+      - uncss
     dev: true
-    optional: true
 
-  /anymatch@3.1.3:
-    resolution: {integrity: 
sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
-    engines: {node: '>= 8'}
+  /@parcel/core@2.11.0:
+    resolution: {integrity: 
sha512-Npe0S6hVaqWEwRL+HI7gtOYOaoE5bJQZTgUDhsDoppWbau51jOlRYOZTXuvRK/jxXnze4/S1sdM24xBYAQ5qkw==}
+    engines: {node: '>= 12.0.0'}
     dependencies:
-      normalize-path: 3.0.0
-      picomatch: 2.3.1
+      '@mischnic/json-sourcemap': 0.1.1
+      '@parcel/cache': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/events': 2.11.0
+      '@parcel/fs': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/graph': 3.1.0
+      '@parcel/logger': 2.11.0
+      '@parcel/package-manager': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/profiler': 2.11.0
+      '@parcel/rust': 2.11.0
+      '@parcel/source-map': 2.1.1
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      '@parcel/workers': 2.11.0(@parcel/core@2.11.0)
+      abortcontroller-polyfill: 1.7.5
+      base-x: 3.0.9
+      browserslist: 4.23.0
+      clone: 2.1.2
+      dotenv: 7.0.0
+      dotenv-expand: 5.1.0
+      json5: 2.2.3
+      msgpackr: 1.10.1
+      nullthrows: 1.1.1
+      semver: 7.6.0
     dev: true
 
-  /binary-extensions@2.2.0:
-    resolution: {integrity: 
sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
-    engines: {node: '>=8'}
+  /@parcel/diagnostic@2.11.0:
+    resolution: {integrity: 
sha512-4dJmOXVL5YGGQRRsQosQbSRONBcboB71mSwaeaEgz3pPdq9QXVPLACkGe/jTXSqa3OnAHu3g5vQLpE1g5xqBqw==}
+    engines: {node: '>= 12.0.0'}
+    dependencies:
+      '@mischnic/json-sourcemap': 0.1.1
+      nullthrows: 1.1.1
     dev: true
 
-  /braces@3.0.2:
-    resolution: {integrity: 
sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
-    engines: {node: '>=8'}
+  /@parcel/events@2.11.0:
+    resolution: {integrity: 
sha512-K6SOjOrQsz1GdNl2qKBktq7KJ3Q3yxK8WXdmQYo10wG39dr051xtMb38aqieTp4eVhL8Yaq2iJgGkdr11fuBnA==}
+    engines: {node: '>= 12.0.0'}
+    dev: true
+
+  /@parcel/fs@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-zWckdnnovdrgdFX4QYuQV4bbKCsh6IYCkmwaB4yp47rhw1MP0lkBINLt4yFPHBxWXOpElCfxjL+z69c9xJQRBQ==}
+    engines: {node: '>= 12.0.0'}
+    peerDependencies:
+      '@parcel/core': ^2.11.0
     dependencies:
-      fill-range: 7.0.1
+      '@parcel/core': 2.11.0
+      '@parcel/rust': 2.11.0
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      '@parcel/watcher': 2.4.1
+      '@parcel/workers': 2.11.0(@parcel/core@2.11.0)
     dev: true
 
-  /chokidar@3.6.0:
-    resolution: {integrity: 
sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
-    engines: {node: '>= 8.10.0'}
+  /@parcel/graph@3.1.0:
+    resolution: {integrity: 
sha512-d1dTW5C7A52HgDtoXlyvlET1ypSlmIxSIZOJ1xp3R9L9hgo3h1u3jHNyaoTe/WPkGVe2QnFxh0h+UibVJhu9vg==}
+    engines: {node: '>= 12.0.0'}
     dependencies:
-      anymatch: 3.1.3
-      braces: 3.0.2
-      glob-parent: 5.1.2
-      is-binary-path: 2.1.0
-      is-glob: 4.0.3
-      normalize-path: 3.0.0
-      readdirp: 3.6.0
-    optionalDependencies:
-      fsevents: 2.3.3
+      nullthrows: 1.1.1
     dev: true
 
-  /esbuild@0.20.1:
-    resolution: {integrity: 
sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==}
-    engines: {node: '>=12'}
-    hasBin: true
-    requiresBuild: true
-    optionalDependencies:
-      '@esbuild/aix-ppc64': 0.20.1
-      '@esbuild/android-arm': 0.20.1
-      '@esbuild/android-arm64': 0.20.1
-      '@esbuild/android-x64': 0.20.1
-      '@esbuild/darwin-arm64': 0.20.1
-      '@esbuild/darwin-x64': 0.20.1
-      '@esbuild/freebsd-arm64': 0.20.1
-      '@esbuild/freebsd-x64': 0.20.1
-      '@esbuild/linux-arm': 0.20.1
-      '@esbuild/linux-arm64': 0.20.1
-      '@esbuild/linux-ia32': 0.20.1
-      '@esbuild/linux-loong64': 0.20.1
-      '@esbuild/linux-mips64el': 0.20.1
-      '@esbuild/linux-ppc64': 0.20.1
-      '@esbuild/linux-riscv64': 0.20.1
-      '@esbuild/linux-s390x': 0.20.1
-      '@esbuild/linux-x64': 0.20.1
-      '@esbuild/netbsd-x64': 0.20.1
-      '@esbuild/openbsd-x64': 0.20.1
-      '@esbuild/sunos-x64': 0.20.1
-      '@esbuild/win32-arm64': 0.20.1
-      '@esbuild/win32-ia32': 0.20.1
-      '@esbuild/win32-x64': 0.20.1
+  /@parcel/logger@2.11.0:
+    resolution: {integrity: 
sha512-HtMEdCq3LKnvv4T2CIskcqlf2gpBvHMm3pkeUFB/hc/7hW/hE1k6/HA2VOQvc0tBsaMpmEx7PCrfrH56usQSyA==}
+    engines: {node: '>= 12.0.0'}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/events': 2.11.0
     dev: true
 
-  /fill-range@7.0.1:
-    resolution: {integrity: 
sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
-    engines: {node: '>=8'}
+  /@parcel/markdown-ansi@2.11.0:
+    resolution: {integrity: 
sha512-YA60EWbXi6cLOIzcwRC2wijotPauOGQbUi0vSbu0O6/mjQ68kWCMGz0hwZjDRQcPypQVJEIvTgMymLbvumxwhg==}
+    engines: {node: '>= 12.0.0'}
     dependencies:
-      to-regex-range: 5.0.1
+      chalk: 4.1.2
     dev: true
 
-  /fsevents@2.3.3:
-    resolution: {integrity: 
sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
-    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
-    os: [darwin]
-    requiresBuild: true
+  /@parcel/namer-default@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-DEwBSKSClg4DA2xAWimYkw9bFi7MFb9TdT7/TYZStMTsfYHPWOyyjGR7aVr3Ra4wNb+XX6g4rR41yp3HD6KO7A==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
-    optional: true
 
-  /glob-parent@5.1.2:
-    resolution: {integrity: 
sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
-    engines: {node: '>= 6'}
+  /@parcel/node-resolver-core@3.2.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-XJRSxCkNbGFWjfmwFdcQZ/qlzWZd35qLtvLz2va8euGL7M5OMEQOv7dsvEhl0R+CC2zcnfFzZwxk78q6ezs8AQ==}
+    engines: {node: '>= 12.0.0'}
     dependencies:
-      is-glob: 4.0.3
+      '@mischnic/json-sourcemap': 0.1.1
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/fs': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/rust': 2.11.0
+      '@parcel/utils': 2.11.0
+      nullthrows: 1.1.1
+      semver: 7.6.0
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
 
-  /immutable@4.3.5:
-    resolution: {integrity: 
sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==}
+  /@parcel/optimizer-css@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-bV97PRxshHV3dMwOpLRgcP1QNhrVWh6VVDfm2gmWULpvsjoykcPS6vrCFksY5CpQsSvNHqJBzQjWS8FubUI76w==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/source-map': 2.1.1
+      '@parcel/utils': 2.11.0
+      browserslist: 4.23.0
+      lightningcss: 1.24.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
 
-  /is-binary-path@2.1.0:
-    resolution: {integrity: 
sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
-    engines: {node: '>=8'}
+  /@parcel/optimizer-htmlnano@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-c20pz4EFF5DNFmqYgptlIj49eT6xjGLkDTdHH3RRzxKovuSXWfYSPs3GED3ZsjVuQyjNQif+/MAk9547F7hrdQ==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
     dependencies:
-      binary-extensions: 2.2.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      htmlnano: 2.1.0(svgo@2.8.0)
+      nullthrows: 1.1.1
+      posthtml: 0.16.6
+      svgo: 2.8.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+      - cssnano
+      - postcss
+      - purgecss
+      - relateurl
+      - srcset
+      - terser
+      - typescript
+      - uncss
     dev: true
 
-  /is-extglob@2.1.1:
-    resolution: {integrity: 
sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
-    engines: {node: '>=0.10.0'}
+  /@parcel/optimizer-image@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-jCaJww5QFG2GuNzYW8nlSW+Ea+Cv47TRnOPJNquFIajgfTLJ5ddsWbaNal0GQsL8yNiCBKWd1AV4W0RH9tG0Jg==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    peerDependencies:
+      '@parcel/core': ^2.11.0
+    dependencies:
+      '@parcel/core': 2.11.0
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/rust': 2.11.0
+      '@parcel/utils': 2.11.0
+      '@parcel/workers': 2.11.0(@parcel/core@2.11.0)
     dev: true
 
-  /is-glob@4.0.3:
-    resolution: {integrity: 
sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
-    engines: {node: '>=0.10.0'}
+  /@parcel/optimizer-svgo@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-TQpvfBhjV2IsuFHXUolbDS6XWB3DDR2rYTlqlA8LMmuOY7jQd9Bnkl4JnapzWm/bRuzRlzdGjjVCPGL8iShFvA==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
     dependencies:
-      is-extglob: 2.1.1
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      svgo: 2.8.0
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
 
-  /is-number@7.0.0:
-    resolution: {integrity: 
sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
-    engines: {node: '>=0.12.0'}
+  /@parcel/optimizer-swc@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-ftf42F3JyZxJb6nnLlgNGyNQ273YOla4dFGH/tWC8iTwObHUpWe7cMbCGcrSJBvAlsLkZfLpFNAXFxUgxdKyHQ==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/source-map': 2.1.1
+      '@parcel/utils': 2.11.0
+      '@swc/core': 1.4.2
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
+      - '@swc/helpers'
     dev: true
 
-  /normalize-path@3.0.0:
-    resolution: {integrity: 
sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
-    engines: {node: '>=0.10.0'}
+  /@parcel/package-manager@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-QzdsrUYlAwIzb8by7WJjqYnbR1MoMKWbtE1MXUeYsZbFusV8B6pOH+lwqNJKS/BFtddZMRPYFueZS2N2fwzjig==}
+    engines: {node: '>= 12.0.0'}
+    peerDependencies:
+      '@parcel/core': ^2.11.0
+    dependencies:
+      '@parcel/core': 2.11.0
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/fs': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/logger': 2.11.0
+      '@parcel/node-resolver-core': 3.2.0(@parcel/core@2.11.0)
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      '@parcel/workers': 2.11.0(@parcel/core@2.11.0)
+      semver: 7.6.0
     dev: true
 
-  /picomatch@2.3.1:
-    resolution: {integrity: 
sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
-    engines: {node: '>=8.6'}
+  /@parcel/packager-css@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-AyIxsp4eL8c22vp2oO2hSRnr3hSVNkARNZc9DG6uXxCc2Is5tUEX0I4PwxWnAx0EI44l+3zX/o414zT8yV9wwQ==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/source-map': 2.1.1
+      '@parcel/utils': 2.11.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
 
-  /readdirp@3.6.0:
-    resolution: {integrity: 
sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
-    engines: {node: '>=8.10.0'}
+  /@parcel/packager-html@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-ho5AQ70naTV8IqkKIbKtK+jsXQ5TJfFgtBvmJlyB3YydRMbIc+3g4G0xgIvf15V4uCMw9Md0Sv1W65nQXHPQoA==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
     dependencies:
-      picomatch: 2.3.1
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      nullthrows: 1.1.1
+      posthtml: 0.16.6
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
 
-  /sass@1.71.1:
-    resolution: {integrity: 
sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==}
-    engines: {node: '>=14.0.0'}
-    hasBin: true
+  /@parcel/packager-js@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-SxjCsd0xQfg5H73YtVJj9VOpr9s0rwMsSoeykjkatbkEla9NsZajsUkd/bfYf+/0WvEKOrB8oUBo15HkGOgKug==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
     dependencies:
-      chokidar: 3.6.0
-      immutable: 4.3.5
-      source-map-js: 1.0.2
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/rust': 2.11.0
+      '@parcel/source-map': 2.1.1
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      globals: 13.24.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
 
-  /source-map-js@1.0.2:
-    resolution: {integrity: 
sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
-    engines: {node: '>=0.10.0'}
+  /@parcel/packager-raw@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-2/0JQ8DZrz7cVNXwD6OYoUUtSSnlr4dsz8ZkpFDKsBJhvMHtC78Sq+1EDixDGOMiUcalSEjNsoHtkpq9uNh+Xw==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+    transitivePeerDependencies:
+      - '@parcel/core'
     dev: true
 
-  /to-regex-range@5.0.1:
-    resolution: {integrity: 
sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
-    engines: {node: '>=8.0'}
+  /@parcel/packager-svg@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-2wQBkzLwcaWFGWz8TP+bgsXgiueWPzrjKsWugWdDfq0FbXh8XVeR/599qnus3RFHZy4cH6L6yq/7zxcljtxK8A==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
     dependencies:
-      is-number: 7.0.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      posthtml: 0.16.6
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/packager-wasm@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-tTy4EbDXeeiZ0oB7L2FWaHSD1mbmYZP6R5HXqkvc5dECGUKPU5Jz6ek2C5AM+HfQdQLKXPQ/Xw3eJnI/AmctVg==}
+    engines: {node: '>=12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/plugin@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-9npuKBlhnPn7oeUpLJGecceg16GkXbvzbr6MNSZiHhkx3IBeITHQXlZnp2zAjUOFreNsYOfifwEF2S4KsARfBQ==}
+    engines: {node: '>= 12.0.0'}
+    dependencies:
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/profiler@2.11.0:
+    resolution: {integrity: 
sha512-s10SS09prOdwnaAcjK8M5zO8o+zPJJW5oOqXPNdf6KH4NGD/ue7iOk2xM8QLw6ulSwxE7NDt++lyfW3AXgCZwg==}
+    engines: {node: '>= 12.0.0'}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/events': 2.11.0
+      chrome-trace-event: 1.0.3
+    dev: true
+
+  /@parcel/reporter-cli@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-hY0iO0f+LifgJHDUIjGQJnxLFSkk2jlbfy+kIaft5oI3/IM+UljecfGO+14XH8mYlqRXXPsT09TJe8ZKQzp4ZQ==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      chalk: 4.1.2
+      cli-progress: 3.12.0
+      term-size: 2.2.1
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/reporter-dev-server@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-T4ue1+oLFNdcd9maw8QWQuxzOS2kX2jOrSvYKwYd9oGnqiAr1rpiHYYKJhHng+PF5ybwWkj8dUJfGh2NoQysJA==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/reporter-tracer@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-33q4ftO26OPWHkUpEm0bzzSjW2kHEh6q/JFePwf8W6APTQVruj4mV46+Fh6rxX42ixs92K/QoiE0gYgWZQVDHA==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      chrome-trace-event: 1.0.3
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/resolver-default@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-suZNN2lE5W48LPTwAbG7gnj1IeubkCVEm0XspWXcXUtCzglimNJ8PVVBGx171o5CqDpdbGF3AqHjG9N3uOwXag==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/node-resolver-core': 3.2.0(@parcel/core@2.11.0)
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/runtime-browser-hmr@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-uVwNBtoLMrlPHLvRS05BVhLseduMOpZT36yiIjS0YSBJcC6/otI9AY7ZiDPYmrB5xTqM0R+D554JhPaJHCuocw==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/runtime-js@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-fH3nJoexINz7s4cDzp0Vjsx0k1pMYSa5ch38LbbNqCKTermy0pS0zZuvgfLfHFFP+AMRpFQenrF7h7N3bgDmHw==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/runtime-react-refresh@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-Kfnc7gLjhoephLMnjABrkIkzVfzPrpJlxiJFIleY2Fm57YhmCfKsEYxm3lHOutNaYl1VArW0LKClPH/VHG9vfQ==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      react-error-overlay: 6.0.9
+      react-refresh: 0.9.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/runtime-service-worker@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-c8MaSpSbXIKuN5sA/g4UsrsH1BtBZ6Em+eSxt9AYbdPtWrW+qwCioNVZj9lugBRUzDMjVfJz0yK59nS42hABvw==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/rust@2.11.0:
+    resolution: {integrity: 
sha512-UkLWdHOD8Md2YmJDPsqd3yIs9chhdl/ATfV/B/xdPKGmqtNouYpDCRlq+WxMt3mLoYgHEg9UwrWLTebo2rr2iQ==}
+    engines: {node: '>= 12.0.0'}
+    dev: true
+
+  /@parcel/source-map@2.1.1:
+    resolution: {integrity: 
sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==}
+    engines: {node: ^12.18.3 || >=14}
+    dependencies:
+      detect-libc: 1.0.3
+    dev: true
+
+  /@parcel/transformer-babel@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-WKGblnp7r426VG+cpeQzc6dj/30EoUaYwyl4OEaigQSJizyuPWTBWTz6FUw+ih1/sg37h+D1BIh9C2FsVzpzbw==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/source-map': 2.1.1
+      '@parcel/utils': 2.11.0
+      browserslist: 4.23.0
+      json5: 2.2.3
+      nullthrows: 1.1.1
+      semver: 7.6.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/transformer-css@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-nFmBulF/ErNoafO87JbVrBavjBMNwE/kahbCRVxc2Mvlphz4F4lBW4eDRS5l4xBqFJaNkHr9R55ehLBBilF4Jw==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/source-map': 2.1.1
+      '@parcel/utils': 2.11.0
+      browserslist: 4.23.0
+      lightningcss: 1.24.0
+      nullthrows: 1.1.1
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/transformer-html@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-90vp7mbvvfqPr9XIINpMcELtywj56f1bxfOkLQgWU1bm22H0FT3i5dqdac++2My0IGDvMwhAEjQfbn4pA579NQ==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/rust': 2.11.0
+      nullthrows: 1.1.1
+      posthtml: 0.16.6
+      posthtml-parser: 0.10.2
+      posthtml-render: 3.0.0
+      semver: 7.6.0
+      srcset: 4.0.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/transformer-image@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-QiZj18UHf3lVFsi65Vz8YbS3ydx9Pe9x8ktMxE1oh9qpznN8lD7gE/Z9DxuTZB84EZ9pKytKwcv5WGXP25xIFg==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    peerDependencies:
+      '@parcel/core': ^2.11.0
+    dependencies:
+      '@parcel/core': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      '@parcel/workers': 2.11.0(@parcel/core@2.11.0)
+      nullthrows: 1.1.1
+    dev: true
+
+  /@parcel/transformer-js@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-G1sv0n8/fJqHqwUs0iVnVdmRY0Kh8kWaDkuWcU/GJBHMGhUnLXKdNwxX2Av9UdBL14bU1nTINfr9qOfnQotXWg==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    peerDependencies:
+      '@parcel/core': ^2.11.0
+    dependencies:
+      '@parcel/core': 2.11.0
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/rust': 2.11.0
+      '@parcel/source-map': 2.1.1
+      '@parcel/utils': 2.11.0
+      '@parcel/workers': 2.11.0(@parcel/core@2.11.0)
+      '@swc/helpers': 0.5.6
+      browserslist: 4.23.0
+      nullthrows: 1.1.1
+      regenerator-runtime: 0.13.11
+      semver: 7.6.0
+    dev: true
+
+  /@parcel/transformer-json@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-Wt/wgSBaRWmPL4gpvjkV0bCBRxFOtsuLNzsm8vYA5poxTFhuLY+AoyQ8S2+xXU4VxwBfdppfIr2Ny3SwGs8xbQ==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      json5: 2.2.3
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/transformer-postcss@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-Ugy8XHBaUptGotsvwzq7gPCvkCopTIqqZ0JZ40Jmy9slGms8wnx06pNHA1Be/RcJwkJ2TbSu+7ncZdgmP5x5GQ==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/rust': 2.11.0
+      '@parcel/utils': 2.11.0
+      clone: 2.1.2
+      nullthrows: 1.1.1
+      postcss-value-parser: 4.2.0
+      semver: 7.6.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/transformer-posthtml@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-dMK4p1RRAoIJEjK/Wz9GOLqwHqdD/VQDhMPk+6sUKp5zf2MhSohUstpp5gKsSZivCM3PS2f8k9rgroacJ/ReuA==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      nullthrows: 1.1.1
+      posthtml: 0.16.6
+      posthtml-parser: 0.10.2
+      posthtml-render: 3.0.0
+      semver: 7.6.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/transformer-raw@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-2ltp3TgS+cxEqSM1vk5gDtJrYx4KMuRRtbSgSvkdldyOgPhflnLU3/HRz72hXSNGqYOV0/JN0+ocsfPnqR00ug==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/transformer-react-refresh-wrap@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-6pY0CdIgIpXC6XpsDWizf+zLgiuEsJ106HjWLwF7/R72BrvDhLPZ6jRu4UTrnd6bM89KahPw9fZZzjKoA5Efcw==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      react-refresh: 0.9.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/transformer-svg@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-GrTNi04OoQSXsyrB7FqQPeYREscEXFhIBPkyQ0q7WDG/yYynWljiA0kwITCtMjPfv2EDVks292dvM3EcnERRIA==}
+    engines: {node: '>= 12.0.0', parcel: ^2.11.0}
+    dependencies:
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/plugin': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/rust': 2.11.0
+      nullthrows: 1.1.1
+      posthtml: 0.16.6
+      posthtml-parser: 0.10.2
+      posthtml-render: 3.0.0
+      semver: 7.6.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/types@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-lN5XlfV9b1s2rli8q1LqsLtu+D4ZwNI3sKmNcL/3tohSfQcF2EgF+MaiANGo9VzXOzoWFHt4dqWjO4OcdyC5tg==}
+    dependencies:
+      '@parcel/cache': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/fs': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/package-manager': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/source-map': 2.1.1
+      '@parcel/workers': 2.11.0(@parcel/core@2.11.0)
+      utility-types: 3.11.0
+    transitivePeerDependencies:
+      - '@parcel/core'
+    dev: true
+
+  /@parcel/utils@2.11.0:
+    resolution: {integrity: 
sha512-AcL70cXlIyE7eQdvjQbYxegN5l+skqvlJllxTWg4YkIZe9p8Gmv74jLAeLWh5F+IGl5WRn0TSy9JhNJjIMQGwQ==}
+    engines: {node: '>= 12.0.0'}
+    dependencies:
+      '@parcel/codeframe': 2.11.0
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/logger': 2.11.0
+      '@parcel/markdown-ansi': 2.11.0
+      '@parcel/rust': 2.11.0
+      '@parcel/source-map': 2.1.1
+      chalk: 4.1.2
+      nullthrows: 1.1.1
+    dev: true
+
+  /@parcel/watcher-android-arm64@2.4.1:
+    resolution: {integrity: 
sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [android]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-darwin-arm64@2.4.1:
+    resolution: {integrity: 
sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-darwin-x64@2.4.1:
+    resolution: {integrity: 
sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-freebsd-x64@2.4.1:
+    resolution: {integrity: 
sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-arm-glibc@2.4.1:
+    resolution: {integrity: 
sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-arm64-glibc@2.4.1:
+    resolution: {integrity: 
sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-arm64-musl@2.4.1:
+    resolution: {integrity: 
sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-x64-glibc@2.4.1:
+    resolution: {integrity: 
sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-linux-x64-musl@2.4.1:
+    resolution: {integrity: 
sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-win32-arm64@2.4.1:
+    resolution: {integrity: 
sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-win32-ia32@2.4.1:
+    resolution: {integrity: 
sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher-win32-x64@2.4.1:
+    resolution: {integrity: 
sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@parcel/watcher@2.4.1:
+    resolution: {integrity: 
sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==}
+    engines: {node: '>= 10.0.0'}
+    dependencies:
+      detect-libc: 1.0.3
+      is-glob: 4.0.3
+      micromatch: 4.0.5
+      node-addon-api: 7.1.0
+    optionalDependencies:
+      '@parcel/watcher-android-arm64': 2.4.1
+      '@parcel/watcher-darwin-arm64': 2.4.1
+      '@parcel/watcher-darwin-x64': 2.4.1
+      '@parcel/watcher-freebsd-x64': 2.4.1
+      '@parcel/watcher-linux-arm-glibc': 2.4.1
+      '@parcel/watcher-linux-arm64-glibc': 2.4.1
+      '@parcel/watcher-linux-arm64-musl': 2.4.1
+      '@parcel/watcher-linux-x64-glibc': 2.4.1
+      '@parcel/watcher-linux-x64-musl': 2.4.1
+      '@parcel/watcher-win32-arm64': 2.4.1
+      '@parcel/watcher-win32-ia32': 2.4.1
+      '@parcel/watcher-win32-x64': 2.4.1
+    dev: true
+
+  /@parcel/workers@2.11.0(@parcel/core@2.11.0):
+    resolution: {integrity: 
sha512-wjybqdSy6Nk0N9iBGsFcp7739W2zvx0WGfVxPVShqhz46pIkPOiFF/iSn+kFu5EmMKTRWeUif42+a6rRZ7pCnQ==}
+    engines: {node: '>= 12.0.0'}
+    peerDependencies:
+      '@parcel/core': ^2.11.0
+    dependencies:
+      '@parcel/core': 2.11.0
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/logger': 2.11.0
+      '@parcel/profiler': 2.11.0
+      '@parcel/types': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      nullthrows: 1.1.1
+    dev: true
+
+  /@swc/core-darwin-arm64@1.4.2:
+    resolution: {integrity: 
sha512-1uSdAn1MRK5C1m/TvLZ2RDvr0zLvochgrZ2xL+lRzugLlCTlSA+Q4TWtrZaOz+vnnFVliCpw7c7qu0JouhgQIw==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-darwin-x64@1.4.2:
+    resolution: {integrity: 
sha512-TYD28+dCQKeuxxcy7gLJUCFLqrwDZnHtC2z7cdeGfZpbI2mbfppfTf2wUPzqZk3gEC96zHd4Yr37V3Tvzar+lQ==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-arm-gnueabihf@1.4.2:
+    resolution: {integrity: 
sha512-Eyqipf7ZPGj0vplKHo8JUOoU1un2sg5PjJMpEesX0k+6HKE2T8pdyeyXODN0YTFqzndSa/J43EEPXm+rHAsLFQ==}
+    engines: {node: '>=10'}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-arm64-gnu@1.4.2:
+    resolution: {integrity: 
sha512-wZn02DH8VYPv3FC0ub4my52Rttsus/rFw+UUfzdb3tHMHXB66LqN+rR0ssIOZrH6K+VLN6qpTw9VizjyoH0BxA==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-arm64-musl@1.4.2:
+    resolution: {integrity: 
sha512-3G0D5z9hUj9bXNcwmA1eGiFTwe5rWkuL3DsoviTj73TKLpk7u64ND0XjEfO0huVv4vVu9H1jodrKb7nvln/dlw==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-x64-gnu@1.4.2:
+    resolution: {integrity: 
sha512-LFxn9U8cjmYHw3jrdPNqPAkBGglKE3tCZ8rA7hYyp0BFxuo7L2ZcEnPm4RFpmSCCsExFH+LEJWuMGgWERoktvg==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-linux-x64-musl@1.4.2:
+    resolution: {integrity: 
sha512-dp0fAmreeVVYTUcb4u9njTPrYzKnbIH0EhH2qvC9GOYNNREUu2GezSIDgonjOXkHiTCvopG4xU7y56XtXj4VrQ==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-win32-arm64-msvc@1.4.2:
+    resolution: {integrity: 
sha512-HlVIiLMQkzthAdqMslQhDkoXJ5+AOLUSTV6fm6shFKZKqc/9cJvr4S8UveNERL9zUficA36yM3bbfo36McwnvQ==}
+    engines: {node: '>=10'}
+    cpu: [arm64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-win32-ia32-msvc@1.4.2:
+    resolution: {integrity: 
sha512-WCF8faPGjCl4oIgugkp+kL9nl3nUATlzKXCEGFowMEmVVCFM0GsqlmGdPp1pjZoWc9tpYanoXQDnp5IvlDSLhA==}
+    engines: {node: '>=10'}
+    cpu: [ia32]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core-win32-x64-msvc@1.4.2:
+    resolution: {integrity: 
sha512-oV71rwiSpA5xre2C5570BhCsg1HF97SNLsZ/12xv7zayGzqr3yvFALFJN8tHKpqUdCB4FGPjoP3JFdV3i+1wUw==}
+    engines: {node: '>=10'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /@swc/core@1.4.2:
+    resolution: {integrity: 
sha512-vWgY07R/eqj1/a0vsRKLI9o9klGZfpLNOVEnrv4nrccxBgYPjcf22IWwAoaBJ+wpA7Q4fVjCUM8lP0m01dpxcg==}
+    engines: {node: '>=10'}
+    requiresBuild: true
+    peerDependencies:
+      '@swc/helpers': ^0.5.0
+    peerDependenciesMeta:
+      '@swc/helpers':
+        optional: true
+    dependencies:
+      '@swc/counter': 0.1.3
+      '@swc/types': 0.1.5
+    optionalDependencies:
+      '@swc/core-darwin-arm64': 1.4.2
+      '@swc/core-darwin-x64': 1.4.2
+      '@swc/core-linux-arm-gnueabihf': 1.4.2
+      '@swc/core-linux-arm64-gnu': 1.4.2
+      '@swc/core-linux-arm64-musl': 1.4.2
+      '@swc/core-linux-x64-gnu': 1.4.2
+      '@swc/core-linux-x64-musl': 1.4.2
+      '@swc/core-win32-arm64-msvc': 1.4.2
+      '@swc/core-win32-ia32-msvc': 1.4.2
+      '@swc/core-win32-x64-msvc': 1.4.2
+    dev: true
+
+  /@swc/counter@0.1.3:
+    resolution: {integrity: 
sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
+    dev: true
+
+  /@swc/helpers@0.5.6:
+    resolution: {integrity: 
sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==}
+    dependencies:
+      tslib: 2.6.2
+    dev: true
+
+  /@swc/types@0.1.5:
+    resolution: {integrity: 
sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==}
+    dev: true
+
+  /@trysound/sax@0.2.0:
+    resolution: {integrity: 
sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
+    engines: {node: '>=10.13.0'}
+    dev: true
+
+  /abortcontroller-polyfill@1.7.5:
+    resolution: {integrity: 
sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==}
+    dev: true
+
+  /ansi-regex@2.1.1:
+    resolution: {integrity: 
sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /ansi-regex@3.0.1:
+    resolution: {integrity: 
sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /ansi-regex@5.0.1:
+    resolution: {integrity: 
sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /ansi-styles@3.2.1:
+    resolution: {integrity: 
sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+    engines: {node: '>=4'}
+    dependencies:
+      color-convert: 1.9.3
+    dev: true
+
+  /ansi-styles@4.3.0:
+    resolution: {integrity: 
sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+    engines: {node: '>=8'}
+    dependencies:
+      color-convert: 2.0.1
+    dev: true
+
+  /anymatch@3.1.3:
+    resolution: {integrity: 
sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+    engines: {node: '>= 8'}
+    dependencies:
+      normalize-path: 3.0.0
+      picomatch: 2.3.1
+    dev: true
+
+  /argparse@2.0.1:
+    resolution: {integrity: 
sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+    dev: true
+
+  /atob@2.1.2:
+    resolution: {integrity: 
sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
+    engines: {node: '>= 4.5.0'}
+    hasBin: true
+    dev: true
+
+  /balanced-match@1.0.2:
+    resolution: {integrity: 
sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+    dev: true
+
+  /base-x@3.0.9:
+    resolution: {integrity: 
sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==}
+    dependencies:
+      safe-buffer: 5.2.1
+    dev: true
+
+  /binary-extensions@2.2.0:
+    resolution: {integrity: 
sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /boolbase@1.0.0:
+    resolution: {integrity: 
sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+    dev: true
+
+  /brace-expansion@1.1.11:
+    resolution: {integrity: 
sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+    dependencies:
+      balanced-match: 1.0.2
+      concat-map: 0.0.1
+    dev: true
+
+  /braces@3.0.2:
+    resolution: {integrity: 
sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+    engines: {node: '>=8'}
+    dependencies:
+      fill-range: 7.0.1
+    dev: true
+
+  /browserslist@4.23.0:
+    resolution: {integrity: 
sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+    hasBin: true
+    dependencies:
+      caniuse-lite: 1.0.30001589
+      electron-to-chromium: 1.4.681
+      node-releases: 2.0.14
+      update-browserslist-db: 1.0.13(browserslist@4.23.0)
+    dev: true
+
+  /callsites@3.1.0:
+    resolution: {integrity: 
sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /camelcase@4.1.0:
+    resolution: {integrity: 
sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /caniuse-lite@1.0.30001589:
+    resolution: {integrity: 
sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==}
+    dev: true
+
+  /chalk@2.4.2:
+    resolution: {integrity: 
sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+    engines: {node: '>=4'}
+    dependencies:
+      ansi-styles: 3.2.1
+      escape-string-regexp: 1.0.5
+      supports-color: 5.5.0
+    dev: true
+
+  /chalk@4.1.2:
+    resolution: {integrity: 
sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+    engines: {node: '>=10'}
+    dependencies:
+      ansi-styles: 4.3.0
+      supports-color: 7.2.0
+    dev: true
+
+  /chokidar@3.6.0:
+    resolution: {integrity: 
sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+    engines: {node: '>= 8.10.0'}
+    dependencies:
+      anymatch: 3.1.3
+      braces: 3.0.2
+      glob-parent: 5.1.2
+      is-binary-path: 2.1.0
+      is-glob: 4.0.3
+      normalize-path: 3.0.0
+      readdirp: 3.6.0
+    optionalDependencies:
+      fsevents: 2.3.3
+    dev: true
+
+  /chrome-trace-event@1.0.3:
+    resolution: {integrity: 
sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
+    engines: {node: '>=6.0'}
+    dev: true
+
+  /clean-css@4.2.4:
+    resolution: {integrity: 
sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==}
+    engines: {node: '>= 4.0'}
+    dependencies:
+      source-map: 0.6.1
+    dev: true
+
+  /cli-progress@3.12.0:
+    resolution: {integrity: 
sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==}
+    engines: {node: '>=4'}
+    dependencies:
+      string-width: 4.2.3
+    dev: true
+
+  /cliui@3.2.0:
+    resolution: {integrity: 
sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==}
+    dependencies:
+      string-width: 1.0.2
+      strip-ansi: 3.0.1
+      wrap-ansi: 2.1.0
+    dev: true
+
+  /clone@2.1.2:
+    resolution: {integrity: 
sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
+    engines: {node: '>=0.8'}
+    dev: true
+
+  /code-point-at@1.1.0:
+    resolution: {integrity: 
sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /color-convert@1.9.3:
+    resolution: {integrity: 
sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+    dependencies:
+      color-name: 1.1.3
+    dev: true
+
+  /color-convert@2.0.1:
+    resolution: {integrity: 
sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+    engines: {node: '>=7.0.0'}
+    dependencies:
+      color-name: 1.1.4
+    dev: true
+
+  /color-name@1.1.3:
+    resolution: {integrity: 
sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+    dev: true
+
+  /color-name@1.1.4:
+    resolution: {integrity: 
sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+    dev: true
+
+  /commander@7.2.0:
+    resolution: {integrity: 
sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+    engines: {node: '>= 10'}
+    dev: true
+
+  /concat-map@0.0.1:
+    resolution: {integrity: 
sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+    dev: true
+
+  /convert-source-map@0.3.5:
+    resolution: {integrity: 
sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==}
+    dev: true
+
+  /cosmiconfig@8.3.6:
+    resolution: {integrity: 
sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==}
+    engines: {node: '>=14'}
+    peerDependencies:
+      typescript: '>=4.9.5'
+    peerDependenciesMeta:
+      typescript:
+        optional: true
+    dependencies:
+      import-fresh: 3.3.0
+      js-yaml: 4.1.0
+      parse-json: 5.2.0
+      path-type: 4.0.0
+    dev: true
+
+  /cross-spawn@5.1.0:
+    resolution: {integrity: 
sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
+    dependencies:
+      lru-cache: 4.1.5
+      shebang-command: 1.2.0
+      which: 1.3.1
+    dev: true
+
+  /css-select@4.3.0:
+    resolution: {integrity: 
sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
+    dependencies:
+      boolbase: 1.0.0
+      css-what: 6.1.0
+      domhandler: 4.3.1
+      domutils: 2.8.0
+      nth-check: 2.1.1
+    dev: true
+
+  /css-tree@1.1.3:
+    resolution: {integrity: 
sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
+    engines: {node: '>=8.0.0'}
+    dependencies:
+      mdn-data: 2.0.14
+      source-map: 0.6.1
+    dev: true
+
+  /css-what@6.1.0:
+    resolution: {integrity: 
sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
+    engines: {node: '>= 6'}
+    dev: true
+
+  /css@2.2.4:
+    resolution: {integrity: 
sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==}
+    dependencies:
+      inherits: 2.0.4
+      source-map: 0.6.1
+      source-map-resolve: 0.5.3
+      urix: 0.1.0
+    dev: true
+
+  /csso@4.2.0:
+    resolution: {integrity: 
sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
+    engines: {node: '>=8.0.0'}
+    dependencies:
+      css-tree: 1.1.3
+    dev: true
+
+  /decamelize@1.2.0:
+    resolution: {integrity: 
sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /decode-uri-component@0.2.2:
+    resolution: {integrity: 
sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+    engines: {node: '>=0.10'}
+    dev: true
+
+  /detect-libc@1.0.3:
+    resolution: {integrity: 
sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
+    engines: {node: '>=0.10'}
+    hasBin: true
+    dev: true
+
+  /detect-libc@2.0.2:
+    resolution: {integrity: 
sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /dom-serializer@1.4.1:
+    resolution: {integrity: 
sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
+    dependencies:
+      domelementtype: 2.3.0
+      domhandler: 4.3.1
+      entities: 2.2.0
+    dev: true
+
+  /domelementtype@2.3.0:
+    resolution: {integrity: 
sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+    dev: true
+
+  /domhandler@4.3.1:
+    resolution: {integrity: 
sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
+    engines: {node: '>= 4'}
+    dependencies:
+      domelementtype: 2.3.0
+    dev: true
+
+  /domutils@2.8.0:
+    resolution: {integrity: 
sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
+    dependencies:
+      dom-serializer: 1.4.1
+      domelementtype: 2.3.0
+      domhandler: 4.3.1
+    dev: true
+
+  /dotenv-expand@5.1.0:
+    resolution: {integrity: 
sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==}
+    dev: true
+
+  /dotenv@7.0.0:
+    resolution: {integrity: 
sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /electron-to-chromium@1.4.681:
+    resolution: {integrity: 
sha512-1PpuqJUFWoXZ1E54m8bsLPVYwIVCRzvaL+n5cjigGga4z854abDnFRc+cTa2th4S79kyGqya/1xoR7h+Y5G5lg==}
+    dev: true
+
+  /emoji-regex@8.0.0:
+    resolution: {integrity: 
sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+    dev: true
+
+  /entities@2.2.0:
+    resolution: {integrity: 
sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
+    dev: true
+
+  /entities@3.0.1:
+    resolution: {integrity: 
sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
+    engines: {node: '>=0.12'}
+    dev: true
+
+  /error-ex@1.3.2:
+    resolution: {integrity: 
sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+    dependencies:
+      is-arrayish: 0.2.1
+    dev: true
+
+  /escalade@3.1.2:
+    resolution: {integrity: 
sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /escape-string-regexp@1.0.5:
+    resolution: {integrity: 
sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+    engines: {node: '>=0.8.0'}
+    dev: true
+
+  /execa@0.7.0:
+    resolution: {integrity: 
sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==}
+    engines: {node: '>=4'}
+    dependencies:
+      cross-spawn: 5.1.0
+      get-stream: 3.0.0
+      is-stream: 1.1.0
+      npm-run-path: 2.0.2
+      p-finally: 1.0.0
+      signal-exit: 3.0.7
+      strip-eof: 1.0.0
+    dev: true
+
+  /fill-range@7.0.1:
+    resolution: {integrity: 
sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+    engines: {node: '>=8'}
+    dependencies:
+      to-regex-range: 5.0.1
+    dev: true
+
+  /find-up@2.1.0:
+    resolution: {integrity: 
sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==}
+    engines: {node: '>=4'}
+    dependencies:
+      locate-path: 2.0.0
+    dev: true
+
+  /fs.realpath@1.0.0:
+    resolution: {integrity: 
sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+    dev: true
+
+  /fsevents@2.3.3:
+    resolution: {integrity: 
sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /function-bind@1.1.2:
+    resolution: {integrity: 
sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+    dev: true
+
+  /get-caller-file@1.0.3:
+    resolution: {integrity: 
sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==}
+    dev: true
+
+  /get-port@4.2.0:
+    resolution: {integrity: 
sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==}
+    engines: {node: '>=6'}
+    dev: true
+
+  /get-stream@3.0.0:
+    resolution: {integrity: 
sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /glob-parent@5.1.2:
+    resolution: {integrity: 
sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+    engines: {node: '>= 6'}
+    dependencies:
+      is-glob: 4.0.3
+    dev: true
+
+  /glob@7.2.3:
+    resolution: {integrity: 
sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+    dependencies:
+      fs.realpath: 1.0.0
+      inflight: 1.0.6
+      inherits: 2.0.4
+      minimatch: 3.1.2
+      once: 1.4.0
+      path-is-absolute: 1.0.1
+    dev: true
+
+  /globals@13.24.0:
+    resolution: {integrity: 
sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+    engines: {node: '>=8'}
+    dependencies:
+      type-fest: 0.20.2
+    dev: true
+
+  /graceful-fs@4.2.11:
+    resolution: {integrity: 
sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+    dev: true
+
+  /has-flag@3.0.0:
+    resolution: {integrity: 
sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /has-flag@4.0.0:
+    resolution: {integrity: 
sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /hasown@2.0.1:
+    resolution: {integrity: 
sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==}
+    engines: {node: '>= 0.4'}
+    dependencies:
+      function-bind: 1.1.2
+    dev: true
+
+  /hosted-git-info@2.8.9:
+    resolution: {integrity: 
sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+    dev: true
+
+  /htmlnano@2.1.0(svgo@2.8.0):
+    resolution: {integrity: 
sha512-jVGRE0Ep9byMBKEu0Vxgl8dhXYOUk0iNQ2pjsG+BcRB0u0oDF5A9p/iBGMg/PGKYUyMD0OAGu8dVT5Lzj8S58g==}
+    peerDependencies:
+      cssnano: ^6.0.0
+      postcss: ^8.3.11
+      purgecss: ^5.0.0
+      relateurl: ^0.2.7
+      srcset: 4.0.0
+      svgo: ^3.0.2
+      terser: ^5.10.0
+      uncss: ^0.17.3
+    peerDependenciesMeta:
+      cssnano:
+        optional: true
+      postcss:
+        optional: true
+      purgecss:
+        optional: true
+      relateurl:
+        optional: true
+      srcset:
+        optional: true
+      svgo:
+        optional: true
+      terser:
+        optional: true
+      uncss:
+        optional: true
+    dependencies:
+      cosmiconfig: 8.3.6
+      posthtml: 0.16.6
+      svgo: 2.8.0
+      timsort: 0.3.0
+    transitivePeerDependencies:
+      - typescript
+    dev: true
+
+  /htmlparser2@7.2.0:
+    resolution: {integrity: 
sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==}
+    dependencies:
+      domelementtype: 2.3.0
+      domhandler: 4.3.1
+      domutils: 2.8.0
+      entities: 3.0.1
+    dev: true
+
+  /immutable@4.3.5:
+    resolution: {integrity: 
sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==}
+    dev: true
+
+  /import-fresh@3.3.0:
+    resolution: {integrity: 
sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+    engines: {node: '>=6'}
+    dependencies:
+      parent-module: 1.0.1
+      resolve-from: 4.0.0
+    dev: true
+
+  /inflight@1.0.6:
+    resolution: {integrity: 
sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+    dependencies:
+      once: 1.4.0
+      wrappy: 1.0.2
+    dev: true
+
+  /inherits@2.0.4:
+    resolution: {integrity: 
sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+    dev: true
+
+  /invert-kv@1.0.0:
+    resolution: {integrity: 
sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /is-arrayish@0.2.1:
+    resolution: {integrity: 
sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+    dev: true
+
+  /is-binary-path@2.1.0:
+    resolution: {integrity: 
sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+    engines: {node: '>=8'}
+    dependencies:
+      binary-extensions: 2.2.0
+    dev: true
+
+  /is-core-module@2.13.1:
+    resolution: {integrity: 
sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+    dependencies:
+      hasown: 2.0.1
+    dev: true
+
+  /is-extglob@2.1.1:
+    resolution: {integrity: 
sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /is-fullwidth-code-point@1.0.0:
+    resolution: {integrity: 
sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      number-is-nan: 1.0.1
+    dev: true
+
+  /is-fullwidth-code-point@2.0.0:
+    resolution: {integrity: 
sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /is-fullwidth-code-point@3.0.0:
+    resolution: {integrity: 
sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /is-glob@4.0.3:
+    resolution: {integrity: 
sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      is-extglob: 2.1.1
+    dev: true
+
+  /is-json@2.0.1:
+    resolution: {integrity: 
sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==}
+    dev: true
+
+  /is-number@7.0.0:
+    resolution: {integrity: 
sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+    engines: {node: '>=0.12.0'}
+    dev: true
+
+  /is-stream@1.1.0:
+    resolution: {integrity: 
sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /isexe@2.0.0:
+    resolution: {integrity: 
sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+    dev: true
+
+  /js-tokens@4.0.0:
+    resolution: {integrity: 
sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+    dev: true
+
+  /js-yaml@4.1.0:
+    resolution: {integrity: 
sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+    hasBin: true
+    dependencies:
+      argparse: 2.0.1
+    dev: true
+
+  /json-parse-even-better-errors@2.3.1:
+    resolution: {integrity: 
sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+    dev: true
+
+  /json5@2.2.3:
+    resolution: {integrity: 
sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+    engines: {node: '>=6'}
+    hasBin: true
+    dev: true
+
+  /lcid@1.0.0:
+    resolution: {integrity: 
sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      invert-kv: 1.0.0
+    dev: true
+
+  /lightningcss-darwin-arm64@1.24.0:
+    resolution: {integrity: 
sha512-rTNPkEiynOu4CfGdd5ZfVOQe2gd2idfQd4EfX1l2ZUUwd+2SwSdbb7cG4rlwfnZckbzCAygm85xkpekRE5/wFw==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss-darwin-x64@1.24.0:
+    resolution: {integrity: 
sha512-4KCeF2RJjzp9xdGY8zIH68CUtptEg8uz8PfkHvsIdrP4t9t5CIgfDBhiB8AmuO75N6SofdmZexDZIKdy9vA7Ww==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [darwin]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss-freebsd-x64@1.24.0:
+    resolution: {integrity: 
sha512-FJAYlek1wXuVTsncNU0C6YD41q126dXcIUm97KAccMn9C4s/JfLSqGWT2gIzAblavPFkyGG2gIADTWp3uWfN1g==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [freebsd]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss-linux-arm-gnueabihf@1.24.0:
+    resolution: {integrity: 
sha512-N55K6JqzMx7C0hYUu1YmWqhkHwzEJlkQRMA6phY65noO0I1LOAvP4wBIoFWrzRE+O6zL0RmXJ2xppqyTbk3sYw==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss-linux-arm64-gnu@1.24.0:
+    resolution: {integrity: 
sha512-MqqUB2TpYtFWeBvvf5KExDdClU3YGLW5bHKs50uKKootcvG9KoS7wYwd5UichS+W3mYLc5yXUPGD1DNWbLiYKw==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss-linux-arm64-musl@1.24.0:
+    resolution: {integrity: 
sha512-5wn4d9tFwa5bS1ao9mLexYVJdh3nn09HNIipsII6ZF7z9ZA5J4dOEhMgKoeCl891axTGTUYd8Kxn+Hn3XUSYRQ==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss-linux-x64-gnu@1.24.0:
+    resolution: {integrity: 
sha512-3j5MdTh+LSDF3o6uDwRjRUgw4J+IfDCVtdkUrJvKxL79qBLUujXY7CTe5X3IQDDLKEe/3wu49r8JKgxr0MfjbQ==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss-linux-x64-musl@1.24.0:
+    resolution: {integrity: 
sha512-HI+rNnvaLz0o36z6Ki0gyG5igVGrJmzczxA5fznr6eFTj3cHORoR/j2q8ivMzNFR4UKJDkTWUH5LMhacwOHWBA==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [linux]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss-win32-x64-msvc@1.24.0:
+    resolution: {integrity: 
sha512-oeije/t7OZ5N9vSs6amyW/34wIYoBCpE6HUlsSKcP2SR1CVgx9oKEM00GtQmtqNnYiMIfsSm7+ppMb4NLtD5vg==}
+    engines: {node: '>= 12.0.0'}
+    cpu: [x64]
+    os: [win32]
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /lightningcss@1.24.0:
+    resolution: {integrity: 
sha512-y36QEEDVx4IM7/yIZNsZJMRREIu26WzTsauIysf5s76YeCmlSbRZS7aC97IGPuoFRnyZ5Wx43OBsQBFB5Ne7ng==}
+    engines: {node: '>= 12.0.0'}
+    dependencies:
+      detect-libc: 1.0.3
+    optionalDependencies:
+      lightningcss-darwin-arm64: 1.24.0
+      lightningcss-darwin-x64: 1.24.0
+      lightningcss-freebsd-x64: 1.24.0
+      lightningcss-linux-arm-gnueabihf: 1.24.0
+      lightningcss-linux-arm64-gnu: 1.24.0
+      lightningcss-linux-arm64-musl: 1.24.0
+      lightningcss-linux-x64-gnu: 1.24.0
+      lightningcss-linux-x64-musl: 1.24.0
+      lightningcss-win32-x64-msvc: 1.24.0
+    dev: true
+
+  /lines-and-columns@1.2.4:
+    resolution: {integrity: 
sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+    dev: true
+
+  /lmdb@2.8.5:
+    resolution: {integrity: 
sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==}
+    hasBin: true
+    requiresBuild: true
+    dependencies:
+      msgpackr: 1.10.1
+      node-addon-api: 6.1.0
+      node-gyp-build-optional-packages: 5.1.1
+      ordered-binary: 1.5.1
+      weak-lru-cache: 1.2.2
+    optionalDependencies:
+      '@lmdb/lmdb-darwin-arm64': 2.8.5
+      '@lmdb/lmdb-darwin-x64': 2.8.5
+      '@lmdb/lmdb-linux-arm': 2.8.5
+      '@lmdb/lmdb-linux-arm64': 2.8.5
+      '@lmdb/lmdb-linux-x64': 2.8.5
+      '@lmdb/lmdb-win32-x64': 2.8.5
+    dev: true
+
+  /load-json-file@2.0.0:
+    resolution: {integrity: 
sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==}
+    engines: {node: '>=4'}
+    dependencies:
+      graceful-fs: 4.2.11
+      parse-json: 2.2.0
+      pify: 2.3.0
+      strip-bom: 3.0.0
+    dev: true
+
+  /locate-path@2.0.0:
+    resolution: {integrity: 
sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==}
+    engines: {node: '>=4'}
+    dependencies:
+      p-locate: 2.0.0
+      path-exists: 3.0.0
+    dev: true
+
+  /lru-cache@4.1.5:
+    resolution: {integrity: 
sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
+    dependencies:
+      pseudomap: 1.0.2
+      yallist: 2.1.2
+    dev: true
+
+  /lru-cache@6.0.0:
+    resolution: {integrity: 
sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+    engines: {node: '>=10'}
+    dependencies:
+      yallist: 4.0.0
+    dev: true
+
+  /mdn-data@2.0.14:
+    resolution: {integrity: 
sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
+    dev: true
+
+  /mem@1.1.0:
+    resolution: {integrity: 
sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ==}
+    engines: {node: '>=4'}
+    dependencies:
+      mimic-fn: 1.2.0
+    dev: true
+
+  /micromatch@4.0.5:
+    resolution: {integrity: 
sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+    engines: {node: '>=8.6'}
+    dependencies:
+      braces: 3.0.2
+      picomatch: 2.3.1
+    dev: true
+
+  /mimic-fn@1.2.0:
+    resolution: {integrity: 
sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /minimatch@3.1.2:
+    resolution: {integrity: 
sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+    dependencies:
+      brace-expansion: 1.1.11
+    dev: true
+
+  /msgpackr-extract@3.0.2:
+    resolution: {integrity: 
sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==}
+    hasBin: true
+    requiresBuild: true
+    dependencies:
+      node-gyp-build-optional-packages: 5.0.7
+    optionalDependencies:
+      '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.2
+      '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.2
+      '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.2
+      '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.2
+      '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.2
+      '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.2
+    dev: true
+    optional: true
+
+  /msgpackr@1.10.1:
+    resolution: {integrity: 
sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ==}
+    optionalDependencies:
+      msgpackr-extract: 3.0.2
+    dev: true
+
+  /node-addon-api@6.1.0:
+    resolution: {integrity: 
sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
+    dev: true
+
+  /node-addon-api@7.1.0:
+    resolution: {integrity: 
sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==}
+    engines: {node: ^16 || ^18 || >= 20}
+    dev: true
+
+  /node-gyp-build-optional-packages@5.0.7:
+    resolution: {integrity: 
sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==}
+    hasBin: true
+    requiresBuild: true
+    dev: true
+    optional: true
+
+  /node-gyp-build-optional-packages@5.1.1:
+    resolution: {integrity: 
sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==}
+    hasBin: true
+    dependencies:
+      detect-libc: 2.0.2
+    dev: true
+
+  /node-releases@2.0.14:
+    resolution: {integrity: 
sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
+    dev: true
+
+  /normalize-package-data@2.5.0:
+    resolution: {integrity: 
sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+    dependencies:
+      hosted-git-info: 2.8.9
+      resolve: 1.22.8
+      semver: 5.7.2
+      validate-npm-package-license: 3.0.4
+    dev: true
+
+  /normalize-path@3.0.0:
+    resolution: {integrity: 
sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /npm-run-path@2.0.2:
+    resolution: {integrity: 
sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==}
+    engines: {node: '>=4'}
+    dependencies:
+      path-key: 2.0.1
+    dev: true
+
+  /nth-check@2.1.1:
+    resolution: {integrity: 
sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+    dependencies:
+      boolbase: 1.0.0
+    dev: true
+
+  /nullthrows@1.1.1:
+    resolution: {integrity: 
sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==}
+    dev: true
+
+  /number-is-nan@1.0.1:
+    resolution: {integrity: 
sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /once@1.4.0:
+    resolution: {integrity: 
sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+    dependencies:
+      wrappy: 1.0.2
+    dev: true
+
+  /ordered-binary@1.5.1:
+    resolution: {integrity: 
sha512-5VyHfHY3cd0iza71JepYG50My+YUbrFtGoUz2ooEydPyPM7Aai/JW098juLr+RG6+rDJuzNNTsEQu2DZa1A41A==}
+    dev: true
+
+  /os-locale@2.1.0:
+    resolution: {integrity: 
sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==}
+    engines: {node: '>=4'}
+    dependencies:
+      execa: 0.7.0
+      lcid: 1.0.0
+      mem: 1.1.0
+    dev: true
+
+  /p-finally@1.0.0:
+    resolution: {integrity: 
sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /p-limit@1.3.0:
+    resolution: {integrity: 
sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==}
+    engines: {node: '>=4'}
+    dependencies:
+      p-try: 1.0.0
+    dev: true
+
+  /p-locate@2.0.0:
+    resolution: {integrity: 
sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==}
+    engines: {node: '>=4'}
+    dependencies:
+      p-limit: 1.3.0
+    dev: true
+
+  /p-try@1.0.0:
+    resolution: {integrity: 
sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /parcel@2.11.0:
+    resolution: {integrity: 
sha512-H/RI1/DmuOkL8RuG/EpNPvtzrbF+7jA/R56ydEEm+lqFbYktKB4COR7JXdHkZXRgbSJyimrFB8d0r9+SaRnj0Q==}
+    engines: {node: '>= 12.0.0'}
+    hasBin: true
+    dependencies:
+      '@parcel/config-default': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/core': 2.11.0
+      '@parcel/diagnostic': 2.11.0
+      '@parcel/events': 2.11.0
+      '@parcel/fs': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/logger': 2.11.0
+      '@parcel/package-manager': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/reporter-cli': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/reporter-dev-server': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/reporter-tracer': 2.11.0(@parcel/core@2.11.0)
+      '@parcel/utils': 2.11.0
+      chalk: 4.1.2
+      commander: 7.2.0
+      get-port: 4.2.0
+    transitivePeerDependencies:
+      - '@swc/helpers'
+      - cssnano
+      - postcss
+      - purgecss
+      - relateurl
+      - srcset
+      - terser
+      - typescript
+      - uncss
+    dev: true
+
+  /parent-module@1.0.1:
+    resolution: {integrity: 
sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+    engines: {node: '>=6'}
+    dependencies:
+      callsites: 3.1.0
+    dev: true
+
+  /parse-json@2.2.0:
+    resolution: {integrity: 
sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      error-ex: 1.3.2
+    dev: true
+
+  /parse-json@5.2.0:
+    resolution: {integrity: 
sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+    engines: {node: '>=8'}
+    dependencies:
+      '@babel/code-frame': 7.23.5
+      error-ex: 1.3.2
+      json-parse-even-better-errors: 2.3.1
+      lines-and-columns: 1.2.4
+    dev: true
+
+  /path-exists@3.0.0:
+    resolution: {integrity: 
sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /path-is-absolute@1.0.1:
+    resolution: {integrity: 
sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /path-key@2.0.1:
+    resolution: {integrity: 
sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /path-parse@1.0.7:
+    resolution: {integrity: 
sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+    dev: true
+
+  /path-type@2.0.0:
+    resolution: {integrity: 
sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==}
+    engines: {node: '>=4'}
+    dependencies:
+      pify: 2.3.0
+    dev: true
+
+  /path-type@4.0.0:
+    resolution: {integrity: 
sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /picocolors@1.0.0:
+    resolution: {integrity: 
sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+    dev: true
+
+  /picomatch@2.3.1:
+    resolution: {integrity: 
sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+    engines: {node: '>=8.6'}
+    dev: true
+
+  /pify@2.3.0:
+    resolution: {integrity: 
sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /postcss-value-parser@4.2.0:
+    resolution: {integrity: 
sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+    dev: true
+
+  /posthtml-parser@0.10.2:
+    resolution: {integrity: 
sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==}
+    engines: {node: '>=12'}
+    dependencies:
+      htmlparser2: 7.2.0
+    dev: true
+
+  /posthtml-parser@0.11.0:
+    resolution: {integrity: 
sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==}
+    engines: {node: '>=12'}
+    dependencies:
+      htmlparser2: 7.2.0
+    dev: true
+
+  /posthtml-render@3.0.0:
+    resolution: {integrity: 
sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==}
+    engines: {node: '>=12'}
+    dependencies:
+      is-json: 2.0.1
+    dev: true
+
+  /posthtml@0.16.6:
+    resolution: {integrity: 
sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==}
+    engines: {node: '>=12.0.0'}
+    dependencies:
+      posthtml-parser: 0.11.0
+      posthtml-render: 3.0.0
+    dev: true
+
+  /pseudomap@1.0.2:
+    resolution: {integrity: 
sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
+    dev: true
+
+  /purify-css@1.2.5:
+    resolution: {integrity: 
sha512-Vy4jRnV2w/kUjTyxzQOKbFkqwUe6RNLuZgIWR/IRQ8nCqRwiFgwC9XiO9+8poq5KL053uWAQnCSbsfihq77zPg==}
+    hasBin: true
+    dependencies:
+      clean-css: 4.2.4
+      glob: 7.2.3
+      rework: 1.0.1
+      uglify-js: 3.17.4
+      yargs: 8.0.2
+    dev: true
+
+  /react-error-overlay@6.0.9:
+    resolution: {integrity: 
sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==}
+    dev: true
+
+  /react-refresh@0.9.0:
+    resolution: {integrity: 
sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /read-pkg-up@2.0.0:
+    resolution: {integrity: 
sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==}
+    engines: {node: '>=4'}
+    dependencies:
+      find-up: 2.1.0
+      read-pkg: 2.0.0
+    dev: true
+
+  /read-pkg@2.0.0:
+    resolution: {integrity: 
sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==}
+    engines: {node: '>=4'}
+    dependencies:
+      load-json-file: 2.0.0
+      normalize-package-data: 2.5.0
+      path-type: 2.0.0
+    dev: true
+
+  /readdirp@3.6.0:
+    resolution: {integrity: 
sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+    engines: {node: '>=8.10.0'}
+    dependencies:
+      picomatch: 2.3.1
+    dev: true
+
+  /regenerator-runtime@0.13.11:
+    resolution: {integrity: 
sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
+    dev: true
+
+  /require-directory@2.1.1:
+    resolution: {integrity: 
sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /require-main-filename@1.0.1:
+    resolution: {integrity: 
sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==}
+    dev: true
+
+  /resolve-from@4.0.0:
+    resolution: {integrity: 
sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /resolve-url@0.2.1:
+    resolution: {integrity: 
sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
+    deprecated: https://github.com/lydell/resolve-url#deprecated
+    dev: true
+
+  /resolve@1.22.8:
+    resolution: {integrity: 
sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+    hasBin: true
+    dependencies:
+      is-core-module: 2.13.1
+      path-parse: 1.0.7
+      supports-preserve-symlinks-flag: 1.0.0
+    dev: true
+
+  /rework@1.0.1:
+    resolution: {integrity: 
sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==}
+    dependencies:
+      convert-source-map: 0.3.5
+      css: 2.2.4
+    dev: true
+
+  /safe-buffer@5.2.1:
+    resolution: {integrity: 
sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+    dev: true
+
+  /sass@1.71.1:
+    resolution: {integrity: 
sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==}
+    engines: {node: '>=14.0.0'}
+    hasBin: true
+    dependencies:
+      chokidar: 3.6.0
+      immutable: 4.3.5
+      source-map-js: 1.0.2
+    dev: true
+
+  /semver@5.7.2:
+    resolution: {integrity: 
sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+    hasBin: true
+    dev: true
+
+  /semver@7.6.0:
+    resolution: {integrity: 
sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
+    engines: {node: '>=10'}
+    hasBin: true
+    dependencies:
+      lru-cache: 6.0.0
+    dev: true
+
+  /set-blocking@2.0.0:
+    resolution: {integrity: 
sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+    dev: true
+
+  /shebang-command@1.2.0:
+    resolution: {integrity: 
sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      shebang-regex: 1.0.0
+    dev: true
+
+  /shebang-regex@1.0.0:
+    resolution: {integrity: 
sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /signal-exit@3.0.7:
+    resolution: {integrity: 
sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+    dev: true
+
+  /source-map-js@1.0.2:
+    resolution: {integrity: 
sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /source-map-resolve@0.5.3:
+    resolution: {integrity: 
sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
+    deprecated: See https://github.com/lydell/source-map-resolve#deprecated
+    dependencies:
+      atob: 2.1.2
+      decode-uri-component: 0.2.2
+      resolve-url: 0.2.1
+      source-map-url: 0.4.1
+      urix: 0.1.0
+    dev: true
+
+  /source-map-url@0.4.1:
+    resolution: {integrity: 
sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
+    deprecated: See https://github.com/lydell/source-map-url#deprecated
+    dev: true
+
+  /source-map@0.6.1:
+    resolution: {integrity: 
sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /spdx-correct@3.2.0:
+    resolution: {integrity: 
sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+    dependencies:
+      spdx-expression-parse: 3.0.1
+      spdx-license-ids: 3.0.17
+    dev: true
+
+  /spdx-exceptions@2.5.0:
+    resolution: {integrity: 
sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+    dev: true
+
+  /spdx-expression-parse@3.0.1:
+    resolution: {integrity: 
sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+    dependencies:
+      spdx-exceptions: 2.5.0
+      spdx-license-ids: 3.0.17
+    dev: true
+
+  /spdx-license-ids@3.0.17:
+    resolution: {integrity: 
sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
+    dev: true
+
+  /srcset@4.0.0:
+    resolution: {integrity: 
sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==}
+    engines: {node: '>=12'}
+    dev: true
+
+  /stable@0.1.8:
+    resolution: {integrity: 
sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
+    deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, 
so this library is deprecated. See the compatibility table on MDN: 
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
+    dev: true
+
+  /string-width@1.0.2:
+    resolution: {integrity: 
sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      code-point-at: 1.1.0
+      is-fullwidth-code-point: 1.0.0
+      strip-ansi: 3.0.1
+    dev: true
+
+  /string-width@2.1.1:
+    resolution: {integrity: 
sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==}
+    engines: {node: '>=4'}
+    dependencies:
+      is-fullwidth-code-point: 2.0.0
+      strip-ansi: 4.0.0
+    dev: true
+
+  /string-width@4.2.3:
+    resolution: {integrity: 
sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+    engines: {node: '>=8'}
+    dependencies:
+      emoji-regex: 8.0.0
+      is-fullwidth-code-point: 3.0.0
+      strip-ansi: 6.0.1
+    dev: true
+
+  /strip-ansi@3.0.1:
+    resolution: {integrity: 
sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      ansi-regex: 2.1.1
+    dev: true
+
+  /strip-ansi@4.0.0:
+    resolution: {integrity: 
sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
+    engines: {node: '>=4'}
+    dependencies:
+      ansi-regex: 3.0.1
+    dev: true
+
+  /strip-ansi@6.0.1:
+    resolution: {integrity: 
sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+    engines: {node: '>=8'}
+    dependencies:
+      ansi-regex: 5.0.1
+    dev: true
+
+  /strip-bom@3.0.0:
+    resolution: {integrity: 
sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+    engines: {node: '>=4'}
+    dev: true
+
+  /strip-eof@1.0.0:
+    resolution: {integrity: 
sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
+  /supports-color@5.5.0:
+    resolution: {integrity: 
sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+    engines: {node: '>=4'}
+    dependencies:
+      has-flag: 3.0.0
+    dev: true
+
+  /supports-color@7.2.0:
+    resolution: {integrity: 
sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+    engines: {node: '>=8'}
+    dependencies:
+      has-flag: 4.0.0
+    dev: true
+
+  /supports-preserve-symlinks-flag@1.0.0:
+    resolution: {integrity: 
sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+    engines: {node: '>= 0.4'}
+    dev: true
+
+  /svgo@2.8.0:
+    resolution: {integrity: 
sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
+    engines: {node: '>=10.13.0'}
+    hasBin: true
+    dependencies:
+      '@trysound/sax': 0.2.0
+      commander: 7.2.0
+      css-select: 4.3.0
+      css-tree: 1.1.3
+      csso: 4.2.0
+      picocolors: 1.0.0
+      stable: 0.1.8
+    dev: true
+
+  /term-size@2.2.1:
+    resolution: {integrity: 
sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
+    engines: {node: '>=8'}
+    dev: true
+
+  /timsort@0.3.0:
+    resolution: {integrity: 
sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==}
+    dev: true
+
+  /to-regex-range@5.0.1:
+    resolution: {integrity: 
sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+    engines: {node: '>=8.0'}
+    dependencies:
+      is-number: 7.0.0
+    dev: true
+
+  /tslib@2.6.2:
+    resolution: {integrity: 
sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
+    dev: true
+
+  /type-fest@0.20.2:
+    resolution: {integrity: 
sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+    engines: {node: '>=10'}
+    dev: true
+
+  /uglify-js@3.17.4:
+    resolution: {integrity: 
sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
+    engines: {node: '>=0.8.0'}
+    hasBin: true
+    dev: true
+
+  /update-browserslist-db@1.0.13(browserslist@4.23.0):
+    resolution: {integrity: 
sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+    hasBin: true
+    peerDependencies:
+      browserslist: '>= 4.21.0'
+    dependencies:
+      browserslist: 4.23.0
+      escalade: 3.1.2
+      picocolors: 1.0.0
+    dev: true
+
+  /urix@0.1.0:
+    resolution: {integrity: 
sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
+    deprecated: Please see https://github.com/lydell/urix#deprecated
+    dev: true
+
+  /utility-types@3.11.0:
+    resolution: {integrity: 
sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==}
+    engines: {node: '>= 4'}
+    dev: true
+
+  /validate-npm-package-license@3.0.4:
+    resolution: {integrity: 
sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+    dependencies:
+      spdx-correct: 3.2.0
+      spdx-expression-parse: 3.0.1
+    dev: true
+
+  /weak-lru-cache@1.2.2:
+    resolution: {integrity: 
sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==}
+    dev: true
+
+  /which-module@2.0.1:
+    resolution: {integrity: 
sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+    dev: true
+
+  /which@1.3.1:
+    resolution: {integrity: 
sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+    hasBin: true
+    dependencies:
+      isexe: 2.0.0
+    dev: true
+
+  /wrap-ansi@2.1.0:
+    resolution: {integrity: 
sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==}
+    engines: {node: '>=0.10.0'}
+    dependencies:
+      string-width: 1.0.2
+      strip-ansi: 3.0.1
+    dev: true
+
+  /wrappy@1.0.2:
+    resolution: {integrity: 
sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+    dev: true
+
+  /y18n@3.2.2:
+    resolution: {integrity: 
sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==}
+    dev: true
+
+  /yallist@2.1.2:
+    resolution: {integrity: 
sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
+    dev: true
+
+  /yallist@4.0.0:
+    resolution: {integrity: 
sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+    dev: true
+
+  /yargs-parser@7.0.0:
+    resolution: {integrity: 
sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==}
+    dependencies:
+      camelcase: 4.1.0
+    dev: true
+
+  /yargs@8.0.2:
+    resolution: {integrity: 
sha512-3RiZrpLpjrzIAKgGdPktBcMP/eG5bDFlkI+PHle1qwzyVXyDQL+pD/eZaMoOOO0Y7LLBfjpucObuUm/icvbpKQ==}
+    dependencies:
+      camelcase: 4.1.0
+      cliui: 3.2.0
+      decamelize: 1.2.0
+      get-caller-file: 1.0.3
+      os-locale: 2.1.0
+      read-pkg-up: 2.0.0
+      require-directory: 2.1.1
+      require-main-filename: 1.0.1
+      set-blocking: 2.0.0
+      string-width: 2.1.1
+      which-module: 2.0.1
+      y18n: 3.2.2
+      yargs-parser: 7.0.0
     dev: true
diff --git a/static/favicon.png b/static/favicon.png
new file mode 100644
index 0000000..92c26d9
Binary files /dev/null and b/static/favicon.png differ
diff --git a/static/images/favicon.ico b/static/images/favicon.ico
new file mode 120000
index 0000000..cf3a36c
--- /dev/null
+++ b/static/images/favicon.ico
@@ -0,0 +1 @@
+../favicon.ico
\ No newline at end of file
diff --git a/static/images/favicon.png b/static/images/favicon.png
new file mode 120000
index 0000000..4a40dca
--- /dev/null
+++ b/static/images/favicon.png
@@ -0,0 +1 @@
+../favicon.png
\ No newline at end of file
diff --git a/static/js/bootstrap.js b/static/js/bootstrap.js
deleted file mode 100644
index b3b85a6..0000000
--- a/static/js/bootstrap.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
-  * Bootstrap v4.5.2 (https://getbootstrap.com/)
-  * Copyright 2011-2020 The Bootstrap Authors 
(https://github.com/twbs/bootstrap/graphs/contributors)
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
-  */
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof 
module?e(exports,require("jquery"),require("popper.js")):"function"==typeof 
define&&define.amd?define(["exports","jquery","popper.js"],e):e((t="undefined"!=typeof
 
globalThis?globalThis:t||self).bootstrap={},t.jQuery,t.Popper)}(this,(function(t,e,n){"use
 strict";function i(t,e){for(var n=0;n<e.length;n++){var 
i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in 
i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}fun [...]
diff --git a/static/js/carouselscript.js b/static/js/carouselscript.js
deleted file mode 100644
index ca1ed04..0000000
--- a/static/js/carouselscript.js
+++ /dev/null
@@ -1,53 +0,0 @@
-$(document).ready(function() {
-    $(".insitab a").click(function(event) {
-        event.preventDefault();
-        $(this).parent().addClass("current");
-        $(this).parent().siblings().removeClass("current");;
-        var tab = $(this).attr("href");
-        $(".insignblogtbCont").not(tab).css("display", "none");
-        $(tab).fadeIn();
-    });
-});
-
-
-
-
-$('.carousel').carousel({
-  interval: 5000,
-  pause: "false"
-});
-
-$(".navbar-toggler").click(function(){
-  $(".navbar-toggler").toggleClass("showtoggle");
-});    
-
-  // Helper function for add element box list in WOW
-  WOW.prototype.addBox = function(element) {
-    this.boxes.push(element);
-  };
-
-  // Init WOW.js and get instance
-  var wow = new WOW();
-  wow.init();
-
-  // Attach scrollSpy to .wow elements for detect view exit events,
-  // then reset elements and add again for animation
-  $('.wow').on('scrollSpy:exit', function() {
-    $(this).css({
-      'visibility': 'hidden',
-      'animation-name': 'none'
-    }).removeClass('animated');
-    wow.addBox(this);
-  }).scrollSpy();
-
-
-       $(document).ready(function(){
-       $('#open').click(function(){
-       $('#hide').slideToggle();
-       });
-       
-       });
-
-
-
-
diff --git a/static/js/owl.carousel.js b/static/js/owl.carousel.js
deleted file mode 100644
index 62b204c..0000000
--- a/static/js/owl.carousel.js
+++ /dev/null
@@ -1,3275 +0,0 @@
-/**
- * Owl Carousel v2.2.0
- * Copyright 2013-2016 David Deutsch
- * Licensed under MIT 
(https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
- */
-/**
- * Owl carousel
- * @version 2.1.6
- * @author Bartosz Wojciechowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- * @todo Lazy Load Icon
- * @todo prevent animationend bubling
- * @todo itemsScaleUp
- * @todo Test Zepto
- * @todo stagePadding calculate wrong active classes
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates a carousel.
-        * @class The Owl Carousel.
-        * @public
-        * @param {HTMLElement|jQuery} element - The element to create the 
carousel for.
-        * @param {Object} [options] - The options
-        */
-       function Owl(element, options) {
-
-               /**
-                * Current settings for the carousel.
-                * @public
-                */
-               this.settings = null;
-
-               /**
-                * Current options set by the caller including defaults.
-                * @public
-                */
-               this.options = $.extend({}, Owl.Defaults, options);
-
-               /**
-                * Plugin element.
-                * @public
-                */
-               this.$element = $(element);
-
-               /**
-                * Proxied event handlers.
-                * @protected
-                */
-               this._handlers = {};
-
-               /**
-                * References to the running plugins of this carousel.
-                * @protected
-                */
-               this._plugins = {};
-
-               /**
-                * Currently suppressed events to prevent them from beeing 
retriggered.
-                * @protected
-                */
-               this._supress = {};
-
-               /**
-                * Absolute current position.
-                * @protected
-                */
-               this._current = null;
-
-               /**
-                * Animation speed in milliseconds.
-                * @protected
-                */
-               this._speed = null;
-
-               /**
-                * Coordinates of all items in pixel.
-                * @todo The name of this member is missleading.
-                * @protected
-                */
-               this._coordinates = [];
-
-               /**
-                * Current breakpoint.
-                * @todo Real media queries would be nice.
-                * @protected
-                */
-               this._breakpoint = null;
-
-               /**
-                * Current width of the plugin element.
-                */
-               this._width = null;
-
-               /**
-                * All real items.
-                * @protected
-                */
-               this._items = [];
-
-               /**
-                * All cloned items.
-                * @protected
-                */
-               this._clones = [];
-
-               /**
-                * Merge values of all items.
-                * @todo Maybe this could be part of a plugin.
-                * @protected
-                */
-               this._mergers = [];
-
-               /**
-                * Widths of all items.
-                */
-               this._widths = [];
-
-               /**
-                * Invalidated parts within the update process.
-                * @protected
-                */
-               this._invalidated = {};
-
-               /**
-                * Ordered list of workers for the update process.
-                * @protected
-                */
-               this._pipe = [];
-
-               /**
-                * Current state information for the drag operation.
-                * @todo #261
-                * @protected
-                */
-               this._drag = {
-                       time: null,
-                       target: null,
-                       pointer: null,
-                       stage: {
-                               start: null,
-                               current: null
-                       },
-                       direction: null
-               };
-
-               /**
-                * Current state information and their tags.
-                * @type {Object}
-                * @protected
-                */
-               this._states = {
-                       current: {},
-                       tags: {
-                               'initializing': [ 'busy' ],
-                               'animating': [ 'busy' ],
-                               'dragging': [ 'interacting' ]
-                       }
-               };
-
-               $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, 
handler) {
-                       this._handlers[handler] = $.proxy(this[handler], this);
-               }, this));
-
-               $.each(Owl.Plugins, $.proxy(function(key, plugin) {
-                       this._plugins[key.charAt(0).toLowerCase() + 
key.slice(1)]
-                               = new plugin(this);
-               }, this));
-
-               $.each(Owl.Workers, $.proxy(function(priority, worker) {
-                       this._pipe.push({
-                               'filter': worker.filter,
-                               'run': $.proxy(worker.run, this)
-                       });
-               }, this));
-
-               this.setup();
-               this.initialize();
-       }
-
-       /**
-        * Default options for the carousel.
-        * @public
-        */
-       Owl.Defaults = {
-               items: 3,
-               loop: false,
-               center: false,
-               rewind: false,
-
-               mouseDrag: true,
-               touchDrag: true,
-               pullDrag: true,
-               freeDrag: false,
-
-               margin: 0,
-               stagePadding: 0,
-
-               merge: false,
-               mergeFit: true,
-               autoWidth: false,
-
-               startPosition: 0,
-               rtl: false,
-
-               smartSpeed: 250,
-               fluidSpeed: false,
-               dragEndSpeed: false,
-
-               responsive: {},
-               responsiveRefreshRate: 200,
-               responsiveBaseElement: window,
-
-               fallbackEasing: 'swing',
-
-               info: false,
-
-               nestedItemSelector: false,
-               itemElement: 'div',
-               stageElement: 'div',
-
-               refreshClass: 'owl-refresh',
-               loadedClass: 'owl-loaded',
-               loadingClass: 'owl-loading',
-               rtlClass: 'owl-rtl',
-               responsiveClass: 'owl-responsive',
-               dragClass: 'owl-drag',
-               itemClass: 'owl-item',
-               stageClass: 'owl-stage',
-               stageOuterClass: 'owl-stage-outer',
-               grabClass: 'owl-grab'
-       };
-
-       /**
-        * Enumeration for width.
-        * @public
-        * @readonly
-        * @enum {String}
-        */
-       Owl.Width = {
-               Default: 'default',
-               Inner: 'inner',
-               Outer: 'outer'
-       };
-
-       /**
-        * Enumeration for types.
-        * @public
-        * @readonly
-        * @enum {String}
-        */
-       Owl.Type = {
-               Event: 'event',
-               State: 'state'
-       };
-
-       /**
-        * Contains all registered plugins.
-        * @public
-        */
-       Owl.Plugins = {};
-
-       /**
-        * List of workers involved in the update process.
-        */
-       Owl.Workers = [ {
-               filter: [ 'width', 'settings' ],
-               run: function() {
-                       this._width = this.$element.width();
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function(cache) {
-                       cache.current = this._items && 
this._items[this.relative(this._current)];
-               }
-       }, {
-               filter: [ 'items', 'settings' ],
-               run: function() {
-                       this.$stage.children('.cloned').remove();
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function(cache) {
-                       var margin = this.settings.margin || '',
-                               grid = !this.settings.autoWidth,
-                               rtl = this.settings.rtl,
-                               css = {
-                                       'width': 'auto',
-                                       'margin-left': rtl ? margin : '',
-                                       'margin-right': rtl ? '' : margin
-                               };
-
-                       !grid && this.$stage.children().css(css);
-
-                       cache.css = css;
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function(cache) {
-                       var width = (this.width() / 
this.settings.items).toFixed(3) - this.settings.margin,
-                               merge = null,
-                               iterator = this._items.length,
-                               grid = !this.settings.autoWidth,
-                               widths = [];
-
-                       cache.items = {
-                               merge: false,
-                               width: width
-                       };
-
-                       while (iterator--) {
-                               merge = this._mergers[iterator];
-                               merge = this.settings.mergeFit && 
Math.min(merge, this.settings.items) || merge;
-
-                               cache.items.merge = merge > 1 || 
cache.items.merge;
-
-                               widths[iterator] = !grid ? 
this._items[iterator].width() : width * merge;
-                       }
-
-                       this._widths = widths;
-               }
-       }, {
-               filter: [ 'items', 'settings' ],
-               run: function() {
-                       var clones = [],
-                               items = this._items,
-                               settings = this.settings,
-                               // TODO: Should be computed from number of min 
width items in stage
-                               view = Math.max(settings.items * 2, 4),
-                               size = Math.ceil(items.length / 2) * 2,
-                               repeat = settings.loop && items.length ? 
settings.rewind ? view : Math.max(view, size) : 0,
-                               append = '',
-                               prepend = '';
-
-                       repeat /= 2;
-
-                       while (repeat--) {
-                               // Switch to only using appended clones
-                               clones.push(this.normalize(clones.length / 2, 
true));
-                               append = append + items[clones[clones.length - 
1]][0].outerHTML;
-                               clones.push(this.normalize(items.length - 1 - 
(clones.length - 1) / 2, true));
-                               prepend = items[clones[clones.length - 
1]][0].outerHTML + prepend;
-                       }
-
-                       this._clones = clones;
-
-                       $(append).addClass('cloned').appendTo(this.$stage);
-                       $(prepend).addClass('cloned').prependTo(this.$stage);
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function() {
-                       var rtl = this.settings.rtl ? 1 : -1,
-                               size = this._clones.length + this._items.length,
-                               iterator = -1,
-                               previous = 0,
-                               current = 0,
-                               coordinates = [];
-
-                       while (++iterator < size) {
-                               previous = coordinates[iterator - 1] || 0;
-                               current = this._widths[this.relative(iterator)] 
+ this.settings.margin;
-                               coordinates.push(previous + current * rtl);
-                       }
-
-                       this._coordinates = coordinates;
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function() {
-                       var padding = this.settings.stagePadding,
-                               coordinates = this._coordinates,
-                               css = {
-                                       'width': 
Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,
-                                       'padding-left': padding || '',
-                                       'padding-right': padding || ''
-                               };
-
-                       this.$stage.css(css);
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function(cache) {
-                       var iterator = this._coordinates.length,
-                               grid = !this.settings.autoWidth,
-                               items = this.$stage.children();
-
-                       if (grid && cache.items.merge) {
-                               while (iterator--) {
-                                       cache.css.width = 
this._widths[this.relative(iterator)];
-                                       items.eq(iterator).css(cache.css);
-                               }
-                       } else if (grid) {
-                               cache.css.width = cache.items.width;
-                               items.css(cache.css);
-                       }
-               }
-       }, {
-               filter: [ 'items' ],
-               run: function() {
-                       this._coordinates.length < 1 && 
this.$stage.removeAttr('style');
-               }
-       }, {
-               filter: [ 'width', 'items', 'settings' ],
-               run: function(cache) {
-                       cache.current = cache.current ? 
this.$stage.children().index(cache.current) : 0;
-                       cache.current = Math.max(this.minimum(), 
Math.min(this.maximum(), cache.current));
-                       this.reset(cache.current);
-               }
-       }, {
-               filter: [ 'position' ],
-               run: function() {
-                       this.animate(this.coordinates(this._current));
-               }
-       }, {
-               filter: [ 'width', 'position', 'items', 'settings' ],
-               run: function() {
-                       var rtl = this.settings.rtl ? 1 : -1,
-                               padding = this.settings.stagePadding * 2,
-                               begin = this.coordinates(this.current()) + 
padding,
-                               end = begin + this.width() * rtl,
-                               inner, outer, matches = [], i, n;
-
-                       for (i = 0, n = this._coordinates.length; i < n; i++) {
-                               inner = this._coordinates[i - 1] || 0;
-                               outer = Math.abs(this._coordinates[i]) + 
padding * rtl;
-
-                               if ((this.op(inner, '<=', begin) && 
(this.op(inner, '>', end)))
-                                       || (this.op(outer, '<', begin) && 
this.op(outer, '>', end))) {
-                                       matches.push(i);
-                               }
-                       }
-
-                       this.$stage.children('.active').removeClass('active');
-                       this.$stage.children(':eq(' + matches.join('), :eq(') + 
')').addClass('active');
-
-                       if (this.settings.center) {
-                               
this.$stage.children('.center').removeClass('center');
-                               
this.$stage.children().eq(this.current()).addClass('center');
-                       }
-               }
-       } ];
-
-       /**
-        * Initializes the carousel.
-        * @protected
-        */
-       Owl.prototype.initialize = function() {
-               this.enter('initializing');
-               this.trigger('initialize');
-
-               this.$element.toggleClass(this.settings.rtlClass, 
this.settings.rtl);
-
-               if (this.settings.autoWidth && !this.is('pre-loading')) {
-                       var imgs, nestedSelector, width;
-                       imgs = this.$element.find('img');
-                       nestedSelector = this.settings.nestedItemSelector ? '.' 
+ this.settings.nestedItemSelector : undefined;
-                       width = this.$element.children(nestedSelector).width();
-
-                       if (imgs.length && width <= 0) {
-                               this.preloadAutoWidthImages(imgs);
-                       }
-               }
-
-               this.$element.addClass(this.options.loadingClass);
-
-               // create stage
-               this.$stage = $('<' + this.settings.stageElement + ' class="' + 
this.settings.stageClass + '"/>')
-                       .wrap('<div class="' + this.settings.stageOuterClass + 
'"/>');
-
-               // append stage
-               this.$element.append(this.$stage.parent());
-
-               // append content
-               
this.replace(this.$element.children().not(this.$stage.parent()));
-
-               // check visibility
-               if (this.$element.is(':visible')) {
-                       // update view
-                       this.refresh();
-               } else {
-                       // invalidate width
-                       this.invalidate('width');
-               }
-
-               this.$element
-                       .removeClass(this.options.loadingClass)
-                       .addClass(this.options.loadedClass);
-
-               // register event handlers
-               this.registerEventHandlers();
-
-               this.leave('initializing');
-               this.trigger('initialized');
-       };
-
-       /**
-        * Setups the current settings.
-        * @todo Remove responsive classes. Why should adaptive designs be 
brought into IE8?
-        * @todo Support for media queries by using `matchMedia` would be nice.
-        * @public
-        */
-       Owl.prototype.setup = function() {
-               var viewport = this.viewport(),
-                       overwrites = this.options.responsive,
-                       match = -1,
-                       settings = null;
-
-               if (!overwrites) {
-                       settings = $.extend({}, this.options);
-               } else {
-                       $.each(overwrites, function(breakpoint) {
-                               if (breakpoint <= viewport && breakpoint > 
match) {
-                                       match = Number(breakpoint);
-                               }
-                       });
-
-                       settings = $.extend({}, this.options, 
overwrites[match]);
-                       if (typeof settings.stagePadding === 'function') {
-                               settings.stagePadding = settings.stagePadding();
-                       }
-                       delete settings.responsive;
-
-                       // responsive class
-                       if (settings.responsiveClass) {
-                               this.$element.attr('class',
-                                       this.$element.attr('class').replace(new 
RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match)
-                               );
-                       }
-               }
-
-               this.trigger('change', { property: { name: 'settings', value: 
settings } });
-               this._breakpoint = match;
-               this.settings = settings;
-               this.invalidate('settings');
-               this.trigger('changed', { property: { name: 'settings', value: 
this.settings } });
-       };
-
-       /**
-        * Updates option logic if necessery.
-        * @protected
-        */
-       Owl.prototype.optionsLogic = function() {
-               if (this.settings.autoWidth) {
-                       this.settings.stagePadding = false;
-                       this.settings.merge = false;
-               }
-       };
-
-       /**
-        * Prepares an item before add.
-        * @todo Rename event parameter `content` to `item`.
-        * @protected
-        * @returns {jQuery|HTMLElement} - The item container.
-        */
-       Owl.prototype.prepare = function(item) {
-               var event = this.trigger('prepare', { content: item });
-
-               if (!event.data) {
-                       event.data = $('<' + this.settings.itemElement + '/>')
-                               .addClass(this.options.itemClass).append(item)
-               }
-
-               this.trigger('prepared', { content: event.data });
-
-               return event.data;
-       };
-
-       /**
-        * Updates the view.
-        * @public
-        */
-       Owl.prototype.update = function() {
-               var i = 0,
-                       n = this._pipe.length,
-                       filter = $.proxy(function(p) { return this[p] }, 
this._invalidated),
-                       cache = {};
-
-               while (i < n) {
-                       if (this._invalidated.all || 
$.grep(this._pipe[i].filter, filter).length > 0) {
-                               this._pipe[i].run(cache);
-                       }
-                       i++;
-               }
-
-               this._invalidated = {};
-
-               !this.is('valid') && this.enter('valid');
-       };
-
-       /**
-        * Gets the width of the view.
-        * @public
-        * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to 
return.
-        * @returns {Number} - The width of the view in pixel.
-        */
-       Owl.prototype.width = function(dimension) {
-               dimension = dimension || Owl.Width.Default;
-               switch (dimension) {
-                       case Owl.Width.Inner:
-                       case Owl.Width.Outer:
-                               return this._width;
-                       default:
-                               return this._width - this.settings.stagePadding 
* 2 + this.settings.margin;
-               }
-       };
-
-       /**
-        * Refreshes the carousel primarily for adaptive purposes.
-        * @public
-        */
-       Owl.prototype.refresh = function() {
-               this.enter('refreshing');
-               this.trigger('refresh');
-
-               this.setup();
-
-               this.optionsLogic();
-
-               this.$element.addClass(this.options.refreshClass);
-
-               this.update();
-
-               this.$element.removeClass(this.options.refreshClass);
-
-               this.leave('refreshing');
-               this.trigger('refreshed');
-       };
-
-       /**
-        * Checks window `resize` event.
-        * @protected
-        */
-       Owl.prototype.onThrottledResize = function() {
-               window.clearTimeout(this.resizeTimer);
-               this.resizeTimer = window.setTimeout(this._handlers.onResize, 
this.settings.responsiveRefreshRate);
-       };
-
-       /**
-        * Checks window `resize` event.
-        * @protected
-        */
-       Owl.prototype.onResize = function() {
-               if (!this._items.length) {
-                       return false;
-               }
-
-               if (this._width === this.$element.width()) {
-                       return false;
-               }
-
-               if (!this.$element.is(':visible')) {
-                       return false;
-               }
-
-               this.enter('resizing');
-
-               if (this.trigger('resize').isDefaultPrevented()) {
-                       this.leave('resizing');
-                       return false;
-               }
-
-               this.invalidate('width');
-
-               this.refresh();
-
-               this.leave('resizing');
-               this.trigger('resized');
-       };
-
-       /**
-        * Registers event handlers.
-        * @todo Check `msPointerEnabled`
-        * @todo #261
-        * @protected
-        */
-       Owl.prototype.registerEventHandlers = function() {
-               if ($.support.transition) {
-                       this.$stage.on($.support.transition.end + '.owl.core', 
$.proxy(this.onTransitionEnd, this));
-               }
-
-               if (this.settings.responsive !== false) {
-                       this.on(window, 'resize', 
this._handlers.onThrottledResize);
-               }
-
-               if (this.settings.mouseDrag) {
-                       this.$element.addClass(this.options.dragClass);
-                       this.$stage.on('mousedown.owl.core', 
$.proxy(this.onDragStart, this));
-                       this.$stage.on('dragstart.owl.core 
selectstart.owl.core', function() { return false });
-               }
-
-               if (this.settings.touchDrag){
-                       this.$stage.on('touchstart.owl.core', 
$.proxy(this.onDragStart, this));
-                       this.$stage.on('touchcancel.owl.core', 
$.proxy(this.onDragEnd, this));
-               }
-       };
-
-       /**
-        * Handles `touchstart` and `mousedown` events.
-        * @todo Horizontal swipe threshold as option
-        * @todo #261
-        * @protected
-        * @param {Event} event - The event arguments.
-        */
-       Owl.prototype.onDragStart = function(event) {
-               var stage = null;
-
-               if (event.which === 3) {
-                       return;
-               }
-
-               if ($.support.transform) {
-                       stage = this.$stage.css('transform').replace(/.*\(|\)| 
/g, '').split(',');
-                       stage = {
-                               x: stage[stage.length === 16 ? 12 : 4],
-                               y: stage[stage.length === 16 ? 13 : 5]
-                       };
-               } else {
-                       stage = this.$stage.position();
-                       stage = {
-                               x: this.settings.rtl ?
-                                       stage.left + this.$stage.width() - 
this.width() + this.settings.margin :
-                                       stage.left,
-                               y: stage.top
-                       };
-               }
-
-               if (this.is('animating')) {
-                       $.support.transform ? this.animate(stage.x) : 
this.$stage.stop()
-                       this.invalidate('position');
-               }
-
-               this.$element.toggleClass(this.options.grabClass, event.type 
=== 'mousedown');
-
-               this.speed(0);
-
-               this._drag.time = new Date().getTime();
-               this._drag.target = $(event.target);
-               this._drag.stage.start = stage;
-               this._drag.stage.current = stage;
-               this._drag.pointer = this.pointer(event);
-
-               $(document).on('mouseup.owl.core touchend.owl.core', 
$.proxy(this.onDragEnd, this));
-
-               $(document).one('mousemove.owl.core touchmove.owl.core', 
$.proxy(function(event) {
-                       var delta = this.difference(this._drag.pointer, 
this.pointer(event));
-
-                       $(document).on('mousemove.owl.core touchmove.owl.core', 
$.proxy(this.onDragMove, this));
-
-                       if (Math.abs(delta.x) < Math.abs(delta.y) && 
this.is('valid')) {
-                               return;
-                       }
-
-                       event.preventDefault();
-
-                       this.enter('dragging');
-                       this.trigger('drag');
-               }, this));
-       };
-
-       /**
-        * Handles the `touchmove` and `mousemove` events.
-        * @todo #261
-        * @protected
-        * @param {Event} event - The event arguments.
-        */
-       Owl.prototype.onDragMove = function(event) {
-               var minimum = null,
-                       maximum = null,
-                       pull = null,
-                       delta = this.difference(this._drag.pointer, 
this.pointer(event)),
-                       stage = this.difference(this._drag.stage.start, delta);
-
-               if (!this.is('dragging')) {
-                       return;
-               }
-
-               event.preventDefault();
-
-               if (this.settings.loop) {
-                       minimum = this.coordinates(this.minimum());
-                       maximum = this.coordinates(this.maximum() + 1) - 
minimum;
-                       stage.x = (((stage.x - minimum) % maximum + maximum) % 
maximum) + minimum;
-               } else {
-                       minimum = this.settings.rtl ? 
this.coordinates(this.maximum()) : this.coordinates(this.minimum());
-                       maximum = this.settings.rtl ? 
this.coordinates(this.minimum()) : this.coordinates(this.maximum());
-                       pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;
-                       stage.x = Math.max(Math.min(stage.x, minimum + pull), 
maximum + pull);
-               }
-
-               this._drag.stage.current = stage;
-
-               this.animate(stage.x);
-       };
-
-       /**
-        * Handles the `touchend` and `mouseup` events.
-        * @todo #261
-        * @todo Threshold for click event
-        * @protected
-        * @param {Event} event - The event arguments.
-        */
-       Owl.prototype.onDragEnd = function(event) {
-               var delta = this.difference(this._drag.pointer, 
this.pointer(event)),
-                       stage = this._drag.stage.current,
-                       direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 
'right';
-
-               $(document).off('.owl.core');
-
-               this.$element.removeClass(this.options.grabClass);
-
-               if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {
-                       this.speed(this.settings.dragEndSpeed || 
this.settings.smartSpeed);
-                       this.current(this.closest(stage.x, delta.x !== 0 ? 
direction : this._drag.direction));
-                       this.invalidate('position');
-                       this.update();
-
-                       this._drag.direction = direction;
-
-                       if (Math.abs(delta.x) > 3 || new Date().getTime() - 
this._drag.time > 300) {
-                               this._drag.target.one('click.owl.core', 
function() { return false; });
-                       }
-               }
-
-               if (!this.is('dragging')) {
-                       return;
-               }
-
-               this.leave('dragging');
-               this.trigger('dragged');
-       };
-
-       /**
-        * Gets absolute position of the closest item for a coordinate.
-        * @todo Setting `freeDrag` makes `closest` not reusable. See #165.
-        * @protected
-        * @param {Number} coordinate - The coordinate in pixel.
-        * @param {String} direction - The direction to check for the closest 
item. Ether `left` or `right`.
-        * @return {Number} - The absolute position of the closest item.
-        */
-       Owl.prototype.closest = function(coordinate, direction) {
-               var position = -1,
-                       pull = 30,
-                       width = this.width(),
-                       coordinates = this.coordinates();
-
-               if (!this.settings.freeDrag) {
-                       // check closest item
-                       $.each(coordinates, $.proxy(function(index, value) {
-                               // on a left pull, check on current index
-                               if (direction === 'left' && coordinate > value 
- pull && coordinate < value + pull) {
-                                       position = index;
-                               // on a right pull, check on previous index
-                               // to do so, subtract width from value and set 
position = index + 1
-                               } else if (direction === 'right' && coordinate 
> value - width - pull && coordinate < value - width + pull) {
-                                       position = index + 1;
-                               } else if (this.op(coordinate, '<', value)
-                                       && this.op(coordinate, '>', 
coordinates[index + 1] || value - width)) {
-                                       position = direction === 'left' ? index 
+ 1 : index;
-                               }
-                               return position === -1;
-                       }, this));
-               }
-
-               if (!this.settings.loop) {
-                       // non loop boundries
-                       if (this.op(coordinate, '>', 
coordinates[this.minimum()])) {
-                               position = coordinate = this.minimum();
-                       } else if (this.op(coordinate, '<', 
coordinates[this.maximum()])) {
-                               position = coordinate = this.maximum();
-                       }
-               }
-
-               return position;
-       };
-
-       /**
-        * Animates the stage.
-        * @todo #270
-        * @public
-        * @param {Number} coordinate - The coordinate in pixels.
-        */
-       Owl.prototype.animate = function(coordinate) {
-               var animate = this.speed() > 0;
-
-               this.is('animating') && this.onTransitionEnd();
-
-               if (animate) {
-                       this.enter('animating');
-                       this.trigger('translate');
-               }
-
-               if ($.support.transform3d && $.support.transition) {
-                       this.$stage.css({
-                               transform: 'translate3d(' + coordinate + 
'px,0px,0px)',
-                               transition: (this.speed() / 1000) + 's'
-                       });
-               } else if (animate) {
-                       this.$stage.animate({
-                               left: coordinate + 'px'
-                       }, this.speed(), this.settings.fallbackEasing, 
$.proxy(this.onTransitionEnd, this));
-               } else {
-                       this.$stage.css({
-                               left: coordinate + 'px'
-                       });
-               }
-       };
-
-       /**
-        * Checks whether the carousel is in a specific state or not.
-        * @param {String} state - The state to check.
-        * @returns {Boolean} - The flag which indicates if the carousel is 
busy.
-        */
-       Owl.prototype.is = function(state) {
-               return this._states.current[state] && 
this._states.current[state] > 0;
-       };
-
-       /**
-        * Sets the absolute position of the current item.
-        * @public
-        * @param {Number} [position] - The new absolute position or nothing to 
leave it unchanged.
-        * @returns {Number} - The absolute position of the current item.
-        */
-       Owl.prototype.current = function(position) {
-               if (position === undefined) {
-                       return this._current;
-               }
-
-               if (this._items.length === 0) {
-                       return undefined;
-               }
-
-               position = this.normalize(position);
-
-               if (this._current !== position) {
-                       var event = this.trigger('change', { property: { name: 
'position', value: position } });
-
-                       if (event.data !== undefined) {
-                               position = this.normalize(event.data);
-                       }
-
-                       this._current = position;
-
-                       this.invalidate('position');
-
-                       this.trigger('changed', { property: { name: 'position', 
value: this._current } });
-               }
-
-               return this._current;
-       };
-
-       /**
-        * Invalidates the given part of the update routine.
-        * @param {String} [part] - The part to invalidate.
-        * @returns {Array.<String>} - The invalidated parts.
-        */
-       Owl.prototype.invalidate = function(part) {
-               if ($.type(part) === 'string') {
-                       this._invalidated[part] = true;
-                       this.is('valid') && this.leave('valid');
-               }
-               return $.map(this._invalidated, function(v, i) { return i });
-       };
-
-       /**
-        * Resets the absolute position of the current item.
-        * @public
-        * @param {Number} position - The absolute position of the new item.
-        */
-       Owl.prototype.reset = function(position) {
-               position = this.normalize(position);
-
-               if (position === undefined) {
-                       return;
-               }
-
-               this._speed = 0;
-               this._current = position;
-
-               this.suppress([ 'translate', 'translated' ]);
-
-               this.animate(this.coordinates(position));
-
-               this.release([ 'translate', 'translated' ]);
-       };
-
-       /**
-        * Normalizes an absolute or a relative position of an item.
-        * @public
-        * @param {Number} position - The absolute or relative position to 
normalize.
-        * @param {Boolean} [relative=false] - Whether the given position is 
relative or not.
-        * @returns {Number} - The normalized position.
-        */
-       Owl.prototype.normalize = function(position, relative) {
-               var n = this._items.length,
-                       m = relative ? 0 : this._clones.length;
-
-               if (!this.isNumeric(position) || n < 1) {
-                       position = undefined;
-               } else if (position < 0 || position >= n + m) {
-                       position = ((position - m / 2) % n + n) % n + m / 2;
-               }
-
-               return position;
-       };
-
-       /**
-        * Converts an absolute position of an item into a relative one.
-        * @public
-        * @param {Number} position - The absolute position to convert.
-        * @returns {Number} - The converted position.
-        */
-       Owl.prototype.relative = function(position) {
-               position -= this._clones.length / 2;
-               return this.normalize(position, true);
-       };
-
-       /**
-        * Gets the maximum position for the current item.
-        * @public
-        * @param {Boolean} [relative=false] - Whether to return an absolute 
position or a relative position.
-        * @returns {Number}
-        */
-       Owl.prototype.maximum = function(relative) {
-               var settings = this.settings,
-                       maximum = this._coordinates.length,
-                       iterator,
-                       reciprocalItemsWidth,
-                       elementWidth;
-
-               if (settings.loop) {
-                       maximum = this._clones.length / 2 + this._items.length 
- 1;
-               } else if (settings.autoWidth || settings.merge) {
-                       iterator = this._items.length;
-                       reciprocalItemsWidth = this._items[--iterator].width();
-                       elementWidth = this.$element.width();
-                       while (iterator--) {
-                               reciprocalItemsWidth += 
this._items[iterator].width() + this.settings.margin;
-                               if (reciprocalItemsWidth > elementWidth) {
-                                       break;
-                               }
-                       }
-                       maximum = iterator + 1;
-               } else if (settings.center) {
-                       maximum = this._items.length - 1;
-               } else {
-                       maximum = this._items.length - settings.items;
-               }
-
-               if (relative) {
-                       maximum -= this._clones.length / 2;
-               }
-
-               return Math.max(maximum, 0);
-       };
-
-       /**
-        * Gets the minimum position for the current item.
-        * @public
-        * @param {Boolean} [relative=false] - Whether to return an absolute 
position or a relative position.
-        * @returns {Number}
-        */
-       Owl.prototype.minimum = function(relative) {
-               return relative ? 0 : this._clones.length / 2;
-       };
-
-       /**
-        * Gets an item at the specified relative position.
-        * @public
-        * @param {Number} [position] - The relative position of the item.
-        * @return {jQuery|Array.<jQuery>} - The item at the given position or 
all items if no position was given.
-        */
-       Owl.prototype.items = function(position) {
-               if (position === undefined) {
-                       return this._items.slice();
-               }
-
-               position = this.normalize(position, true);
-               return this._items[position];
-       };
-
-       /**
-        * Gets an item at the specified relative position.
-        * @public
-        * @param {Number} [position] - The relative position of the item.
-        * @return {jQuery|Array.<jQuery>} - The item at the given position or 
all items if no position was given.
-        */
-       Owl.prototype.mergers = function(position) {
-               if (position === undefined) {
-                       return this._mergers.slice();
-               }
-
-               position = this.normalize(position, true);
-               return this._mergers[position];
-       };
-
-       /**
-        * Gets the absolute positions of clones for an item.
-        * @public
-        * @param {Number} [position] - The relative position of the item.
-        * @returns {Array.<Number>} - The absolute positions of clones for the 
item or all if no position was given.
-        */
-       Owl.prototype.clones = function(position) {
-               var odd = this._clones.length / 2,
-                       even = odd + this._items.length,
-                       map = function(index) { return index % 2 === 0 ? even + 
index / 2 : odd - (index + 1) / 2 };
-
-               if (position === undefined) {
-                       return $.map(this._clones, function(v, i) { return 
map(i) });
-               }
-
-               return $.map(this._clones, function(v, i) { return v === 
position ? map(i) : null });
-       };
-
-       /**
-        * Sets the current animation speed.
-        * @public
-        * @param {Number} [speed] - The animation speed in milliseconds or 
nothing to leave it unchanged.
-        * @returns {Number} - The current animation speed in milliseconds.
-        */
-       Owl.prototype.speed = function(speed) {
-               if (speed !== undefined) {
-                       this._speed = speed;
-               }
-
-               return this._speed;
-       };
-
-       /**
-        * Gets the coordinate of an item.
-        * @todo The name of this method is missleanding.
-        * @public
-        * @param {Number} position - The absolute position of the item within 
`minimum()` and `maximum()`.
-        * @returns {Number|Array.<Number>} - The coordinate of the item in 
pixel or all coordinates.
-        */
-       Owl.prototype.coordinates = function(position) {
-               var multiplier = 1,
-                       newPosition = position - 1,
-                       coordinate;
-
-               if (position === undefined) {
-                       return $.map(this._coordinates, 
$.proxy(function(coordinate, index) {
-                               return this.coordinates(index);
-                       }, this));
-               }
-
-               if (this.settings.center) {
-                       if (this.settings.rtl) {
-                               multiplier = -1;
-                               newPosition = position + 1;
-                       }
-
-                       coordinate = this._coordinates[position];
-                       coordinate += (this.width() - coordinate + 
(this._coordinates[newPosition] || 0)) / 2 * multiplier;
-               } else {
-                       coordinate = this._coordinates[newPosition] || 0;
-               }
-
-               coordinate = Math.ceil(coordinate);
-
-               return coordinate;
-       };
-
-       /**
-        * Calculates the speed for a translation.
-        * @protected
-        * @param {Number} from - The absolute position of the start item.
-        * @param {Number} to - The absolute position of the target item.
-        * @param {Number} [factor=undefined] - The time factor in milliseconds.
-        * @returns {Number} - The time in milliseconds for the translation.
-        */
-       Owl.prototype.duration = function(from, to, factor) {
-               if (factor === 0) {
-                       return 0;
-               }
-
-               return Math.min(Math.max(Math.abs(to - from), 1), 6) * 
Math.abs((factor || this.settings.smartSpeed));
-       };
-
-       /**
-        * Slides to the specified item.
-        * @public
-        * @param {Number} position - The position of the item.
-        * @param {Number} [speed] - The time in milliseconds for the 
transition.
-        */
-       Owl.prototype.to = function(position, speed) {
-               var current = this.current(),
-                       revert = null,
-                       distance = position - this.relative(current),
-                       direction = (distance > 0) - (distance < 0),
-                       items = this._items.length,
-                       minimum = this.minimum(),
-                       maximum = this.maximum();
-
-               if (this.settings.loop) {
-                       if (!this.settings.rewind && Math.abs(distance) > items 
/ 2) {
-                               distance += direction * -1 * items;
-                       }
-
-                       position = current + distance;
-                       revert = ((position - minimum) % items + items) % items 
+ minimum;
-
-                       if (revert !== position && revert - distance <= maximum 
&& revert - distance > 0) {
-                               current = revert - distance;
-                               position = revert;
-                               this.reset(current);
-                       }
-               } else if (this.settings.rewind) {
-                       maximum += 1;
-                       position = (position % maximum + maximum) % maximum;
-               } else {
-                       position = Math.max(minimum, Math.min(maximum, 
position));
-               }
-
-               this.speed(this.duration(current, position, speed));
-               this.current(position);
-
-               if (this.$element.is(':visible')) {
-                       this.update();
-               }
-       };
-
-       /**
-        * Slides to the next item.
-        * @public
-        * @param {Number} [speed] - The time in milliseconds for the 
transition.
-        */
-       Owl.prototype.next = function(speed) {
-               speed = speed || false;
-               this.to(this.relative(this.current()) + 1, speed);
-       };
-
-       /**
-        * Slides to the previous item.
-        * @public
-        * @param {Number} [speed] - The time in milliseconds for the 
transition.
-        */
-       Owl.prototype.prev = function(speed) {
-               speed = speed || false;
-               this.to(this.relative(this.current()) - 1, speed);
-       };
-
-       /**
-        * Handles the end of an animation.
-        * @protected
-        * @param {Event} event - The event arguments.
-        */
-       Owl.prototype.onTransitionEnd = function(event) {
-
-               // if css2 animation then event object is undefined
-               if (event !== undefined) {
-                       event.stopPropagation();
-
-                       // Catch only owl-stage transitionEnd event
-                       if ((event.target || event.srcElement || 
event.originalTarget) !== this.$stage.get(0)) {
-                               return false;
-                       }
-               }
-
-               this.leave('animating');
-               this.trigger('translated');
-       };
-
-       /**
-        * Gets viewport width.
-        * @protected
-        * @return {Number} - The width in pixel.
-        */
-       Owl.prototype.viewport = function() {
-               var width;
-               if (this.options.responsiveBaseElement !== window) {
-                       width = $(this.options.responsiveBaseElement).width();
-               } else if (window.innerWidth) {
-                       width = window.innerWidth;
-               } else if (document.documentElement && 
document.documentElement.clientWidth) {
-                       width = document.documentElement.clientWidth;
-               } else {
-                       throw 'Can not detect viewport width.';
-               }
-               return width;
-       };
-
-       /**
-        * Replaces the current content.
-        * @public
-        * @param {HTMLElement|jQuery|String} content - The new content.
-        */
-       Owl.prototype.replace = function(content) {
-               this.$stage.empty();
-               this._items = [];
-
-               if (content) {
-                       content = (content instanceof jQuery) ? content : 
$(content);
-               }
-
-               if (this.settings.nestedItemSelector) {
-                       content = content.find('.' + 
this.settings.nestedItemSelector);
-               }
-
-               content.filter(function() {
-                       return this.nodeType === 1;
-               }).each($.proxy(function(index, item) {
-                       item = this.prepare(item);
-                       this.$stage.append(item);
-                       this._items.push(item);
-                       
this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge')
 * 1 || 1);
-               }, this));
-
-               this.reset(this.isNumeric(this.settings.startPosition) ? 
this.settings.startPosition : 0);
-
-               this.invalidate('items');
-       };
-
-       /**
-        * Adds an item.
-        * @todo Use `item` instead of `content` for the event arguments.
-        * @public
-        * @param {HTMLElement|jQuery|String} content - The item content to add.
-        * @param {Number} [position] - The relative position at which to 
insert the item otherwise the item will be added to the end.
-        */
-       Owl.prototype.add = function(content, position) {
-               var current = this.relative(this._current);
-
-               position = position === undefined ? this._items.length : 
this.normalize(position, true);
-               content = content instanceof jQuery ? content : $(content);
-
-               this.trigger('add', { content: content, position: position });
-
-               content = this.prepare(content);
-
-               if (this._items.length === 0 || position === 
this._items.length) {
-                       this._items.length === 0 && this.$stage.append(content);
-                       this._items.length !== 0 && this._items[position - 
1].after(content);
-                       this._items.push(content);
-                       
this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge')
 * 1 || 1);
-               } else {
-                       this._items[position].before(content);
-                       this._items.splice(position, 0, content);
-                       this._mergers.splice(position, 0, 
content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 
1);
-               }
-
-               this._items[current] && 
this.reset(this._items[current].index());
-
-               this.invalidate('items');
-
-               this.trigger('added', { content: content, position: position });
-       };
-
-       /**
-        * Removes an item by its position.
-        * @todo Use `item` instead of `content` for the event arguments.
-        * @public
-        * @param {Number} position - The relative position of the item to 
remove.
-        */
-       Owl.prototype.remove = function(position) {
-               position = this.normalize(position, true);
-
-               if (position === undefined) {
-                       return;
-               }
-
-               this.trigger('remove', { content: this._items[position], 
position: position });
-
-               this._items[position].remove();
-               this._items.splice(position, 1);
-               this._mergers.splice(position, 1);
-
-               this.invalidate('items');
-
-               this.trigger('removed', { content: null, position: position });
-       };
-
-       /**
-        * Preloads images with auto width.
-        * @todo Replace by a more generic approach
-        * @protected
-        */
-       Owl.prototype.preloadAutoWidthImages = function(images) {
-               images.each($.proxy(function(i, element) {
-                       this.enter('pre-loading');
-                       element = $(element);
-                       $(new Image()).one('load', $.proxy(function(e) {
-                               element.attr('src', e.target.src);
-                               element.css('opacity', 1);
-                               this.leave('pre-loading');
-                               !this.is('pre-loading') && 
!this.is('initializing') && this.refresh();
-                       }, this)).attr('src', element.attr('src') || 
element.attr('data-src') || element.attr('data-src-retina'));
-               }, this));
-       };
-
-       /**
-        * Destroys the carousel.
-        * @public
-        */
-       Owl.prototype.destroy = function() {
-
-               this.$element.off('.owl.core');
-               this.$stage.off('.owl.core');
-               $(document).off('.owl.core');
-
-               if (this.settings.responsive !== false) {
-                       window.clearTimeout(this.resizeTimer);
-                       this.off(window, 'resize', 
this._handlers.onThrottledResize);
-               }
-
-               for (var i in this._plugins) {
-                       this._plugins[i].destroy();
-               }
-
-               this.$stage.children('.cloned').remove();
-
-               this.$stage.unwrap();
-               this.$stage.children().contents().unwrap();
-               this.$stage.children().unwrap();
-
-               this.$element
-                       .removeClass(this.options.refreshClass)
-                       .removeClass(this.options.loadingClass)
-                       .removeClass(this.options.loadedClass)
-                       .removeClass(this.options.rtlClass)
-                       .removeClass(this.options.dragClass)
-                       .removeClass(this.options.grabClass)
-                       .attr('class', this.$element.attr('class').replace(new 
RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), ''))
-                       .removeData('owl.carousel');
-       };
-
-       /**
-        * Operators to calculate right-to-left and left-to-right.
-        * @protected
-        * @param {Number} [a] - The left side operand.
-        * @param {String} [o] - The operator.
-        * @param {Number} [b] - The right side operand.
-        */
-       Owl.prototype.op = function(a, o, b) {
-               var rtl = this.settings.rtl;
-               switch (o) {
-                       case '<':
-                               return rtl ? a > b : a < b;
-                       case '>':
-                               return rtl ? a < b : a > b;
-                       case '>=':
-                               return rtl ? a <= b : a >= b;
-                       case '<=':
-                               return rtl ? a >= b : a <= b;
-                       default:
-                               break;
-               }
-       };
-
-       /**
-        * Attaches to an internal event.
-        * @protected
-        * @param {HTMLElement} element - The event source.
-        * @param {String} event - The event name.
-        * @param {Function} listener - The event handler to attach.
-        * @param {Boolean} capture - Wether the event should be handled at the 
capturing phase or not.
-        */
-       Owl.prototype.on = function(element, event, listener, capture) {
-               if (element.addEventListener) {
-                       element.addEventListener(event, listener, capture);
-               } else if (element.attachEvent) {
-                       element.attachEvent('on' + event, listener);
-               }
-       };
-
-       /**
-        * Detaches from an internal event.
-        * @protected
-        * @param {HTMLElement} element - The event source.
-        * @param {String} event - The event name.
-        * @param {Function} listener - The attached event handler to detach.
-        * @param {Boolean} capture - Wether the attached event handler was 
registered as a capturing listener or not.
-        */
-       Owl.prototype.off = function(element, event, listener, capture) {
-               if (element.removeEventListener) {
-                       element.removeEventListener(event, listener, capture);
-               } else if (element.detachEvent) {
-                       element.detachEvent('on' + event, listener);
-               }
-       };
-
-       /**
-        * Triggers a public event.
-        * @todo Remove `status`, `relatedTarget` should be used instead.
-        * @protected
-        * @param {String} name - The event name.
-        * @param {*} [data=null] - The event data.
-        * @param {String} [namespace=carousel] - The event namespace.
-        * @param {String} [state] - The state which is associated with the 
event.
-        * @param {Boolean} [enter=false] - Indicates if the call enters the 
specified state or not.
-        * @returns {Event} - The event arguments.
-        */
-       Owl.prototype.trigger = function(name, data, namespace, state, enter) {
-               var status = {
-                       item: { count: this._items.length, index: 
this.current() }
-               }, handler = $.camelCase(
-                       $.grep([ 'on', name, namespace ], function(v) { return 
v })
-                               .join('-').toLowerCase()
-               ), event = $.Event(
-                       [ name, 'owl', namespace || 'carousel' 
].join('.').toLowerCase(),
-                       $.extend({ relatedTarget: this }, status, data)
-               );
-
-               if (!this._supress[name]) {
-                       $.each(this._plugins, function(name, plugin) {
-                               if (plugin.onTrigger) {
-                                       plugin.onTrigger(event);
-                               }
-                       });
-
-                       this.register({ type: Owl.Type.Event, name: name });
-                       this.$element.trigger(event);
-
-                       if (this.settings && typeof this.settings[handler] === 
'function') {
-                               this.settings[handler].call(this, event);
-                       }
-               }
-
-               return event;
-       };
-
-       /**
-        * Enters a state.
-        * @param name - The state name.
-        */
-       Owl.prototype.enter = function(name) {
-               $.each([ name ].concat(this._states.tags[name] || []), 
$.proxy(function(i, name) {
-                       if (this._states.current[name] === undefined) {
-                               this._states.current[name] = 0;
-                       }
-
-                       this._states.current[name]++;
-               }, this));
-       };
-
-       /**
-        * Leaves a state.
-        * @param name - The state name.
-        */
-       Owl.prototype.leave = function(name) {
-               $.each([ name ].concat(this._states.tags[name] || []), 
$.proxy(function(i, name) {
-                       this._states.current[name]--;
-               }, this));
-       };
-
-       /**
-        * Registers an event or state.
-        * @public
-        * @param {Object} object - The event or state to register.
-        */
-       Owl.prototype.register = function(object) {
-               if (object.type === Owl.Type.Event) {
-                       if (!$.event.special[object.name]) {
-                               $.event.special[object.name] = {};
-                       }
-
-                       if (!$.event.special[object.name].owl) {
-                               var _default = 
$.event.special[object.name]._default;
-                               $.event.special[object.name]._default = 
function(e) {
-                                       if (_default && _default.apply && 
(!e.namespace || e.namespace.indexOf('owl') === -1)) {
-                                               return _default.apply(this, 
arguments);
-                                       }
-                                       return e.namespace && 
e.namespace.indexOf('owl') > -1;
-                               };
-                               $.event.special[object.name].owl = true;
-                       }
-               } else if (object.type === Owl.Type.State) {
-                       if (!this._states.tags[object.name]) {
-                               this._states.tags[object.name] = object.tags;
-                       } else {
-                               this._states.tags[object.name] = 
this._states.tags[object.name].concat(object.tags);
-                       }
-
-                       this._states.tags[object.name] = 
$.grep(this._states.tags[object.name], $.proxy(function(tag, i) {
-                               return $.inArray(tag, 
this._states.tags[object.name]) === i;
-                       }, this));
-               }
-       };
-
-       /**
-        * Suppresses events.
-        * @protected
-        * @param {Array.<String>} events - The events to suppress.
-        */
-       Owl.prototype.suppress = function(events) {
-               $.each(events, $.proxy(function(index, event) {
-                       this._supress[event] = true;
-               }, this));
-       };
-
-       /**
-        * Releases suppressed events.
-        * @protected
-        * @param {Array.<String>} events - The events to release.
-        */
-       Owl.prototype.release = function(events) {
-               $.each(events, $.proxy(function(index, event) {
-                       delete this._supress[event];
-               }, this));
-       };
-
-       /**
-        * Gets unified pointer coordinates from event.
-        * @todo #261
-        * @protected
-        * @param {Event} - The `mousedown` or `touchstart` event.
-        * @returns {Object} - Contains `x` and `y` coordinates of current 
pointer position.
-        */
-       Owl.prototype.pointer = function(event) {
-               var result = { x: null, y: null };
-
-               event = event.originalEvent || event || window.event;
-
-               event = event.touches && event.touches.length ?
-                       event.touches[0] : event.changedTouches && 
event.changedTouches.length ?
-                               event.changedTouches[0] : event;
-
-               if (event.pageX) {
-                       result.x = event.pageX;
-                       result.y = event.pageY;
-               } else {
-                       result.x = event.clientX;
-                       result.y = event.clientY;
-               }
-
-               return result;
-       };
-
-       /**
-        * Determines if the input is a Number or something that can be coerced 
to a Number
-        * @protected
-        * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - 
The input to be tested
-        * @returns {Boolean} - An indication if the input is a Number or can 
be coerced to a Number
-        */
-       Owl.prototype.isNumeric = function(number) {
-               return !isNaN(parseFloat(number));
-       };
-
-       /**
-        * Gets the difference of two vectors.
-        * @todo #261
-        * @protected
-        * @param {Object} - The first vector.
-        * @param {Object} - The second vector.
-        * @returns {Object} - The difference.
-        */
-       Owl.prototype.difference = function(first, second) {
-               return {
-                       x: first.x - second.x,
-                       y: first.y - second.y
-               };
-       };
-
-       /**
-        * The jQuery Plugin for the Owl Carousel
-        * @todo Navigation plugin `next` and `prev`
-        * @public
-        */
-       $.fn.owlCarousel = function(option) {
-               var args = Array.prototype.slice.call(arguments, 1);
-
-               return this.each(function() {
-                       var $this = $(this),
-                               data = $this.data('owl.carousel');
-
-                       if (!data) {
-                               data = new Owl(this, typeof option == 'object' 
&& option);
-                               $this.data('owl.carousel', data);
-
-                               $.each([
-                                       'next', 'prev', 'to', 'destroy', 
'refresh', 'replace', 'add', 'remove'
-                               ], function(i, event) {
-                                       data.register({ type: Owl.Type.Event, 
name: event });
-                                       data.$element.on(event + 
'.owl.carousel.core', $.proxy(function(e) {
-                                               if (e.namespace && 
e.relatedTarget !== this) {
-                                                       this.suppress([ event 
]);
-                                                       data[event].apply(this, 
[].slice.call(arguments, 1));
-                                                       this.release([ event ]);
-                                               }
-                                       }, data));
-                               });
-                       }
-
-                       if (typeof option == 'string' && option.charAt(0) !== 
'_') {
-                               data[option].apply(data, args);
-                       }
-               });
-       };
-
-       /**
-        * The constructor for the jQuery Plugin
-        * @public
-        */
-       $.fn.owlCarousel.Constructor = Owl;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * AutoRefresh Plugin
- * @version 2.1.0
- * @author Artus Kolanowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the auto refresh plugin.
-        * @class The Auto Refresh Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var AutoRefresh = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Refresh interval.
-                * @protected
-                * @type {number}
-                */
-               this._interval = null;
-
-               /**
-                * Whether the element is currently visible or not.
-                * @protected
-                * @type {Boolean}
-                */
-               this._visible = null;
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'initialized.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.autoRefresh) {
-                                       this.watch();
-                               }
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, AutoRefresh.Defaults, 
this._core.options);
-
-               // register event handlers
-               this._core.$element.on(this._handlers);
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       AutoRefresh.Defaults = {
-               autoRefresh: true,
-               autoRefreshInterval: 500
-       };
-
-       /**
-        * Watches the element.
-        */
-       AutoRefresh.prototype.watch = function() {
-               if (this._interval) {
-                       return;
-               }
-
-               this._visible = this._core.$element.is(':visible');
-               this._interval = window.setInterval($.proxy(this.refresh, 
this), this._core.settings.autoRefreshInterval);
-       };
-
-       /**
-        * Refreshes the element.
-        */
-       AutoRefresh.prototype.refresh = function() {
-               if (this._core.$element.is(':visible') === this._visible) {
-                       return;
-               }
-
-               this._visible = !this._visible;
-
-               this._core.$element.toggleClass('owl-hidden', !this._visible);
-
-               this._visible && (this._core.invalidate('width') && 
this._core.refresh());
-       };
-
-       /**
-        * Destroys the plugin.
-        */
-       AutoRefresh.prototype.destroy = function() {
-               var handler, property;
-
-               window.clearInterval(this._interval);
-
-               for (handler in this._handlers) {
-                       this._core.$element.off(handler, 
this._handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] 
= null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Lazy Plugin
- * @version 2.1.0
- * @author Bartosz Wojciechowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the lazy plugin.
-        * @class The Lazy Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var Lazy = function(carousel) {
-
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Already loaded items.
-                * @protected
-                * @type {Array.<jQuery>}
-                */
-               this._loaded = [];
-
-               /**
-                * Event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'initialized.owl.carousel change.owl.carousel 
resized.owl.carousel': $.proxy(function(e) {
-                               if (!e.namespace) {
-                                       return;
-                               }
-
-                               if (!this._core.settings || 
!this._core.settings.lazyLoad) {
-                                       return;
-                               }
-
-                               if ((e.property && e.property.name == 
'position') || e.type == 'initialized') {
-                                       var settings = this._core.settings,
-                                               n = (settings.center && 
Math.ceil(settings.items / 2) || settings.items),
-                                               i = ((settings.center && n * 
-1) || 0),
-                                               position = (e.property && 
e.property.value !== undefined ? e.property.value : this._core.current()) + i,
-                                               clones = 
this._core.clones().length,
-                                               load = $.proxy(function(i, v) { 
this.load(v) }, this);
-
-                                       while (i++ < n) {
-                                               this.load(clones / 2 + 
this._core.relative(position));
-                                               clones && 
$.each(this._core.clones(this._core.relative(position)), load);
-                                               position++;
-                                       }
-                               }
-                       }, this)
-               };
-
-               // set the default options
-               this._core.options = $.extend({}, Lazy.Defaults, 
this._core.options);
-
-               // register event handler
-               this._core.$element.on(this._handlers);
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       Lazy.Defaults = {
-               lazyLoad: false
-       };
-
-       /**
-        * Loads all resources of an item at the specified position.
-        * @param {Number} position - The absolute position of the item.
-        * @protected
-        */
-       Lazy.prototype.load = function(position) {
-               var $item = this._core.$stage.children().eq(position),
-                       $elements = $item && $item.find('.owl-lazy');
-
-               if (!$elements || $.inArray($item.get(0), this._loaded) > -1) {
-                       return;
-               }
-
-               $elements.each($.proxy(function(index, element) {
-                       var $element = $(element), image,
-                               url = (window.devicePixelRatio > 1 && 
$element.attr('data-src-retina')) || $element.attr('data-src');
-
-                       this._core.trigger('load', { element: $element, url: 
url }, 'lazy');
-
-                       if ($element.is('img')) {
-                               $element.one('load.owl.lazy', 
$.proxy(function() {
-                                       $element.css('opacity', 1);
-                                       this._core.trigger('loaded', { element: 
$element, url: url }, 'lazy');
-                               }, this)).attr('src', url);
-                       } else {
-                               image = new Image();
-                               image.onload = $.proxy(function() {
-                                       $element.css({
-                                               'background-image': 'url(' + 
url + ')',
-                                               'opacity': '1'
-                                       });
-                                       this._core.trigger('loaded', { element: 
$element, url: url }, 'lazy');
-                               }, this);
-                               image.src = url;
-                       }
-               }, this));
-
-               this._loaded.push($item.get(0));
-       };
-
-       /**
-        * Destroys the plugin.
-        * @public
-        */
-       Lazy.prototype.destroy = function() {
-               var handler, property;
-
-               for (handler in this.handlers) {
-                       this._core.$element.off(handler, 
this.handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] 
= null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * AutoHeight Plugin
- * @version 2.1.0
- * @author Bartosz Wojciechowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the auto height plugin.
-        * @class The Auto Height Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var AutoHeight = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'initialized.owl.carousel refreshed.owl.carousel': 
$.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.autoHeight) {
-                                       this.update();
-                               }
-                       }, this),
-                       'changed.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.autoHeight && e.property.name == 'position'){
-                                       this.update();
-                               }
-                       }, this),
-                       'loaded.owl.lazy': $.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.autoHeight
-                                       && e.element.closest('.' + 
this._core.settings.itemClass).index() === this._core.current()) {
-                                       this.update();
-                               }
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, AutoHeight.Defaults, 
this._core.options);
-
-               // register event handlers
-               this._core.$element.on(this._handlers);
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       AutoHeight.Defaults = {
-               autoHeight: false,
-               autoHeightClass: 'owl-height'
-       };
-
-       /**
-        * Updates the view.
-        */
-       AutoHeight.prototype.update = function() {
-               var start = this._core._current,
-                       end = start + this._core.settings.items,
-                       visible = 
this._core.$stage.children().toArray().slice(start, end),
-                       heights = [],
-                       maxheight = 0;
-
-               $.each(visible, function(index, item) {
-                       heights.push($(item).height());
-               });
-
-               maxheight = Math.max.apply(null, heights);
-
-               this._core.$stage.parent()
-                       .height(maxheight)
-                       .addClass(this._core.settings.autoHeightClass);
-       };
-
-       AutoHeight.prototype.destroy = function() {
-               var handler, property;
-
-               for (handler in this._handlers) {
-                       this._core.$element.off(handler, 
this._handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] 
= null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Video Plugin
- * @version 2.1.0
- * @author Bartosz Wojciechowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the video plugin.
-        * @class The Video Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var Video = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Cache all video URLs.
-                * @protected
-                * @type {Object}
-                */
-               this._videos = {};
-
-               /**
-                * Current playing item.
-                * @protected
-                * @type {jQuery}
-                */
-               this._playing = null;
-
-               /**
-                * All event handlers.
-                * @todo The cloned content removale is too late
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'initialized.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace) {
-                                       this._core.register({ type: 'state', 
name: 'playing', tags: [ 'interacting' ] });
-                               }
-                       }, this),
-                       'resize.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && this._core.settings.video && 
this.isInFullScreen()) {
-                                       e.preventDefault();
-                               }
-                       }, this),
-                       'refreshed.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && this._core.is('resizing')) {
-                                       this._core.$stage.find('.cloned 
.owl-video-frame').remove();
-                               }
-                       }, this),
-                       'changed.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && e.property.name === 
'position' && this._playing) {
-                                       this.stop();
-                               }
-                       }, this),
-                       'prepared.owl.carousel': $.proxy(function(e) {
-                               if (!e.namespace) {
-                                       return;
-                               }
-
-                               var $element = $(e.content).find('.owl-video');
-
-                               if ($element.length) {
-                                       $element.css('display', 'none');
-                                       this.fetch($element, $(e.content));
-                               }
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, Video.Defaults, 
this._core.options);
-
-               // register event handlers
-               this._core.$element.on(this._handlers);
-
-               this._core.$element.on('click.owl.video', 
'.owl-video-play-icon', $.proxy(function(e) {
-                       this.play(e);
-               }, this));
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       Video.Defaults = {
-               video: false,
-               videoHeight: false,
-               videoWidth: false
-       };
-
-       /**
-        * Gets the video ID and the type (YouTube/Vimeo/vzaar only).
-        * @protected
-        * @param {jQuery} target - The target containing the video data.
-        * @param {jQuery} item - The item containing the video.
-        */
-       Video.prototype.fetch = function(target, item) {
-                       var type = (function() {
-                                       if (target.attr('data-vimeo-id')) {
-                                               return 'vimeo';
-                                       } else if 
(target.attr('data-vzaar-id')) {
-                                               return 'vzaar'
-                                       } else {
-                                               return 'youtube';
-                                       }
-                               })(),
-                               id = target.attr('data-vimeo-id') || 
target.attr('data-youtube-id') || target.attr('data-vzaar-id'),
-                               width = target.attr('data-width') || 
this._core.settings.videoWidth,
-                               height = target.attr('data-height') || 
this._core.settings.videoHeight,
-                               url = target.attr('href');
-
-               if (url) {
-
-                       /*
-                                       Parses the id's out of the following 
urls (and probably more):
-                                       https://www.youtube.com/watch?v=:id
-                                       https://youtu.be/:id
-                                       https://vimeo.com/:id
-                                       https://vimeo.com/channels/:channel/:id
-                                       
https://vimeo.com/groups/:group/videos/:id
-                                       https://app.vzaar.com/videos/:id
-
-                                       Visual example: 
https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F
-                       */
-
-                       id = 
url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);
-
-                       if (id[3].indexOf('youtu') > -1) {
-                               type = 'youtube';
-                       } else if (id[3].indexOf('vimeo') > -1) {
-                               type = 'vimeo';
-                       } else if (id[3].indexOf('vzaar') > -1) {
-                               type = 'vzaar';
-                       } else {
-                               throw new Error('Video URL not supported.');
-                       }
-                       id = id[6];
-               } else {
-                       throw new Error('Missing video URL.');
-               }
-
-               this._videos[url] = {
-                       type: type,
-                       id: id,
-                       width: width,
-                       height: height
-               };
-
-               item.attr('data-video', url);
-
-               this.thumbnail(target, this._videos[url]);
-       };
-
-       /**
-        * Creates video thumbnail.
-        * @protected
-        * @param {jQuery} target - The target containing the video data.
-        * @param {Object} info - The video info object.
-        * @see `fetch`
-        */
-       Video.prototype.thumbnail = function(target, video) {
-               var tnLink,
-                       icon,
-                       path,
-                       dimensions = video.width && video.height ? 
'style="width:' + video.width + 'px;height:' + video.height + 'px;"' : '',
-                       customTn = target.find('img'),
-                       srcType = 'src',
-                       lazyClass = '',
-                       settings = this._core.settings,
-                       create = function(path) {
-                               icon = '<div 
class="owl-video-play-icon"></div>';
-
-                               if (settings.lazyLoad) {
-                                       tnLink = '<div class="owl-video-tn ' + 
lazyClass + '" ' + srcType + '="' + path + '"></div>';
-                               } else {
-                                       tnLink = '<div class="owl-video-tn" 
style="opacity:1;background-image:url(' + path + ')"></div>';
-                               }
-                               target.after(tnLink);
-                               target.after(icon);
-                       };
-
-               // wrap video content into owl-video-wrapper div
-               target.wrap('<div class="owl-video-wrapper"' + dimensions + 
'></div>');
-
-               if (this._core.settings.lazyLoad) {
-                       srcType = 'data-src';
-                       lazyClass = 'owl-lazy';
-               }
-
-               // custom thumbnail
-               if (customTn.length) {
-                       create(customTn.attr(srcType));
-                       customTn.remove();
-                       return false;
-               }
-
-               if (video.type === 'youtube') {
-                       path = "//img.youtube.com/vi/" + video.id + 
"/hqdefault.jpg";
-                       create(path);
-               } else if (video.type === 'vimeo') {
-                       $.ajax({
-                               type: 'GET',
-                               url: '//vimeo.com/api/v2/video/' + video.id + 
'.json',
-                               jsonp: 'callback',
-                               dataType: 'jsonp',
-                               success: function(data) {
-                                       path = data[0].thumbnail_large;
-                                       create(path);
-                               }
-                       });
-               } else if (video.type === 'vzaar') {
-                       $.ajax({
-                               type: 'GET',
-                               url: '//vzaar.com/api/videos/' + video.id + 
'.json',
-                               jsonp: 'callback',
-                               dataType: 'jsonp',
-                               success: function(data) {
-                                       path = data.framegrab_url;
-                                       create(path);
-                               }
-                       });
-               }
-       };
-
-       /**
-        * Stops the current video.
-        * @public
-        */
-       Video.prototype.stop = function() {
-               this._core.trigger('stop', null, 'video');
-               this._playing.find('.owl-video-frame').remove();
-               this._playing.removeClass('owl-video-playing');
-               this._playing = null;
-               this._core.leave('playing');
-               this._core.trigger('stopped', null, 'video');
-       };
-
-       /**
-        * Starts the current video.
-        * @public
-        * @param {Event} event - The event arguments.
-        */
-       Video.prototype.play = function(event) {
-               var target = $(event.target),
-                       item = target.closest('.' + 
this._core.settings.itemClass),
-                       video = this._videos[item.attr('data-video')],
-                       width = video.width || '100%',
-                       height = video.height || this._core.$stage.height(),
-                       html;
-
-               if (this._playing) {
-                       return;
-               }
-
-               this._core.enter('playing');
-               this._core.trigger('play', null, 'video');
-
-               item = this._core.items(this._core.relative(item.index()));
-
-               this._core.reset(item.index());
-
-               if (video.type === 'youtube') {
-                       html = '<iframe width="' + width + '" height="' + 
height + '" src="//www.youtube.com/embed/' +
-                               video.id + '?autoplay=1&v=' + video.id + '" 
frameborder="0" allowfullscreen></iframe>';
-               } else if (video.type === 'vimeo') {
-                       html = '<iframe src="//player.vimeo.com/video/' + 
video.id +
-                               '?autoplay=1" width="' + width + '" height="' + 
height +
-                               '" frameborder="0" webkitallowfullscreen 
mozallowfullscreen allowfullscreen></iframe>';
-               } else if (video.type === 'vzaar') {
-                       html = '<iframe frameborder="0"' + 'height="' + height 
+ '"' + 'width="' + width +
-                               '" allowfullscreen mozallowfullscreen 
webkitAllowFullScreen ' +
-                               'src="//view.vzaar.com/' + video.id + 
'/player?autoplay=true"></iframe>';
-               }
-
-               $('<div class="owl-video-frame">' + html + 
'</div>').insertAfter(item.find('.owl-video'));
-
-               this._playing = item.addClass('owl-video-playing');
-       };
-
-       /**
-        * Checks whether an video is currently in full screen mode or not.
-        * @todo Bad style because looks like a readonly method but changes 
members.
-        * @protected
-        * @returns {Boolean}
-        */
-       Video.prototype.isInFullScreen = function() {
-               var element = document.fullscreenElement || 
document.mozFullScreenElement ||
-                               document.webkitFullscreenElement;
-
-               return element && 
$(element).parent().hasClass('owl-video-frame');
-       };
-
-       /**
-        * Destroys the plugin.
-        */
-       Video.prototype.destroy = function() {
-               var handler, property;
-
-               this._core.$element.off('click.owl.video');
-
-               for (handler in this._handlers) {
-                       this._core.$element.off(handler, 
this._handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] 
= null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.Video = Video;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Animate Plugin
- * @version 2.1.0
- * @author Bartosz Wojciechowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the animate plugin.
-        * @class The Navigation Plugin
-        * @param {Owl} scope - The Owl Carousel
-        */
-       var Animate = function(scope) {
-               this.core = scope;
-               this.core.options = $.extend({}, Animate.Defaults, 
this.core.options);
-               this.swapping = true;
-               this.previous = undefined;
-               this.next = undefined;
-
-               this.handlers = {
-                       'change.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && e.property.name == 
'position') {
-                                       this.previous = this.core.current();
-                                       this.next = e.property.value;
-                               }
-                       }, this),
-                       'drag.owl.carousel dragged.owl.carousel 
translated.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace) {
-                                       this.swapping = e.type == 'translated';
-                               }
-                       }, this),
-                       'translate.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && this.swapping && 
(this.core.options.animateOut || this.core.options.animateIn)) {
-                                       this.swap();
-                               }
-                       }, this)
-               };
-
-               this.core.$element.on(this.handlers);
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       Animate.Defaults = {
-               animateOut: false,
-               animateIn: false
-       };
-
-       /**
-        * Toggles the animation classes whenever an translations starts.
-        * @protected
-        * @returns {Boolean|undefined}
-        */
-       Animate.prototype.swap = function() {
-
-               if (this.core.settings.items !== 1) {
-                       return;
-               }
-
-               if (!$.support.animation || !$.support.transition) {
-                       return;
-               }
-
-               this.core.speed(0);
-
-               var left,
-                       clear = $.proxy(this.clear, this),
-                       previous = 
this.core.$stage.children().eq(this.previous),
-                       next = this.core.$stage.children().eq(this.next),
-                       incoming = this.core.settings.animateIn,
-                       outgoing = this.core.settings.animateOut;
-
-               if (this.core.current() === this.previous) {
-                       return;
-               }
-
-               if (outgoing) {
-                       left = this.core.coordinates(this.previous) - 
this.core.coordinates(this.next);
-                       previous.one($.support.animation.end, clear)
-                               .css( { 'left': left + 'px' } )
-                               .addClass('animated owl-animated-out')
-                               .addClass(outgoing);
-               }
-
-               if (incoming) {
-                       next.one($.support.animation.end, clear)
-                               .addClass('animated owl-animated-in')
-                               .addClass(incoming);
-               }
-       };
-
-       Animate.prototype.clear = function(e) {
-               $(e.target).css( { 'left': '' } )
-                       .removeClass('animated owl-animated-out 
owl-animated-in')
-                       .removeClass(this.core.settings.animateIn)
-                       .removeClass(this.core.settings.animateOut);
-               this.core.onTransitionEnd();
-       };
-
-       /**
-        * Destroys the plugin.
-        * @public
-        */
-       Animate.prototype.destroy = function() {
-               var handler, property;
-
-               for (handler in this.handlers) {
-                       this.core.$element.off(handler, this.handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] 
= null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.Animate = Animate;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Autoplay Plugin
- * @version 2.1.0
- * @author Bartosz Wojciechowski
- * @author Artus Kolanowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       /**
-        * Creates the autoplay plugin.
-        * @class The Autoplay Plugin
-        * @param {Owl} scope - The Owl Carousel
-        */
-       var Autoplay = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * The autoplay timeout.
-                * @type {Timeout}
-                */
-               this._timeout = null;
-
-               /**
-                * Indicates whenever the autoplay is paused.
-                * @type {Boolean}
-                */
-               this._paused = false;
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'changed.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && e.property.name === 
'settings') {
-                                       if (this._core.settings.autoplay) {
-                                               this.play();
-                                       } else {
-                                               this.stop();
-                                       }
-                               } else if (e.namespace && e.property.name === 
'position') {
-                                       //console.log('play?', e);
-                                       if (this._core.settings.autoplay) {
-                                               this._setAutoPlayInterval();
-                                       }
-                               }
-                       }, this),
-                       'initialized.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.autoplay) {
-                                       this.play();
-                               }
-                       }, this),
-                       'play.owl.autoplay': $.proxy(function(e, t, s) {
-                               if (e.namespace) {
-                                       this.play(t, s);
-                               }
-                       }, this),
-                       'stop.owl.autoplay': $.proxy(function(e) {
-                               if (e.namespace) {
-                                       this.stop();
-                               }
-                       }, this),
-                       'mouseover.owl.autoplay': $.proxy(function() {
-                               if (this._core.settings.autoplayHoverPause && 
this._core.is('rotating')) {
-                                       this.pause();
-                               }
-                       }, this),
-                       'mouseleave.owl.autoplay': $.proxy(function() {
-                               if (this._core.settings.autoplayHoverPause && 
this._core.is('rotating')) {
-                                       this.play();
-                               }
-                       }, this),
-                       'touchstart.owl.core': $.proxy(function() {
-                               if (this._core.settings.autoplayHoverPause && 
this._core.is('rotating')) {
-                                       this.pause();
-                               }
-                       }, this),
-                       'touchend.owl.core': $.proxy(function() {
-                               if (this._core.settings.autoplayHoverPause) {
-                                       this.play();
-                               }
-                       }, this)
-               };
-
-               // register event handlers
-               this._core.$element.on(this._handlers);
-
-               // set default options
-               this._core.options = $.extend({}, Autoplay.Defaults, 
this._core.options);
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       Autoplay.Defaults = {
-               autoplay: false,
-               autoplayTimeout: 5000,
-               autoplayHoverPause: false,
-               autoplaySpeed: false
-       };
-
-       /**
-        * Starts the autoplay.
-        * @public
-        * @param {Number} [timeout] - The interval before the next animation 
starts.
-        * @param {Number} [speed] - The animation speed for the animations.
-        */
-       Autoplay.prototype.play = function(timeout, speed) {
-               this._paused = false;
-
-               if (this._core.is('rotating')) {
-                       return;
-               }
-
-               this._core.enter('rotating');
-
-               this._setAutoPlayInterval();
-       };
-
-       /**
-        * Gets a new timeout
-        * @private
-        * @param {Number} [timeout] - The interval before the next animation 
starts.
-        * @param {Number} [speed] - The animation speed for the animations.
-        * @return {Timeout}
-        */
-       Autoplay.prototype._getNextTimeout = function(timeout, speed) {
-               if ( this._timeout ) {
-                       window.clearTimeout(this._timeout);
-               }
-               return window.setTimeout($.proxy(function() {
-                       if (this._paused || this._core.is('busy') || 
this._core.is('interacting') || document.hidden) {
-                               return;
-                       }
-                       this._core.next(speed || 
this._core.settings.autoplaySpeed);
-               }, this), timeout || this._core.settings.autoplayTimeout);
-       };
-
-       /**
-        * Sets autoplay in motion.
-        * @private
-        */
-       Autoplay.prototype._setAutoPlayInterval = function() {
-               this._timeout = this._getNextTimeout();
-       };
-
-       /**
-        * Stops the autoplay.
-        * @public
-        */
-       Autoplay.prototype.stop = function() {
-               if (!this._core.is('rotating')) {
-                       return;
-               }
-
-               window.clearTimeout(this._timeout);
-               this._core.leave('rotating');
-       };
-
-       /**
-        * Stops the autoplay.
-        * @public
-        */
-       Autoplay.prototype.pause = function() {
-               if (!this._core.is('rotating')) {
-                       return;
-               }
-
-               this._paused = true;
-       };
-
-       /**
-        * Destroys the plugin.
-        */
-       Autoplay.prototype.destroy = function() {
-               var handler, property;
-
-               this.stop();
-
-               for (handler in this._handlers) {
-                       this._core.$element.off(handler, 
this._handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] 
= null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Navigation Plugin
- * @version 2.1.0
- * @author Artus Kolanowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-       'use strict';
-
-       /**
-        * Creates the navigation plugin.
-        * @class The Navigation Plugin
-        * @param {Owl} carousel - The Owl Carousel.
-        */
-       var Navigation = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Indicates whether the plugin is initialized or not.
-                * @protected
-                * @type {Boolean}
-                */
-               this._initialized = false;
-
-               /**
-                * The current paging indexes.
-                * @protected
-                * @type {Array}
-                */
-               this._pages = [];
-
-               /**
-                * All DOM elements of the user interface.
-                * @protected
-                * @type {Object}
-                */
-               this._controls = {};
-
-               /**
-                * Markup for an indicator.
-                * @protected
-                * @type {Array.<String>}
-                */
-               this._templates = [];
-
-               /**
-                * The carousel element.
-                * @type {jQuery}
-                */
-               this.$element = this._core.$element;
-
-               /**
-                * Overridden methods of the carousel.
-                * @protected
-                * @type {Object}
-                */
-               this._overrides = {
-                       next: this._core.next,
-                       prev: this._core.prev,
-                       to: this._core.to
-               };
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'prepared.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.dotsData) {
-                                       this._templates.push('<div class="' + 
this._core.settings.dotClass + '">' +
-                                               
$(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + 
'</div>');
-                               }
-                       }, this),
-                       'added.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.dotsData) {
-                                       this._templates.splice(e.position, 0, 
this._templates.pop());
-                               }
-                       }, this),
-                       'remove.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.dotsData) {
-                                       this._templates.splice(e.position, 1);
-                               }
-                       }, this),
-                       'changed.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && e.property.name == 
'position') {
-                                       this.draw();
-                               }
-                       }, this),
-                       'initialized.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && !this._initialized) {
-                                       this._core.trigger('initialize', null, 
'navigation');
-                                       this.initialize();
-                                       this.update();
-                                       this.draw();
-                                       this._initialized = true;
-                                       this._core.trigger('initialized', null, 
'navigation');
-                               }
-                       }, this),
-                       'refreshed.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && this._initialized) {
-                                       this._core.trigger('refresh', null, 
'navigation');
-                                       this.update();
-                                       this.draw();
-                                       this._core.trigger('refreshed', null, 
'navigation');
-                               }
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, Navigation.Defaults, 
this._core.options);
-
-               // register event handlers
-               this.$element.on(this._handlers);
-       };
-
-       /**
-        * Default options.
-        * @public
-        * @todo Rename `slideBy` to `navBy`
-        */
-       Navigation.Defaults = {
-               nav: false,
-               navText: [ 'prev', 'next' ],
-               navSpeed: false,
-               navElement: 'div',
-               navContainer: false,
-               navContainerClass: 'owl-nav',
-               navClass: [ 'owl-prev', 'owl-next' ],
-               slideBy: 1,
-               dotClass: 'owl-dot',
-               dotsClass: 'owl-dots',
-               dots: true,
-               dotsEach: false,
-               dotsData: false,
-               dotsSpeed: false,
-               dotsContainer: false
-       };
-
-       /**
-        * Initializes the layout of the plugin and extends the carousel.
-        * @protected
-        */
-       Navigation.prototype.initialize = function() {
-               var override,
-                       settings = this._core.settings;
-
-               // create DOM structure for relative navigation
-               this._controls.$relative = (settings.navContainer ? 
$(settings.navContainer)
-                       : 
$('<div>').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');
-
-               this._controls.$previous = $('<' + settings.navElement + '>')
-                       .addClass(settings.navClass[0])
-                       .html(settings.navText[0])
-                       .prependTo(this._controls.$relative)
-                       .on('click', $.proxy(function(e) {
-                               this.prev(settings.navSpeed);
-                       }, this));
-               this._controls.$next = $('<' + settings.navElement + '>')
-                       .addClass(settings.navClass[1])
-                       .html(settings.navText[1])
-                       .appendTo(this._controls.$relative)
-                       .on('click', $.proxy(function(e) {
-                               this.next(settings.navSpeed);
-                       }, this));
-
-               // create DOM structure for absolute navigation
-               if (!settings.dotsData) {
-                       this._templates = [ $('<div>')
-                               .addClass(settings.dotClass)
-                               .append($('<span>'))
-                               .prop('outerHTML') ];
-               }
-
-               this._controls.$absolute = (settings.dotsContainer ? 
$(settings.dotsContainer)
-                       : 
$('<div>').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');
-
-               this._controls.$absolute.on('click', 'div', $.proxy(function(e) 
{
-                       var index = 
$(e.target).parent().is(this._controls.$absolute)
-                               ? $(e.target).index() : 
$(e.target).parent().index();
-
-                       e.preventDefault();
-
-                       this.to(index, settings.dotsSpeed);
-               }, this));
-
-               // override public methods of the carousel
-               for (override in this._overrides) {
-                       this._core[override] = $.proxy(this[override], this);
-               }
-       };
-
-       /**
-        * Destroys the plugin.
-        * @protected
-        */
-       Navigation.prototype.destroy = function() {
-               var handler, control, property, override;
-
-               for (handler in this._handlers) {
-                       this.$element.off(handler, this._handlers[handler]);
-               }
-               for (control in this._controls) {
-                       this._controls[control].remove();
-               }
-               for (override in this.overides) {
-                       this._core[override] = this._overrides[override];
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] 
= null);
-               }
-       };
-
-       /**
-        * Updates the internal state.
-        * @protected
-        */
-       Navigation.prototype.update = function() {
-               var i, j, k,
-                       lower = this._core.clones().length / 2,
-                       upper = lower + this._core.items().length,
-                       maximum = this._core.maximum(true),
-                       settings = this._core.settings,
-                       size = settings.center || settings.autoWidth || 
settings.dotsData
-                               ? 1 : settings.dotsEach || settings.items;
-
-               if (settings.slideBy !== 'page') {
-                       settings.slideBy = Math.min(settings.slideBy, 
settings.items);
-               }
-
-               if (settings.dots || settings.slideBy == 'page') {
-                       this._pages = [];
-
-                       for (i = lower, j = 0, k = 0; i < upper; i++) {
-                               if (j >= size || j === 0) {
-                                       this._pages.push({
-                                               start: Math.min(maximum, i - 
lower),
-                                               end: i - lower + size - 1
-                                       });
-                                       if (Math.min(maximum, i - lower) === 
maximum) {
-                                               break;
-                                       }
-                                       j = 0, ++k;
-                               }
-                               j += this._core.mergers(this._core.relative(i));
-                       }
-               }
-       };
-
-       /**
-        * Draws the user interface.
-        * @todo The option `dotsData` wont work.
-        * @protected
-        */
-       Navigation.prototype.draw = function() {
-               var difference,
-                       settings = this._core.settings,
-                       disabled = this._core.items().length <= settings.items,
-                       index = this._core.relative(this._core.current()),
-                       loop = settings.loop || settings.rewind;
-
-               this._controls.$relative.toggleClass('disabled', !settings.nav 
|| disabled);
-
-               if (settings.nav) {
-                       this._controls.$previous.toggleClass('disabled', !loop 
&& index <= this._core.minimum(true));
-                       this._controls.$next.toggleClass('disabled', !loop && 
index >= this._core.maximum(true));
-               }
-
-               this._controls.$absolute.toggleClass('disabled', !settings.dots 
|| disabled);
-
-               if (settings.dots) {
-                       difference = this._pages.length - 
this._controls.$absolute.children().length;
-
-                       if (settings.dotsData && difference !== 0) {
-                               
this._controls.$absolute.html(this._templates.join(''));
-                       } else if (difference > 0) {
-                               this._controls.$absolute.append(new 
Array(difference + 1).join(this._templates[0]));
-                       } else if (difference < 0) {
-                               
this._controls.$absolute.children().slice(difference).remove();
-                       }
-
-                       
this._controls.$absolute.find('.active').removeClass('active');
-                       
this._controls.$absolute.children().eq($.inArray(this.current(), 
this._pages)).addClass('active');
-               }
-       };
-
-       /**
-        * Extends event data.
-        * @protected
-        * @param {Event} event - The event object which gets thrown.
-        */
-       Navigation.prototype.onTrigger = function(event) {
-               var settings = this._core.settings;
-
-               event.page = {
-                       index: $.inArray(this.current(), this._pages),
-                       count: this._pages.length,
-                       size: settings && (settings.center || 
settings.autoWidth || settings.dotsData
-                               ? 1 : settings.dotsEach || settings.items)
-               };
-       };
-
-       /**
-        * Gets the current page position of the carousel.
-        * @protected
-        * @returns {Number}
-        */
-       Navigation.prototype.current = function() {
-               var current = this._core.relative(this._core.current());
-               return $.grep(this._pages, $.proxy(function(page, index) {
-                       return page.start <= current && page.end >= current;
-               }, this)).pop();
-       };
-
-       /**
-        * Gets the current succesor/predecessor position.
-        * @protected
-        * @returns {Number}
-        */
-       Navigation.prototype.getPosition = function(successor) {
-               var position, length,
-                       settings = this._core.settings;
-
-               if (settings.slideBy == 'page') {
-                       position = $.inArray(this.current(), this._pages);
-                       length = this._pages.length;
-                       successor ? ++position : --position;
-                       position = this._pages[((position % length) + length) % 
length].start;
-               } else {
-                       position = this._core.relative(this._core.current());
-                       length = this._core.items().length;
-                       successor ? position += settings.slideBy : position -= 
settings.slideBy;
-               }
-
-               return position;
-       };
-
-       /**
-        * Slides to the next item or page.
-        * @public
-        * @param {Number} [speed=false] - The time in milliseconds for the 
transition.
-        */
-       Navigation.prototype.next = function(speed) {
-               $.proxy(this._overrides.to, this._core)(this.getPosition(true), 
speed);
-       };
-
-       /**
-        * Slides to the previous item or page.
-        * @public
-        * @param {Number} [speed=false] - The time in milliseconds for the 
transition.
-        */
-       Navigation.prototype.prev = function(speed) {
-               $.proxy(this._overrides.to, 
this._core)(this.getPosition(false), speed);
-       };
-
-       /**
-        * Slides to the specified item or page.
-        * @public
-        * @param {Number} position - The position of the item or page.
-        * @param {Number} [speed] - The time in milliseconds for the 
transition.
-        * @param {Boolean} [standard=false] - Whether to use the standard 
behaviour or not.
-        */
-       Navigation.prototype.to = function(position, speed, standard) {
-               var length;
-
-               if (!standard && this._pages.length) {
-                       length = this._pages.length;
-                       $.proxy(this._overrides.to, 
this._core)(this._pages[((position % length) + length) % length].start, speed);
-               } else {
-                       $.proxy(this._overrides.to, this._core)(position, 
speed);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Hash Plugin
- * @version 2.1.0
- * @author Artus Kolanowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-       'use strict';
-
-       /**
-        * Creates the hash plugin.
-        * @class The Hash Plugin
-        * @param {Owl} carousel - The Owl Carousel
-        */
-       var Hash = function(carousel) {
-               /**
-                * Reference to the core.
-                * @protected
-                * @type {Owl}
-                */
-               this._core = carousel;
-
-               /**
-                * Hash index for the items.
-                * @protected
-                * @type {Object}
-                */
-               this._hashes = {};
-
-               /**
-                * The carousel element.
-                * @type {jQuery}
-                */
-               this.$element = this._core.$element;
-
-               /**
-                * All event handlers.
-                * @protected
-                * @type {Object}
-                */
-               this._handlers = {
-                       'initialized.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && 
this._core.settings.startPosition === 'URLHash') {
-                                       
$(window).trigger('hashchange.owl.navigation');
-                               }
-                       }, this),
-                       'prepared.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace) {
-                                       var hash = 
$(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash');
-
-                                       if (!hash) {
-                                               return;
-                                       }
-
-                                       this._hashes[hash] = e.content;
-                               }
-                       }, this),
-                       'changed.owl.carousel': $.proxy(function(e) {
-                               if (e.namespace && e.property.name === 
'position') {
-                                       var current = 
this._core.items(this._core.relative(this._core.current())),
-                                               hash = $.map(this._hashes, 
function(item, hash) {
-                                                       return item === current 
? hash : null;
-                                               }).join();
-
-                                       if (!hash || 
window.location.hash.slice(1) === hash) {
-                                               return;
-                                       }
-
-                                       window.location.hash = hash;
-                               }
-                       }, this)
-               };
-
-               // set default options
-               this._core.options = $.extend({}, Hash.Defaults, 
this._core.options);
-
-               // register the event handlers
-               this.$element.on(this._handlers);
-
-               // register event listener for hash navigation
-               $(window).on('hashchange.owl.navigation', $.proxy(function(e) {
-                       var hash = window.location.hash.substring(1),
-                               items = this._core.$stage.children(),
-                               position = this._hashes[hash] && 
items.index(this._hashes[hash]);
-
-                       if (position === undefined || position === 
this._core.current()) {
-                               return;
-                       }
-
-                       this._core.to(this._core.relative(position), false, 
true);
-               }, this));
-       };
-
-       /**
-        * Default options.
-        * @public
-        */
-       Hash.Defaults = {
-               URLhashListener: false
-       };
-
-       /**
-        * Destroys the plugin.
-        * @public
-        */
-       Hash.prototype.destroy = function() {
-               var handler, property;
-
-               $(window).off('hashchange.owl.navigation');
-
-               for (handler in this._handlers) {
-                       this._core.$element.off(handler, 
this._handlers[handler]);
-               }
-               for (property in Object.getOwnPropertyNames(this)) {
-                       typeof this[property] != 'function' && (this[property] 
= null);
-               }
-       };
-
-       $.fn.owlCarousel.Constructor.Plugins.Hash = Hash;
-
-})(window.Zepto || window.jQuery, window, document);
-
-/**
- * Support Plugin
- *
- * @version 2.1.0
- * @author Vivid Planet Software GmbH
- * @author Artus Kolanowski
- * @author David Deutsch
- * @license The MIT License (MIT)
- */
-;(function($, window, document, undefined) {
-
-       var style = $('<support>').get(0).style,
-               prefixes = 'Webkit Moz O ms'.split(' '),
-               events = {
-                       transition: {
-                               end: {
-                                       WebkitTransition: 'webkitTransitionEnd',
-                                       MozTransition: 'transitionend',
-                                       OTransition: 'oTransitionEnd',
-                                       transition: 'transitionend'
-                               }
-                       },
-                       animation: {
-                               end: {
-                                       WebkitAnimation: 'webkitAnimationEnd',
-                                       MozAnimation: 'animationend',
-                                       OAnimation: 'oAnimationEnd',
-                                       animation: 'animationend'
-                               }
-                       }
-               },
-               tests = {
-                       csstransforms: function() {
-                               return !!test('transform');
-                       },
-                       csstransforms3d: function() {
-                               return !!test('perspective');
-                       },
-                       csstransitions: function() {
-                               return !!test('transition');
-                       },
-                       cssanimations: function() {
-                               return !!test('animation');
-                       }
-               };
-
-       function test(property, prefixed) {
-               var result = false,
-                       upper = property.charAt(0).toUpperCase() + 
property.slice(1);
-
-               $.each((property + ' ' + prefixes.join(upper + ' ') + 
upper).split(' '), function(i, property) {
-                       if (style[property] !== undefined) {
-                               result = prefixed ? property : true;
-                               return false;
-                       }
-               });
-
-               return result;
-       }
-
-       function prefixed(property) {
-               return test(property, true);
-       }
-
-       if (tests.csstransitions()) {
-               /* jshint -W053 */
-               $.support.transition = new String(prefixed('transition'))
-               $.support.transition.end = events.transition.end[ 
$.support.transition ];
-       }
-
-       if (tests.cssanimations()) {
-               /* jshint -W053 */
-               $.support.animation = new String(prefixed('animation'))
-               $.support.animation.end = events.animation.end[ 
$.support.animation ];
-       }
-
-       if (tests.csstransforms()) {
-               /* jshint -W053 */
-               $.support.transform = new String(prefixed('transform'));
-               $.support.transform3d = tests.csstransforms3d();
-       }
-
-})(window.Zepto || window.jQuery, window, document);
diff --git a/static/js/owl.script.js b/static/js/owl.script.js
deleted file mode 100644
index 37effcc..0000000
--- a/static/js/owl.script.js
+++ /dev/null
@@ -1,82 +0,0 @@
-$(document).ready(function() {
-  var owl = $('.leader_innr .owl-carousel');
-      owl.owlCarousel({
-        margin: 30,
-        nav: true,
-        dotsEach: true,
-        autoplay: true,
-        loop: true,
-        responsive: {
-          0: {
-            items: 1
-          },
-          450: {
-            items: 2
-          },
-          600: {
-            items: 2
-          },
-          991: {
-            items: 3
-          },
-          1200: {
-            items: 4
-          }
-        }
-      })
-       var owl = $('.customrcaro');
-      owl.owlCarousel({
-        margin: 0,
-        nav: true,
-        dotsEach: true,
-        autoplay: true,
-        loop: true,
-        responsive: {
-          0: {
-            items: 1
-          },
-          450: {
-            items: 1
-          },
-          600: {
-            items: 2
-          },
-          991: {
-            items: 2
-          },
-          1200: {
-            items: 3
-          }
-        }
-      })
-      var owl = $('.momelecte');
-      owl.owlCarousel({
-        margin: 0,
-        nav: true,
-        dotsEach: true,
-        autoplay: true,
-        autoHeight : true,
-        loop: true,
-        responsive: {
-          0: {
-            items: 1
-          },
-          450: {
-            items: 1
-          },
-          600: {
-            items: 1
-          },
-          991: {
-            items: 1
-          },
-          1200: {
-            items: 1
-          }
-        }
-      })
-      
-    })
-
-
-
diff --git a/static/scss/owl.carousel.scss b/static/scss/owl.carousel.scss
deleted file mode 100644
index 365f29d..0000000
--- a/static/scss/owl.carousel.scss
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- * Owl Carousel v2.2.0
- * Copyright 2013-2016 David Deutsch
- * Licensed under MIT 
(https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE)
- */
-/*
- *  Owl Carousel - Core
- */
-.owl-carousel {
-  /* display: none; | still looks ok when noscript blocks carousel rendering */
-  width: 100%;
-  -webkit-tap-highlight-color: transparent;
-  /* position relative and z-index fix webkit rendering fonts issue */
-  position: relative;
-  z-index: 1; }
-  .owl-carousel .owl-stage {
-    position: relative;
-    -ms-touch-action: pan-Y;
-    touch-action: pan-y;
-  }
-  .owl-carousel .owl-stage:after {
-    content: ".";
-    display: block;
-    clear: both;
-    visibility: hidden;
-    line-height: 0;
-    height: 0; }
-  .owl-carousel .owl-stage-outer {
-    position: relative;
-    overflow: hidden;
-    /* fix for flashing background */
-    -webkit-transform: translate3d(0px, 0px, 0px);
-    transform: translate(0, 0, 0);
-  }
-  .owl-carousel .owl-wrapper,
-  .owl-carousel .owl-item {
-    -webkit-backface-visibility: hidden;
-    -moz-backface-visibility: hidden;
-    -ms-backface-visibility: hidden;
-    backface-visibility: hidden;
-    -webkit-transform: translate3d(0, 0, 0);
-    -moz-transform: translate3d(0, 0, 0);
-    -ms-transform: translate3d(0, 0, 0);
-    transform: translate3d(0, 0, 0);
-  }
-  .owl-carousel .owl-item {
-    position: relative;
-    min-height: 1px;
-    float: left;
-    backface-visibility: hidden;
-    -webkit-backface-visibility: hidden;
-    -webkit-tap-highlight-color: transparent;
-    -webkit-touch-callout: none;
-  }
-  .owl-carousel .owl-item img {
-    display: block;
-    width: 100%; }
-  .owl-carousel .owl-nav.disabled,
-  .owl-carousel .owl-dots.disabled {
-    display: none; }
-  .owl-carousel .owl-nav .owl-prev,
-  .owl-carousel .owl-nav .owl-next,
-  .owl-carousel .owl-dot {
-    cursor: pointer;
-    cursor: hand;
-    -webkit-user-select: none;
-    -khtml-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none; }
-  .owl-carousel.owl-loaded {
-    display: block; }
-  .owl-carousel.owl-loading {
-    opacity: 0;
-    display: block; }
-  .owl-carousel.owl-hidden {
-    opacity: 0; }
-  .owl-carousel.owl-refresh .owl-item {
-    visibility: hidden; }
-  .owl-carousel.owl-drag .owl-item {
-    -webkit-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none; }
-  .owl-carousel.owl-grab {
-    cursor: move;
-    cursor: grab; }
-  .owl-carousel.owl-rtl {
-    direction: rtl; }
-  .owl-carousel.owl-rtl .owl-item {
-    float: right; }
-
-/* No Js */
-.no-js .owl-carousel {
-  display: block; }
-
-/*
- *  Owl Carousel - Animate Plugin
- */
-.owl-carousel .animated {
-  -webkit-animation-duration: 1000ms;
-          animation-duration: 1000ms;
-  -webkit-animation-fill-mode: both;
-          animation-fill-mode: both; }
-
-.owl-carousel .owl-animated-in {
-  z-index: 0; }
-
-.owl-carousel .owl-animated-out {
-  z-index: 1; }
-
-.owl-carousel .fadeOut {
-  -webkit-animation-name: fadeOut;
-          animation-name: fadeOut; }
-
-@-webkit-keyframes fadeOut {
-  0% {
-    opacity: 1; }
-  100% {
-    opacity: 0; } }
-
-@keyframes fadeOut {
-  0% {
-    opacity: 1; }
-  100% {
-    opacity: 0; } }
-
-/*
- *     Owl Carousel - Auto Height Plugin
- */
-.owl-height {
-  transition: height 500ms ease-in-out; }
-
-/*
- *     Owl Carousel - Lazy Load Plugin
- */
-.owl-carousel .owl-item .owl-lazy {
-  opacity: 0;
-  transition: opacity 400ms ease; }
-
-.owl-carousel .owl-item img.owl-lazy {
-  -webkit-transform-style: preserve-3d;
-          transform-style: preserve-3d; }
-
-/*
- *     Owl Carousel - Video Plugin
- */
-.owl-carousel .owl-video-wrapper {
-  position: relative;
-  height: 100%;
-  background: #000; }
-
-.owl-carousel .owl-video-play-icon {
-  position: absolute;
-  height: 80px;
-  width: 80px;
-  left: 50%;
-  top: 50%;
-  margin-left: -40px;
-  margin-top: -40px;
-  background: url("owl.video.play.png") no-repeat;
-  cursor: pointer;
-  z-index: 1;
-  backface-visibility: hidden;
-  -webkit-backface-visibility: hidden;
-  transition: -webkit-transform 100ms ease;
-  transition: transform 100ms ease; }
-
-.owl-carousel .owl-video-play-icon:hover {
-  -webkit-transform: scale(1.3, 1.3);
-      -ms-transform: scale(1.3, 1.3);
-          transform: scale(1.3, 1.3); }
-
-.owl-carousel .owl-video-playing .owl-video-tn,
-.owl-carousel .owl-video-playing .owl-video-play-icon {
-  display: none; }
-
-.owl-carousel .owl-video-tn {
-  opacity: 0;
-  height: 100%;
-  background-position: center center;
-  background-repeat: no-repeat;
-  background-size: contain;
-  transition: opacity 400ms ease; }
-
-.owl-carousel .owl-video-frame {
-  position: relative;
-  z-index: 1;
-  height: 100%;
-  width: 100%; }

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]