From 38532c0b4abde5425222e430d49bc4abd27eea50 Mon Sep 17 00:00:00 2001
From: facelessuser
Date: Sun, 21 Dec 2025 12:52:37 -0700
Subject: [PATCH 1/9] Move docs to Zensical and add Python 3.14 support
---
.github/workflows/build.yml | 4 +-
.github/workflows/deploy.yml | 48 ++++++++++----
docs/src/dictionary/en-custom.txt | 1 +
docs/src/markdown/.snippets/links.md | 3 +-
docs/src/markdown/about/contributing.md | 8 +--
docs/src/markdown/about/license.md | 2 +-
docs/theme/announce.html | 5 +-
.../pymdownx-extras/extra-835c322b67.css | 2 +
.../pymdownx-extras/extra-835c322b67.css.map | 1 +
.../pymdownx-extras/extra-loader-Ccztcqfq.js | 4 ++
.../extra-loader-Ccztcqfq.js.map | 1 +
docs/theme/main.html | 17 +++++
hatch_build.py | 1 +
pyproject.toml | 12 ++--
requirements/docs.txt | 6 +-
rummage/lib/gui/controls/webview.py | 2 +-
rummage/lib/gui/data/docs/.dochash | 2 +-
.../lib/gui/data/docs/about/contributing.html | 14 ++--
rummage/lib/gui/data/docs/about/license.html | 2 +-
rummage/lib/gui/data/docs/extras.html | 6 +-
rummage/lib/gui/data/docs/preferences.html | 42 ++++++------
rummage/lib/gui/data/docs/search.html | 30 ++++-----
rummage/lib/gui/data/docs/sitemap.html | 65 -------------------
rummage/lib/gui/data/docs/usage.html | 14 ++--
rummage/lib/gui/util/images.py | 4 +-
tests/test_rumcore.py | 2 +-
tests/test_text_decode.py | 2 +-
tools/gen_docs.py | 29 ++++++---
mkdocs-internal.yml => zensical-internal.yml | 0
mkdocs.yml => zensical.yml | 43 ++++++++----
30 files changed, 194 insertions(+), 178 deletions(-)
create mode 100644 docs/theme/assets/pymdownx-extras/extra-835c322b67.css
create mode 100644 docs/theme/assets/pymdownx-extras/extra-835c322b67.css.map
create mode 100644 docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js
create mode 100644 docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js.map
create mode 100644 docs/theme/main.html
delete mode 100644 rummage/lib/gui/data/docs/sitemap.html
rename mkdocs-internal.yml => zensical-internal.yml (100%)
rename mkdocs.yml => zensical.yml (79%)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 09ed5e45..6aea54da 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -17,7 +17,7 @@ jobs:
max-parallel: 4
matrix:
platform: [ubuntu-latest, windows-latest]
- python-version: [3.9, '3.10', 3.11, 3.12, 3.13]
+ python-version: [3.9, '3.10', 3.11, 3.12, 3.13, 3.14]
include:
- python-version: 3.9
tox-env: py39
@@ -29,6 +29,8 @@ jobs:
tox-env: py312
- python-version: '3.13'
tox-env: py313
+ - python-version: '3.14'
+ tox-env: py314
env:
TOXENV: ${{ matrix.tox-env }}
diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
index 08eafc4e..6761e425 100644
--- a/.github/workflows/deploy.yml
+++ b/.github/workflows/deploy.yml
@@ -8,43 +8,69 @@ on:
jobs:
documents:
+ strategy:
+ max-parallel: 4
+ matrix:
+ python-version: [3.13]
+
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- - name: Set up Python
+ - name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
- python-version: '3.13'
+ python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
- python -m pip install --upgrade pip build setuptools wheel
+ python -m pip install --upgrade pip build wheel
python -m pip install -r requirements/docs.txt
- name: Deploy documents
run: |
- git config user.name facelessuser
+ git config user.name ${{ secrets.GH_USER }}
git config user.email "${{ secrets.GH_EMAIL }}"
git remote add gh-token "https://${{ secrets.GH_TOKEN }}@github.com/facelessuser/Rummage.git"
git fetch gh-token && git fetch gh-token gh-pages:gh-pages
python -m mkdocs gh-deploy -v --clean --remote-name gh-token
git push gh-token gh-pages
- pypi:
+ build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
- python-version: '3.13'
- - name: Package
+ python-version: 3.13
+ - name: Build
run: |
- pip install --upgrade build
+ pip install --upgrade pip build
python -m build -s
- - name: Publish
+ - name: Store the distribution packages
+ uses: actions/upload-artifact@v4
+ with:
+ name: python-package-distributions
+ path: dist/
+
+ pypi-publish:
+ needs:
+ - build
+ runs-on: ubuntu-latest
+ environment: pypi
+ permissions:
+ # IMPORTANT: this permission is mandatory for Trusted Publishing
+ id-token: write
+
+ steps:
+ - name: Download all the dists
+ uses: actions/download-artifact@v4
+ with:
+ name: python-package-distributions
+ path: dist/
+ - name: Publish distribution
uses: pypa/gh-action-pypi-publish@release/v1
with:
- user: __token__
- password: ${{ secrets.PYPI_PWD }}
+ print-hash: true
+
diff --git a/docs/src/dictionary/en-custom.txt b/docs/src/dictionary/en-custom.txt
index 5a753521..8ce934c2 100644
--- a/docs/src/dictionary/en-custom.txt
+++ b/docs/src/dictionary/en-custom.txt
@@ -83,6 +83,7 @@ Wildcard
WxFormBuilder
XFCE
Xcode
+Zensical
accessor
autocomplete
backend
diff --git a/docs/src/markdown/.snippets/links.md b/docs/src/markdown/.snippets/links.md
index 03a4dd71..9a221cb7 100644
--- a/docs/src/markdown/.snippets/links.md
+++ b/docs/src/markdown/.snippets/links.md
@@ -14,8 +14,6 @@
[fullmatch]: https://docs.python.org/3/library/re.html#re.fullmatch
[grepwin]: http://stefanstools.sourceforge.net/grepWin.html
[markdown]: https://github.com/Python-Markdown/markdown
-[mkdocs]: https://github.com/mkdocs/mkdocs
-[mkdocs-material]: https://github.com/squidfunk/mkdocs-material
[posix]: https://facelessuser.github.io/wcmatch/fnmatch/#posix-character-classes
[pygments]: http://pygments.org/
[pymdown-extensions]: https://github.com/facelessuser/pymdown-extensions
@@ -27,3 +25,4 @@
[wcmatch-fnmatch]: https://facelessuser.github.io/wcmatch/fnmatch/#syntax
[wxpython]: https://pypi.org/project/wxPython/
[wxpython-prereq]: https://github.com/wxWidgets/Phoenix/blob/master/README.rst#prerequisites
+[zensical]: https://github.com/zensical/zensical
diff --git a/docs/src/markdown/about/contributing.md b/docs/src/markdown/about/contributing.md
index 9ac53eed..a5e4ea36 100644
--- a/docs/src/markdown/about/contributing.md
+++ b/docs/src/markdown/about/contributing.md
@@ -88,10 +88,10 @@ with documentation is always appreciated and can be done via pull requests. The
validation tests if only updating documentation.
To build the documentation, you will need the necessary requirements. You can get them by running
-`pip install -r requirements/docs.txt`. We currently use a combination of [MkDocs][mkdocs], the
-[Material theme][mkdocs-material], and [PyMdown Extensions][pymdown-extensions] to render the docs. You can preview
-the docs if you install these packages via the requirements file. The command for previewing the docs is
-`mkdocs serve`. It should be run from the root directory. You can then view the documents at `localhost:8000`.
+`pip install -r requirements/docs.txt`. We currently use [Zensical][zensical] and [PyMdown Extensions][pymdown-extensions]
+to render the docs. You can preview the docs if you install these packages via the requirements file. The command for
+previewing the docs is `zensical serve`. It should be run from the root directory. You can then view the documents at
+`localhost:8000`.
When providing documentation updates, please generate Rummage's internal documentation via `python tools/gen_docs.py`.
Pull requests will currently fail if the documentation is not updated along with the requested changes.
diff --git a/docs/src/markdown/about/license.md b/docs/src/markdown/about/license.md
index 2397f39a..bf8f5b50 100644
--- a/docs/src/markdown/about/license.md
+++ b/docs/src/markdown/about/license.md
@@ -2,7 +2,7 @@
MIT license.
-Copyright (c) 2013 - 2024 Isaac Muse
+Copyright (c) 2013 - 2025 Isaac Muse
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
diff --git a/docs/theme/announce.html b/docs/theme/announce.html
index 2bc6d0d9..04a6682f 100644
--- a/docs/theme/announce.html
+++ b/docs/theme/announce.html
@@ -1,5 +1,6 @@
-Sponsorship
+Sponsorship
is now available!
-
+ {% set icon = "octicons/heart-fill-16" %}
+ {% include ".icons/" ~ icon ~ ".svg" %}
diff --git a/docs/theme/assets/pymdownx-extras/extra-835c322b67.css b/docs/theme/assets/pymdownx-extras/extra-835c322b67.css
new file mode 100644
index 00000000..7d1e51c9
--- /dev/null
+++ b/docs/theme/assets/pymdownx-extras/extra-835c322b67.css
@@ -0,0 +1,2 @@
+:root>*{--md-default-bg-color--trans: rgb(100%, 100%, 100%, 0);--md-tab-control-bg: var(--md-default-bg-color);--md-code-fg-color: #1F1F1F;--md-code-bg-color: #F5F5F5;--md-code-title-bg-color: #F5F5F5;--md-code-inline-bg-color: #F5F5F5;--md-code-hl-operator-color: #A3134D;--md-code-hl-punctuation-color: #1F1F1F;--md-code-hl-string-color: #836E15;--md-code-hl-special-color: #644AC9;--md-code-hl-number-color: #644AC9;--md-code-hl-keyword-color: #A3134D;--md-code-hl-name-color: #1F1F1F;--md-code-hl-constant-color: #644AC9;--md-code-hl-function-color: #14720A;--md-code-hl-comment-color: #635D97;--md-code-hl-variable-color: #A34D14;--md-code-hl-generic-color: #635D97;--md-code-hl-color: #CFCFDE;--md-code-hl-color--light: #DCDEEF;--md-code-hl-entity-color: #14720A;--md-code-hl-tag-color: #A3134D;--md-code-hl-namespace-color: #1F1F1F;--md-code-hl-builtin-color: #036A96;--md-code-hl-class-color: #036A96;--md-code-special-bg-color: #DCDEEF;--md-steps-bg-color: var(--md-code-bg-color);--md-steps-fg-color: var(--md-code-fg-color);--md-steps-border-color: hsla(0, 0%, 75%, 1);--md-typeset-a-color: #00bcd4;--md-progress-stripe: var(--md-default-bg-color--lighter);--md-progress-100: #00e676;--md-progress-80: #00e676;--md-progress-60: #fbc02d;--md-progress-40: #ff9100;--md-progress-20: #ff5252;--md-progress-0: #ff1744;--md-typeset-kbd-color: rgb(228.3721025416, 228.3721025416, 228.3721025416);--md-typeset-kbd-border-color: rgb(164.4010497691, 164.4010497691, 164.4010497691);--md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1)}:root>*[data-md-color-scheme=slate]{--md-default-fg-color: hsla(60, 30%, 96.078%, 0.87);--md-default-fg-color--light: hsla(60, 30%, 96.078%, 0.54);--md-default-fg-color--lighter: hsla(60, 30%, 96.078%, 0.36);--md-default-fg-color--lightest: hsla(60, 30%, 96.078%, 0.12);--md-default-autocomplete-fg-color: hsla(60, 30%, 96.078%, 0.4);--md-shadow-z2: 0 0.2rem 0.5rem hsla(0, 0%, 0%, 0.3), 0 0 0.05rem hsla(0, 0%, 0%, 0.2);--md-footer-fg-color: var(--md-default-fg-color);--md-default-bg-color: var(--md-default-bg-color--darkest);--md-default-bg-color--light: color(srgb 0.090174358 0.0958277825 0.1278638548 / 0.7);--md-default-bg-color--lighter: color(srgb 0.090174358 0.0958277825 0.1278638548 / 0.4);--md-default-bg-color--lightest: color(srgb 0.090174358 0.0958277825 0.1278638548 / 0.1);--md-default-bg-color--trans: color(srgb 0.090174358 0.0958277825 0.1278638548 / 0);--md-tab-control-bg: var(--md-default-bg-color--dark);--md-default-bg-color--dark: color(srgb 0.1400822885 0.147679243 0.1907286518);--md-default-bg-color--darker: color(srgb 0.1273335013 0.1344339886 0.1746700834);--md-default-bg-color--darkest: color(srgb 0.090174358 0.0958277825 0.1278638548);--md-text-color: var(--md-default-fg-color);--md-typeset-color: var(--md-default-fg-color);--md-admonition-fg-color: var(--md-default-fg-color);--md-code-fg-color: hsl(60, 30%, 96.078%);--md-code-bg-color: hsl(231, 15%, 18%);--md-code-title-bg-color: hsl(231, 15%, 18%);--md-code-inline-bg-color: hsl(231, 15%, 18%);--md-code-hl-operator-color: hsl(326, 100%, 74%);--md-code-hl-punctuation-color: hsl(60, 30%, 96.078%);--md-code-hl-string-color: hsl(65, 92%, 76%);--md-code-hl-special-color: hsl(265, 89%, 78%);--md-code-hl-number-color: hsl(265, 89%, 78%);--md-code-hl-keyword-color: hsl(326, 100%, 74%);--md-code-hl-name-color: hsl(60, 30%, 96.078%);--md-code-hl-constant-color: hsl(265, 89%, 78%);--md-code-hl-function-color: hsl(135, 94%, 65%);--md-code-hl-comment-color: hsl(225, 27%, 51%);--md-code-hl-variable-color: hsl(31, 100%, 71%);--md-code-hl-generic-color: hsl(225, 27%, 51%);--md-code-hl-color: hsl(231, 15%, 30%);--md-code-hl-color--light: hsl(231, 25%, 25%);--md-code-bg-color--light: hsla(231, 15%, 18%, 0.9);--md-code-bg-color--lighter: hsla(231, 15%, 18%, 0.5);--md-code-hl-entity-color: hsl(135, 94%, 65%);--md-code-hl-tag-color: hsl(326, 100%, 74%);--md-code-hl-namespace-color: hsl(60, 30%, 96.078%);--md-code-hl-builtin-color: hsl(191, 97%, 77%);--md-code-hl-class-color: hsl(191, 97%, 77%);--md-code-special-bg-color: hsl(231, 25%, 25%);--md-steps-border-color: hsl(230.6613379686, 10.4241713343%, 28.1575403575%);--md-typeset-a-color: hsl(191, 97%, 77%);--md-typeset-mark-color: hsl(75.3111515854, 11.5600114451%, 37.8888925515%);--md-typeset-del-color: hsl(314.8219481072, 22.0434125534%, 35.1703201111%);--md-typeset-ins-color: hsl(145.2334928709, 27.8121663576%, 33.1574755691%);--md-progress-stripe: var(--md-default-bg-color--lightest);--md-progress-100: hsl(135, 94%, 65%);--md-progress-80: hsl(96.9286079031, 93.5050765575%, 74.7933068737%);--md-progress-60: hsl(65, 92%, 76%);--md-progress-40: hsl(31, 100%, 71%);--md-progress-20: hsl(326, 100%, 74%);--md-progress-0: hsl(0, 100%, 67%);--md-typeset-kbd-color: var(--md-default-fg-color--lightest);--md-typeset-kbd-border-color: var(--md-default-bg-color--dark);--md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter)}[data-md-color-scheme=slate][data-md-color-primary=red],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=red]{--md-primary-code-bg-color: hsl(332.2545890109, 15.8127407999%, 23.5759703429%);--md-primary-fg-color: hsla(0deg, 100%, 67%, 1);--md-primary-fg-color--transparent: hsla(0deg, 100%, 67%, 0.2);--md-primary-fg-color--light: hsla(0deg, 100%, 72%, 1);--md-primary-fg-color--dark: hsla(0deg, 100%, 62%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=pink],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=pink]{--md-primary-code-bg-color: hsl(288.4757168622, 14.8889902037%, 24.6712834924%);--md-primary-fg-color: hsla(326deg, 100%, 74%, 1);--md-primary-fg-color--transparent: hsla(326deg, 100%, 74%, 0.2);--md-primary-fg-color--light: hsla(326deg, 100%, 79%, 1);--md-primary-fg-color--dark: hsla(326deg, 100%, 69%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=purple],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=purple]{--md-primary-code-bg-color: hsl(248.4980702, 16.8923581309%, 26.4141657947%);--md-primary-fg-color: hsla(265deg, 89%, 78%, 1);--md-primary-fg-color--transparent: hsla(265deg, 89%, 78%, 0.2);--md-primary-fg-color--light: hsla(265deg, 89%, 83%, 1);--md-primary-fg-color--dark: hsla(265deg, 89%, 73%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=deep-purple],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=deep-purple]{--md-primary-code-bg-color: hsl(248.4980702, 16.8923581309%, 26.4141657947%);--md-primary-fg-color: hsla(265deg, 89%, 78%, 1);--md-primary-fg-color--transparent: hsla(265deg, 89%, 78%, 0.2);--md-primary-fg-color--light: hsla(265deg, 89%, 83%, 1);--md-primary-fg-color--dark: hsla(265deg, 89%, 73%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=blue],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=blue]{--md-primary-code-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-primary-fg-color: hsla(225deg, 100%, 75%, 1);--md-primary-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-primary-fg-color--light: hsla(225deg, 100%, 80%, 1);--md-primary-fg-color--dark: hsla(225deg, 100%, 70%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=indigo],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=indigo]{--md-primary-code-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-primary-fg-color: hsla(225deg, 100%, 75%, 1);--md-primary-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-primary-fg-color--light: hsla(225deg, 100%, 80%, 1);--md-primary-fg-color--dark: hsla(225deg, 100%, 70%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=light-blue],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=light-blue]{--md-primary-code-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-primary-fg-color: hsla(225deg, 100%, 75%, 1);--md-primary-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-primary-fg-color--light: hsla(225deg, 100%, 80%, 1);--md-primary-fg-color--dark: hsla(225deg, 100%, 70%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=cyan],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=cyan]{--md-primary-code-bg-color: hsl(210.993928831, 19.0177068244%, 26.0788938803%);--md-primary-fg-color: hsla(191deg, 97%, 77%, 1);--md-primary-fg-color--transparent: hsla(191deg, 97%, 77%, 0.2);--md-primary-fg-color--light: hsla(191deg, 97%, 82%, 1);--md-primary-fg-color--dark: hsla(191deg, 97%, 72%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=teal],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=teal]{--md-primary-code-bg-color: hsl(210.993928831, 19.0177068244%, 26.0788938803%);--md-primary-fg-color: hsla(191deg, 97%, 77%, 1);--md-primary-fg-color--transparent: hsla(191deg, 97%, 77%, 0.2);--md-primary-fg-color--light: hsla(191deg, 97%, 82%, 1);--md-primary-fg-color--dark: hsla(191deg, 97%, 72%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=green],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=green]{--md-primary-code-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-primary-fg-color: hsla(135deg, 94%, 65%, 1);--md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);--md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=light-green],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=light-green]{--md-primary-code-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-primary-fg-color: hsla(135deg, 94%, 65%, 1);--md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);--md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=lime],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=lime]{--md-primary-code-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-primary-fg-color: hsla(135deg, 94%, 65%, 1);--md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);--md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=yellow],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=yellow]{--md-primary-code-bg-color: hsl(159.3047128419, 2.986865819%, 26.1419609775%);--md-primary-fg-color: hsla(65deg, 92%, 76%, 1);--md-primary-fg-color--transparent: hsla(65deg, 92%, 76%, 0.2);--md-primary-fg-color--light: hsla(65deg, 92%, 81%, 1);--md-primary-fg-color--dark: hsla(65deg, 92%, 71%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=amber],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=amber]{--md-primary-code-bg-color: hsl(159.3047128419, 2.986865819%, 26.1419609775%);--md-primary-fg-color: hsla(65deg, 92%, 76%, 1);--md-primary-fg-color--transparent: hsla(65deg, 92%, 76%, 0.2);--md-primary-fg-color--light: hsla(65deg, 92%, 81%, 1);--md-primary-fg-color--dark: hsla(65deg, 92%, 71%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=orange],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=orange]{--md-primary-code-bg-color: hsl(338.2103998913, 5.0960419739%, 25.1078079888%);--md-primary-fg-color: hsla(31deg, 100%, 71%, 1);--md-primary-fg-color--transparent: hsla(31deg, 100%, 71%, 0.2);--md-primary-fg-color--light: hsla(31deg, 100%, 76%, 1);--md-primary-fg-color--dark: hsla(31deg, 100%, 66%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=deep-orange],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=deep-orange]{--md-primary-code-bg-color: hsl(338.2103998913, 5.0960419739%, 25.1078079888%);--md-primary-fg-color: hsla(31deg, 100%, 71%, 1);--md-primary-fg-color--transparent: hsla(31deg, 100%, 71%, 0.2);--md-primary-fg-color--light: hsla(31deg, 100%, 76%, 1);--md-primary-fg-color--dark: hsla(31deg, 100%, 66%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=red],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=red]{--md-code-link-accent-bg-color: hsl(332.2545890109, 15.8127407999%, 23.5759703429%);--md-accent-fg-color: hsla(0deg, 100%, 67%, 1);--md-accent-fg-color--transparent: hsla(0deg, 100%, 67%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=pink],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=pink]{--md-code-link-accent-bg-color: hsl(288.4757168622, 14.8889902037%, 24.6712834924%);--md-accent-fg-color: hsla(326deg, 100%, 74%, 1);--md-accent-fg-color--transparent: hsla(326deg, 100%, 74%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=purple],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=purple]{--md-code-link-accent-bg-color: hsl(248.4980702, 16.8923581309%, 26.4141657947%);--md-accent-fg-color: hsla(265deg, 89%, 78%, 1);--md-accent-fg-color--transparent: hsla(265deg, 89%, 78%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=deep-purple],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=deep-purple]{--md-code-link-accent-bg-color: hsl(248.4980702, 16.8923581309%, 26.4141657947%);--md-accent-fg-color: hsla(265deg, 89%, 78%, 1);--md-accent-fg-color--transparent: hsla(265deg, 89%, 78%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=blue],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=blue]{--md-code-link-accent-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-accent-fg-color: hsla(225deg, 100%, 75%, 1);--md-accent-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=indigo],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=indigo]{--md-code-link-accent-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-accent-fg-color: hsla(225deg, 100%, 75%, 1);--md-accent-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=light-blue],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=light-blue]{--md-code-link-accent-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-accent-fg-color: hsla(225deg, 100%, 75%, 1);--md-accent-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=cyan],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=cyan]{--md-code-link-accent-bg-color: hsl(210.993928831, 19.0177068244%, 26.0788938803%);--md-accent-fg-color: hsla(191deg, 97%, 77%, 1);--md-accent-fg-color--transparent: hsla(191deg, 97%, 77%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=teal],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=teal]{--md-code-link-accent-bg-color: hsl(210.993928831, 19.0177068244%, 26.0788938803%);--md-accent-fg-color: hsla(191deg, 97%, 77%, 1);--md-accent-fg-color--transparent: hsla(191deg, 97%, 77%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=green],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=green]{--md-code-link-accent-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-accent-fg-color: hsla(135deg, 94%, 65%, 1);--md-accent-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=light-green],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=light-green]{--md-code-link-accent-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-accent-fg-color: hsla(135deg, 94%, 65%, 1);--md-accent-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=lime],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=lime]{--md-code-link-accent-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-accent-fg-color: hsla(135deg, 94%, 65%, 1);--md-accent-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=yellow],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=yellow]{--md-code-link-accent-bg-color: hsl(159.3047128419, 2.986865819%, 26.1419609775%);--md-accent-fg-color: hsla(65deg, 92%, 76%, 1);--md-accent-fg-color--transparent: hsla(65deg, 92%, 76%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=amber],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=amber]{--md-code-link-accent-bg-color: hsl(159.3047128419, 2.986865819%, 26.1419609775%);--md-accent-fg-color: hsla(65deg, 92%, 76%, 1);--md-accent-fg-color--transparent: hsla(65deg, 92%, 76%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=orange],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=orange]{--md-code-link-accent-bg-color: hsl(338.2103998913, 5.0960419739%, 25.1078079888%);--md-accent-fg-color: hsla(31deg, 100%, 71%, 1);--md-accent-fg-color--transparent: hsla(31deg, 100%, 71%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=deep-orange],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=deep-orange]{--md-code-link-accent-bg-color: hsl(338.2103998913, 5.0960419739%, 25.1078079888%);--md-accent-fg-color: hsla(31deg, 100%, 71%, 1);--md-accent-fg-color--transparent: hsla(31deg, 100%, 71%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}:root{--md-heart: #ff5252;--md-heart-big: #ff1744}:root [data-md-color-scheme=slate]{--md-heart: hsl(0, 100%, 67%);--md-heart-big: hsl(326, 100%, 74%)}.md-typeset a.source-link{position:relative;top:-0.6rem;float:right;color:var(--md-default-fg-color--lighter);transition:color 125ms}.md-typeset a.source-link:hover{color:var(--md-accent-fg-color)}.md-typeset a.source-link .twemoji{height:1.2rem}.md-typeset a.source-link .twemoji svg{width:1.2rem;height:1.2rem}.md-typeset div.highlight.md-max-height pre>code{max-height:15rem}.twemoji.heart-throb svg,.twemoji.heart-throb-hover svg{position:relative;color:var(--md-heart);animation:pulse 1.5s ease infinite}@keyframes pulse{0%{transform:scale(1)}40%{color:var(--md-heart-big);transform:scale(1.3)}50%{transform:scale(1.2)}60%{color:var(--md-heart-big);transform:scale(1.3)}100%{transform:scale(1)}}footer.sponsorship{text-align:center}footer.sponsorship .twemoji{padding:.05rem}footer.sponsorship a{text-decoration:none}footer.sponsorship hr{display:inline-block;width:1.6rem;margin:0 .7rem;vertical-align:middle;border-bottom:2px solid var(--md-default-fg-color--lighter)}footer.sponsorship:hover hr{border-color:var(--md-accent-fg-color)}footer.sponsorship:not(:hover) .twemoji.heart-throb-hover svg{color:var(--md-default-fg-color--lighter) !important}:root>*{--md-admonition-icon-color: #3654c2;--md-admonition-bg-color: rgba(54, 84, 194, 0.1)}:root>*[data-md-color-scheme=slate]{--md-admonition-icon-color: hsl(225, 100%, 75%);--md-admonition-bg-color: hsla(225, 100%, 75%, 0.1)}:root>*{--md-admonition-icon--settings: url('data:image/svg+xml;charset=utf-8, ');--md-admonition-bg-color--settings: rgba(170, 0, 255, 0.1);--md-admonition-icon-color--settings: #aa00ff}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--settings: hsla(326, 100%, 74%, 0.1);--md-admonition-icon-color--settings: hsl(326, 100%, 74%)}:root>*{--md-admonition-icon--new: url('data:image/svg+xml;charset=utf-8, ');--md-admonition-bg-color--new: rgba(255, 214, 0, 0.1);--md-admonition-icon-color--new: #ffd600}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--new: hsla(65, 92%, 76%, 0.1);--md-admonition-icon-color--new: hsl(65, 92%, 76%)}:root>*{--md-admonition-bg-color--note: rgba(68, 138, 255, 0.1);--md-admonition-icon-color--note: #448aff}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--note: hsla(225, 100%, 75%, 0.1);--md-admonition-icon-color--note: hsl(225, 100%, 75%)}:root>*{--md-admonition-bg-color--abstract: rgba(0, 176, 255, 0.1);--md-admonition-icon-color--abstract: #00b0ff}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--abstract: hsla(208.9651589316, 100.1516938638%, 76.1926610237%, 0.1);--md-admonition-icon-color--abstract: hsl(208.9651589316, 100.1516938638%, 76.1926610237%)}:root>*{--md-admonition-bg-color--info: rgba(0, 184, 212, 0.1);--md-admonition-icon-color--info: #00b8d4}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--info: hsla(191, 97%, 77%, 0.1);--md-admonition-icon-color--info: hsl(191, 97%, 77%)}:root>*{--md-admonition-bg-color--tip: rgba(0, 191, 165, 0.1);--md-admonition-icon-color--tip: #00bfa5}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--tip: hsla(157.7363570417, 83.7763520157%, 69.6636999884%, 0.1);--md-admonition-icon-color--tip: hsl(157.7363570417, 83.7763520157%, 69.6636999884%)}:root>*{--md-admonition-bg-color--success: rgba(0, 200, 83, 0.1);--md-admonition-icon-color--success: #00c853}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--success: hsla(135, 94%, 65%, 0.1);--md-admonition-icon-color--success: hsl(135, 94%, 65%)}:root>*{--md-admonition-bg-color--question: rgba(100, 221, 23, 0.1);--md-admonition-icon-color--question: #64dd17}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--question: hsla(74.4232873346, 59.3464897233%, 65.6529017761%, 0.1);--md-admonition-icon-color--question: hsl(74.4232873346, 59.3464897233%, 65.6529017761%)}:root>*{--md-admonition-bg-color--warning: rgba(255, 145, 0, 0.1);--md-admonition-icon-color--warning: #ff9100}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--warning: hsla(31, 100%, 71%, 0.1);--md-admonition-icon-color--warning: hsl(31, 100%, 71%)}:root>*{--md-admonition-bg-color--failure: rgba(255, 82, 82, 0.1);--md-admonition-icon-color--failure: #ff5252}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--failure: hsla(15.759766848, 102.8951066345%, 69.4486457644%, 0.1);--md-admonition-icon-color--failure: hsl(15.759766848, 102.8951066345%, 69.4486457644%)}:root>*{--md-admonition-bg-color--danger: rgba(255, 23, 68, 0.1);--md-admonition-icon-color--danger: #ff1744}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--danger: hsla(0, 100%, 67%, 0.1);--md-admonition-icon-color--danger: hsl(0, 100%, 67%)}:root>*{--md-admonition-bg-color--bug: rgba(245, 0, 87, 0.1);--md-admonition-icon-color--bug: #f50057}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--bug: hsla(331.9938073573, 62.7005462555%, 68.9374611138%, 0.1);--md-admonition-icon-color--bug: hsl(331.9938073573, 62.7005462555%, 68.9374611138%)}:root>*{--md-admonition-bg-color--example: rgba(124, 77, 255, 0.1);--md-admonition-icon-color--example: #7c4dff}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--example: hsla(265, 89%, 78%, 0.1);--md-admonition-icon-color--example: hsl(265, 89%, 78%)}:root>*{--md-admonition-bg-color--quote: rgba(158, 158, 158, 0.1);--md-admonition-icon-color--quote: #9e9e9e}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--quote: hsla(225, 8%, 51%, 0.1);--md-admonition-icon-color--quote: hsl(225, 8%, 51%)}.md-typeset .admonition,.md-typeset details{background:var(--md-admonition-bg-color--note);border-width:0;border-left-width:4px}.md-typeset .admonition>.admonition-title::before,.md-typeset details>.admonition-title::before,.md-typeset details>summary::before{background-color:var(--md-admonition-icon-color--note)}.md-typeset .admonition>.admonition-title::after,.md-typeset details>.admonition-title::after,.md-typeset details>summary::after{color:var(--md-admonition-icon-color--note)}.md-typeset .admonition.note,.md-typeset details.note{background:var(--md-admonition-bg-color--note)}.md-typeset .admonition.note>.admonition-title::before,.md-typeset details.note>.admonition-title::before,.md-typeset details.note>summary::before{background-color:var(--md-admonition-icon-color--note)}.md-typeset .admonition.note>.admonition-title::after,.md-typeset details.note>.admonition-title::after,.md-typeset details.note>summary::after{color:var(--md-admonition-icon-color--note)}.md-typeset .admonition.abstract,.md-typeset details.abstract{background:var(--md-admonition-bg-color--abstract)}.md-typeset .admonition.abstract>.admonition-title::before,.md-typeset details.abstract>.admonition-title::before,.md-typeset details.abstract>summary::before{background-color:var(--md-admonition-icon-color--abstract)}.md-typeset .admonition.abstract>.admonition-title::after,.md-typeset details.abstract>.admonition-title::after,.md-typeset details.abstract>summary::after{color:var(--md-admonition-icon-color--abstract)}.md-typeset .admonition.info,.md-typeset details.info{background:var(--md-admonition-bg-color--info)}.md-typeset .admonition.info>.admonition-title::before,.md-typeset details.info>.admonition-title::before,.md-typeset details.info>summary::before{background-color:var(--md-admonition-icon-color--info)}.md-typeset .admonition.info>.admonition-title::after,.md-typeset details.info>.admonition-title::after,.md-typeset details.info>summary::after{color:var(--md-admonition-icon-color--info)}.md-typeset .admonition.tip,.md-typeset details.tip{background:var(--md-admonition-bg-color--tip)}.md-typeset .admonition.tip>.admonition-title::before,.md-typeset details.tip>.admonition-title::before,.md-typeset details.tip>summary::before{background-color:var(--md-admonition-icon-color--tip)}.md-typeset .admonition.tip>.admonition-title::after,.md-typeset details.tip>.admonition-title::after,.md-typeset details.tip>summary::after{color:var(--md-admonition-icon-color--tip)}.md-typeset .admonition.success,.md-typeset details.success{background:var(--md-admonition-bg-color--success)}.md-typeset .admonition.success>.admonition-title::before,.md-typeset details.success>.admonition-title::before,.md-typeset details.success>summary::before{background-color:var(--md-admonition-icon-color--success)}.md-typeset .admonition.success>.admonition-title::after,.md-typeset details.success>.admonition-title::after,.md-typeset details.success>summary::after{color:var(--md-admonition-icon-color--success)}.md-typeset .admonition.question,.md-typeset details.question{background:var(--md-admonition-bg-color--question)}.md-typeset .admonition.question>.admonition-title::before,.md-typeset details.question>.admonition-title::before,.md-typeset details.question>summary::before{background-color:var(--md-admonition-icon-color--question)}.md-typeset .admonition.question>.admonition-title::after,.md-typeset details.question>.admonition-title::after,.md-typeset details.question>summary::after{color:var(--md-admonition-icon-color--question)}.md-typeset .admonition.warning,.md-typeset details.warning{background:var(--md-admonition-bg-color--warning)}.md-typeset .admonition.warning>.admonition-title::before,.md-typeset details.warning>.admonition-title::before,.md-typeset details.warning>summary::before{background-color:var(--md-admonition-icon-color--warning)}.md-typeset .admonition.warning>.admonition-title::after,.md-typeset details.warning>.admonition-title::after,.md-typeset details.warning>summary::after{color:var(--md-admonition-icon-color--warning)}.md-typeset .admonition.failure,.md-typeset details.failure{background:var(--md-admonition-bg-color--failure)}.md-typeset .admonition.failure>.admonition-title::before,.md-typeset details.failure>.admonition-title::before,.md-typeset details.failure>summary::before{background-color:var(--md-admonition-icon-color--failure)}.md-typeset .admonition.failure>.admonition-title::after,.md-typeset details.failure>.admonition-title::after,.md-typeset details.failure>summary::after{color:var(--md-admonition-icon-color--failure)}.md-typeset .admonition.danger,.md-typeset details.danger{background:var(--md-admonition-bg-color--danger)}.md-typeset .admonition.danger>.admonition-title::before,.md-typeset details.danger>.admonition-title::before,.md-typeset details.danger>summary::before{background-color:var(--md-admonition-icon-color--danger)}.md-typeset .admonition.danger>.admonition-title::after,.md-typeset details.danger>.admonition-title::after,.md-typeset details.danger>summary::after{color:var(--md-admonition-icon-color--danger)}.md-typeset .admonition.bug,.md-typeset details.bug{background:var(--md-admonition-bg-color--bug)}.md-typeset .admonition.bug>.admonition-title::before,.md-typeset details.bug>.admonition-title::before,.md-typeset details.bug>summary::before{background-color:var(--md-admonition-icon-color--bug)}.md-typeset .admonition.bug>.admonition-title::after,.md-typeset details.bug>.admonition-title::after,.md-typeset details.bug>summary::after{color:var(--md-admonition-icon-color--bug)}.md-typeset .admonition.example,.md-typeset details.example{background:var(--md-admonition-bg-color--example)}.md-typeset .admonition.example>.admonition-title::before,.md-typeset details.example>.admonition-title::before,.md-typeset details.example>summary::before{background-color:var(--md-admonition-icon-color--example)}.md-typeset .admonition.example>.admonition-title::after,.md-typeset details.example>.admonition-title::after,.md-typeset details.example>summary::after{color:var(--md-admonition-icon-color--example)}.md-typeset .admonition.quote,.md-typeset details.quote{background:var(--md-admonition-bg-color--quote)}.md-typeset .admonition.quote>.admonition-title::before,.md-typeset details.quote>.admonition-title::before,.md-typeset details.quote>summary::before{background-color:var(--md-admonition-icon-color--quote)}.md-typeset .admonition.quote>.admonition-title::after,.md-typeset details.quote>.admonition-title::after,.md-typeset details.quote>summary::after{color:var(--md-admonition-icon-color--quote)}.md-typeset .admonition.settings,.md-typeset details.settings{background:var(--md-admonition-bg-color--settings)}.md-typeset .admonition.settings>.admonition-title::before,.md-typeset details.settings>.admonition-title::before,.md-typeset details.settings>summary::before{width:1rem;height:1rem;background-color:var(--md-admonition-icon-color--settings);background-size:1rem;-webkit-mask-image:var(--md-admonition-icon--settings);mask-image:var(--md-admonition-icon--settings);content:" "}.md-typeset .admonition.settings>.admonition-title::after,.md-typeset details.settings>.admonition-title::after,.md-typeset details.settings>summary::after{color:var(--md-admonition-icon-color--settings)}.md-typeset .admonition.new,.md-typeset details.new{background:var(--md-admonition-bg-color--new)}.md-typeset .admonition.new>.admonition-title::before,.md-typeset details.new>.admonition-title::before,.md-typeset details.new>summary::before{width:1rem;height:1rem;background-color:var(--md-admonition-icon-color--new);background-size:1rem;-webkit-mask-image:var(--md-admonition-icon--new);mask-image:var(--md-admonition-icon--new);content:" "}.md-typeset .admonition.new>.admonition-title::after,.md-typeset details.new>.admonition-title::after,.md-typeset details.new>summary::after{color:var(--md-admonition-icon-color--new)}.admonition:has(.admonition-title:only-child,.md-typeset details>summary:only-child),.md-typeset details:has(.admonition-title:only-child,.md-typeset details>summary:only-child){padding-bottom:.48em}mjx-container[display=true]{font-size:120% !important}mjx-container:not([display]){font-size:100% !important}.md-typeset .arithmatex{overflow-x:auto !important;overflow-y:hidden !important}.katex-display .katex-html{display:flex !important;flex-direction:row;flex-wrap:nowrap;align-items:baseline;justify-content:space-between}.katex-display .katex-html .base{display:inline !important}.katex-display .katex-html .tag{position:relative !important;display:inline !important;margin-left:var(--margin-small)}.CtxtMenu_InfoClose{top:.2em;right:.2em}.CtxtMenu_InfoContent{overflow:auto;text-align:left;font-size:80%;padding:.4em .6em;border:1px inset;margin:1em 0px;max-height:20em;max-width:30em;background-color:#eee;white-space:normal}.CtxtMenu_Info.CtxtMenu_MousePost{outline:none}.CtxtMenu_Info{position:fixed;left:50%;width:auto;text-align:center;border:3px outset;padding:1em 2em;background-color:#ddd;color:#000;cursor:default;font-family:message-box;font-size:120%;font-style:normal;text-indent:0;text-transform:none;line-height:normal;letter-spacing:normal;word-spacing:normal;word-wrap:normal;white-space:nowrap;float:none;z-index:201;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;-khtml-border-radius:15px;box-shadow:0px 10px 20px gray;-webkit-box-shadow:0px 10px 20px gray;-moz-box-shadow:0px 10px 20px gray;-khtml-box-shadow:0px 10px 20px gray;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="gray", Positive="true")}.CtxtMenu_MenuClose{position:absolute;cursor:pointer;display:inline-block;border:2px solid #aaa;border-radius:18px;-webkit-border-radius:18px;-moz-border-radius:18px;-khtml-border-radius:18px;font-family:"Courier New",Courier;font-size:24px;color:#f0f0f0}.CtxtMenu_MenuClose span{display:block;background-color:#aaa;border:1.5px solid;border-radius:18px;-webkit-border-radius:18px;-moz-border-radius:18px;-khtml-border-radius:18px;line-height:0;padding:8px 0 6px}.CtxtMenu_MenuClose:hover{color:#fff !important;border:2px solid #ccc !important}.CtxtMenu_MenuClose:hover span{background-color:#ccc !important}.CtxtMenu_MenuClose:hover:focus{outline:none}.CtxtMenu_Menu{position:absolute;background-color:#fff;color:#000;width:auto;padding:5px 0px;border:1px solid #ccc;margin:0;cursor:default;font:menu;text-align:left;text-indent:0;text-transform:none;line-height:normal;letter-spacing:normal;word-spacing:normal;word-wrap:normal;white-space:nowrap;float:none;z-index:201;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-khtml-border-radius:5px;box-shadow:0px 10px 20px gray;-webkit-box-shadow:0px 10px 20px gray;-moz-box-shadow:0px 10px 20px gray;-khtml-box-shadow:0px 10px 20px gray}.CtxtMenu_MenuItem{padding:1px 2em;background:rgba(0,0,0,0)}.CtxtMenu_MenuArrow{position:absolute;right:.5em;padding-top:.25em;color:#666;font-size:.75em}.CtxtMenu_MenuActive .CtxtMenu_MenuArrow{color:#fff}.CtxtMenu_MenuArrow.CtxtMenu_RTL{left:.5em;right:auto}.CtxtMenu_MenuCheck{position:absolute;left:.7em}.CtxtMenu_MenuCheck.CtxtMenu_RTL{right:.7em;left:auto}.CtxtMenu_MenuRadioCheck{position:absolute;left:.7em}.CtxtMenu_MenuRadioCheck.CtxtMenu_RTL{right:.7em;left:auto}.CtxtMenu_MenuInputBox{padding-left:1em;right:.5em;color:#666}.CtxtMenu_MenuInputBox.CtxtMenu_RTL{left:.1em}.CtxtMenu_MenuComboBox{left:.1em;padding-bottom:.5em}.CtxtMenu_MenuSlider{left:.1em}.CtxtMenu_SliderValue{position:absolute;right:.1em;padding-top:.25em;color:#333;font-size:.75em}.CtxtMenu_SliderBar{outline:none;background:#d3d3d3}.CtxtMenu_MenuLabel{padding:1px 2em 3px 1.33em;font-style:italic}.CtxtMenu_MenuRule{border-top:1px solid #ddd;margin:4px 3px}.CtxtMenu_MenuDisabled{color:GrayText}.CtxtMenu_MenuActive{background-color:#606872;color:#fff}.CtxtMenu_MenuDisabled:focus{background-color:#e8e8e8}.CtxtMenu_MenuLabel:focus{background-color:#e8e8e8}.CtxtMenu_ContextMenu:focus{outline:none}.CtxtMenu_ContextMenu .CtxtMenu_MenuItem:focus{outline:none}.CtxtMenu_SelectionMenu{position:relative;float:left;border-bottom:none;-webkit-box-shadow:none;-webkit-border-radius:0px}.CtxtMenu_SelectionItem{padding-right:1em}.CtxtMenu_Selection{right:40%;width:50%}.CtxtMenu_SelectionBox{padding:0em;max-height:20em;max-width:none;background-color:#fff}.CtxtMenu_SelectionDivider{clear:both;border-top:2px solid #000}.CtxtMenu_Menu .CtxtMenu_MenuClose{top:-10px;left:-10px}[data-md-color-scheme=slate] .CtxtMenu_InfoSignature input,[data-md-color-scheme=slate] .CtxtMenu_InfoContent pre{color:#000}[data-md-color-scheme=slate] .CtxtMenu_Info,[data-md-color-scheme=slate] .CtxtMenu_Menu{box-shadow:0px 10px 20px rgba(0,0,0,.5)}.md-typeset del.critic,.md-typeset ins.critic,.md-typeset mark.critic{padding:0 .25em;color:unset;box-shadow:none}.md-typeset .critic.break{margin:0}.md-typeset details{overflow:hidden}.md-typeset details>summary:focus{outline-style:none}:root>*{--highlight-svg-console: url('data:image/svg+xml;charset=utf-8, ');--highlight-svg-arrow-expand: url('data:image/svg+xml;charset=utf-8, ');--highlight-svg-arrow-collapse: url('data:image/svg+xml;charset=utf-8, ')}.highlight .kc{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne{color:var(--md-code-hl-class-color)}.highlight .mb{color:var(--md-code-hl-number-color)}.highlight .nb,.highlight .bp{color:var(--md-code-hl-builtin-color)}.highlight .nn{color:var(--md-code-hl-namespace-color)}.highlight .na,.highlight .nd,.highlight .ni{color:var(--md-code-hl-entity-color)}.highlight .nl,.highlight .nt{color:var(--md-code-hl-tag-color)}.md-typeset *:not(pre)>code{margin:0;padding:0 .2941176471em;color:var(--md-code-fg-color);background-color:var(--md-code-inline-bg-color);border-radius:.1rem;box-shadow:none}.md-typeset pre>code{outline:none}.md-typeset td code{word-break:normal}.md-typeset .highlight{-moz-tab-size:8;-o-tab-size:8;tab-size:8}.md-typeset .highlight [data-linenos].special::before{background-color:var(--md-code-special-bg-color)}.md-typeset .highlighttable .linenodiv .special{margin-right:-.5882352941em;margin-left:-1.1764705882em;padding-right:.5882352941em;padding-left:1.1764705882em;background-color:var(--md-code-special-bg-color)}.md-typeset .highlight span.filename{position:relative;display:block;margin-top:1em;padding:.5em 1.1764705882em .5em 2.9411764706em;font-weight:700;font-size:.68rem;background-color:var(--md-code-title-bg-color);border-top-left-radius:.48rem;border-top-right-radius:.48rem}.md-typeset .highlight span.filename+pre{margin-top:0}.md-typeset .highlight span.filename+pre code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .highlight span.filename::before{position:absolute;left:.8823529412em;width:1.4705882353em;height:1.4705882353em;background-color:var(--md-default-fg-color);-webkit-mask-image:var(--highlight-svg-console);mask-image:var(--highlight-svg-console);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;content:""}.md-typeset .collapse-code{position:relative;margin-top:1em;margin-bottom:1em}.md-typeset .collapse-code pre{margin-top:0;margin-bottom:0}.md-typeset .collapse-code input{display:none}.md-typeset .collapse-code input~.code-footer{width:100%;margin:0;padding:.25em .5em .25em 0em}.md-typeset .collapse-code input~.code-footer label{position:relative;margin:.05em;padding:.15em .8em;color:var(--md-primary-bg-color);font-size:90%;background-color:var(--md-accent-fg-color);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;border-radius:.1rem;cursor:pointer;content:""}.md-typeset .collapse-code input~.code-footer label:hover{background-color:var(--md-accent-fg-color)}.md-typeset .collapse-code input~.code-footer label::before{position:absolute;top:.15em;left:.15em;display:block;box-sizing:border-box;width:1.25em;height:1.25em;background-color:var(--md-primary-bg-color);background-size:1.25em;content:""}.md-typeset .collapse-code input~.code-footer label.expand{display:none}.md-typeset .collapse-code input~.code-footer label.expand::before{-webkit-mask-image:var(--highlight-svg-arrow-expand);mask-image:var(--highlight-svg-arrow-expand)}.md-typeset .collapse-code input~.code-footer label.collapse::before{-webkit-mask-image:var(--highlight-svg-arrow-collapse);mask-image:var(--highlight-svg-arrow-collapse)}.md-typeset .collapse-code input:checked~.code-footer label.expand{display:inline}.md-typeset .collapse-code input:checked~.code-footer label.collapse{display:none}.md-typeset .collapse-code input:checked+div.highlight code{max-height:9.375em;overflow:hidden}.md-typeset .collapse-code input:checked~.code-footer{position:relative;bottom:4.3em;left:0;margin-bottom:-4.3em;padding:2em .5em .5em .8rem;background-image:linear-gradient(to bottom, transparent, var(--md-default-bg-color) 80% 100%);border-bottom-right-radius:.48rem;border-bottom-left-radius:.48rem}.md-typeset .keys .key-power::before{padding-right:.4em;content:"⏻"}.md-typeset .keys .key-fingerprint::before{padding-right:.4em;content:"☝"}:root>*{--magiclink-email-icon: url('data:image/svg+xml;charset=utf-8, ');--magiclink-github-icon: url('data:image/svg+xml;charset=utf-8, ');--magiclink-bitbucket-icon: url('data:image/svg+xml;charset=utf-8, ');--magiclink-gitlab-icon: url('data:image/svg+xml;charset=utf-8, ');--magiclink-commit-icon: url('data:image/svg+xml;charset=utf-8, ');--magiclink-compare-icon: url('data:image/svg+xml;charset=utf-8, ');--magiclink-pull-icon: url('data:image/svg+xml;charset=utf-8, ');--magiclink-issue-icon: url('data:image/svg+xml;charset=utf-8, ');--magiclink-discussion-icon: url('data:image/svg+xml;charset=utf-8, ')}.md-typeset a[href^="mailto:"]:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-email-icon);mask-image:var(--magiclink-email-icon)}.md-typeset .magiclink-repository:not(.magiclink-ignore),.md-typeset .magiclink-compare:not(.magiclink-ignore),.md-typeset .magiclink-commit:not(.magiclink-ignore),.md-typeset .magiclink-pull:not(.magiclink-ignore),.md-typeset .magiclink-issue:not(.magiclink-ignore),.md-typeset .magiclink-discussion:not(.magiclink-ignore),.md-typeset a[href^="mailto:"]:not(.magiclink-ignore){position:relative;padding-left:1.375em}.md-typeset .magiclink-repository:not(.magiclink-ignore)::before,.md-typeset .magiclink-compare:not(.magiclink-ignore)::before,.md-typeset .magiclink-commit:not(.magiclink-ignore)::before,.md-typeset .magiclink-pull:not(.magiclink-ignore)::before,.md-typeset .magiclink-issue:not(.magiclink-ignore)::before,.md-typeset .magiclink-discussion:not(.magiclink-ignore)::before,.md-typeset a[href^="mailto:"]:not(.magiclink-ignore)::before{position:absolute;top:0;left:0;display:block;box-sizing:border-box;width:1.25em;height:1.25em;background-color:var(--md-typeset-a-color);background-size:1.25em;transition:background-color 125ms;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;content:""}.md-typeset .magiclink-repository:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-compare:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-commit:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-pull:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-issue:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-discussion:not(.magiclink-ignore):hover::before,.md-typeset a[href^="mailto:"]:not(.magiclink-ignore):hover::before{background-color:var(--md-accent-fg-color)}.md-typeset .magiclink-commit:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-commit-icon);mask-image:var(--magiclink-commit-icon)}.md-typeset .magiclink-compare:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-compare-icon);mask-image:var(--magiclink-compare-icon)}.md-typeset .magiclink-pull:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-pull-icon);mask-image:var(--magiclink-pull-icon)}.md-typeset .magiclink-issue:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-issue-icon);mask-image:var(--magiclink-issue-icon)}.md-typeset .magiclink-discussion:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-discussion-icon);mask-image:var(--magiclink-discussion-icon)}.md-typeset .magiclink-repository.magiclink-github:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-github-icon);mask-image:var(--magiclink-github-icon)}.md-typeset .magiclink-repository.magiclink-gitlab:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-gitlab-icon);mask-image:var(--magiclink-gitlab-icon)}.md-typeset .magiclink-repository.magiclink-bitbucket:not(.magiclink-ignore)::before{-webkit-mask-image:var(--magiclink-bitbucket-icon);mask-image:var(--magiclink-bitbucket-icon)}.md-typeset mark:not(.critic){box-shadow:none}.md-typeset .progress-label{position:absolute;width:100%;margin:0;color:var(--md-text-color);font-weight:700;line-height:1.4rem;white-space:nowrap;text-align:center;text-shadow:-0.0625em -0.0625em .375em var(--md-default-bg-color--light),.0625em -0.0625em .375em var(--md-default-bg-color--light),-0.0625em .0625em .375em var(--md-default-bg-color--light),.0625em .0625em .375em var(--md-default-bg-color--light)}.md-typeset .progress-bar{float:left;height:1.2rem;background-color:#2979ff}.md-typeset .candystripe-animate .progress-bar{animation:animate-stripes 3s linear infinite}.md-typeset .progress{position:relative;display:block;width:100%;height:1.2rem;margin:.5rem 0;background-color:var(--md-default-fg-color--lightest)}.md-typeset .progress.thin{height:.4rem;margin-top:.9rem}.md-typeset .progress.thin .progress-label{margin-top:-0.4rem}.md-typeset .progress.thin .progress-bar{height:.4rem}.md-typeset .progress.candystripe .progress-bar{background-image:linear-gradient(135deg, var(--md-progress-stripe) 27%, transparent 27%, transparent 52%, var(--md-progress-stripe) 52%, var(--md-progress-stripe) 77%, transparent 77%, transparent);background-size:2rem 2rem}.md-typeset .progress-100plus .progress-bar{background-color:var(--md-progress-100)}.md-typeset .progress-80plus .progress-bar{background-color:var(--md-progress-80)}.md-typeset .progress-60plus .progress-bar{background-color:var(--md-progress-60)}.md-typeset .progress-40plus .progress-bar{background-color:var(--md-progress-40)}.md-typeset .progress-20plus .progress-bar{background-color:var(--md-progress-20)}.md-typeset .progress-0plus .progress-bar{background-color:var(--md-progress-0)}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:6rem 0}}.md-typeset .tabbed-control button:hover{color:var(--md-default-bg-color);background:var(--md-accent-fg-color)}.md-typeset .tabbed-control--next button:hover{color:var(--md-default-bg-color);background:var(--md-accent-fg-color)}.js .md-typeset .tabbed-labels::before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-alternate.tabbed-set .tabbed-control{width:2rem}.md-typeset .tabbed-alternate.tabbed-set .tabbed-control[hidden]{width:1.2rem;opacity:0}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block{padding:0 .6rem}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:first-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:first-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:first-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:first-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:first-child{margin-top:.9375em}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:first-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:first-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:first-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:first-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:first-child code{border-top-left-radius:.48rem;border-top-right-radius:.48rem}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:only-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:only-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:only-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:only-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:only-child{margin-top:0;margin-right:-1.2rem;margin-left:-1.2rem;padding-right:.6rem;padding-left:.6rem}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:only-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:only-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:only-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:only-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:only-child code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:only-child span.filename,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:only-child span.filename,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:only-child span.filename,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:only-child span.filename,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:only-child span.filename{margin-top:0}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child{margin-top:0;margin-right:-1.2rem;margin-left:-1.2rem;padding-right:.6rem;padding-left:.6rem}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child pre code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child .codehilite code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child .codehilitetable code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child .highlight code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child .highlighttable code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>diagram-div:only-child{margin-right:-1.2rem;margin-left:-1.2rem;padding-right:.6rem;padding-left:.6rem}[data-md-color-scheme=slate] .md-typeset .task-list-control .task-list-indicator::before{background-color:var(--md-default-fg-color--lighter)}[data-md-color-scheme=slate] .md-typeset .task-list-control [type=checkbox]:checked+.task-list-indicator::before{background-color:hsl(135,94%,65%)}:root>*{--toc-svg-link: url('data:image/svg+xml;charset=utf-8, ')}.md-typeset .headerlink{width:1em;height:1em;vertical-align:middle;background-color:var(--md-default-fg-color--lighter);background-size:1em;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;visibility:visible;-webkit-mask-image:var(--toc-svg-link);mask-image:var(--toc-svg-link)}.md-typeset .headerlink:hover,.md-typeset [id]:target .headerlink{background-color:var(--md-accent-fg-color)}diagram-div{overflow:auto}.md-typeset div.steps>ol{counter-reset:item}.md-typeset div.steps>ol>li{position:relative;padding-left:1em;list-style:none}.md-typeset div.steps>ol>li::before{position:absolute;top:0;left:0;z-index:-1;display:block;width:1.75em;height:1.75em;margin-left:-1.25em;color:var(--md-steps-fg-color);font-weight:600;font-size:.9em;text-align:center;background-color:var(--md-steps-bg-color);border:1px solid var(--md-steps-border-color);border-radius:100px;content:counter(item);counter-increment:item}.md-typeset div.steps>ol>li::after{position:absolute;top:0;bottom:0;left:-0.36em;display:block;width:1px;margin-top:2em;border-left:1px solid var(--md-steps-border-color);content:""}.md-typeset table:not([class]) th{border-bottom:.1rem solid var(--md-accent-fg-color)}html{background-color:rgba(0,0,0,0)}[data-md-component=announce] .twemoji{color:var(--md-primary-fg-color)}.md-container .md-tabs .md-tabs__item--active{border-bottom:.1rem solid var(--md-accent-fg-color)}.md-nav--secondary>ul{border-left:.1rem solid var(--md-default-fg-color--lightest)}.md-nav--secondary ul .md-nav__item .md-nav__link--active{margin-left:-0.1rem;padding-left:.8rem}.md-nav--secondary ul .md-nav__item ul .md-nav__item .md-nav__link--active{margin-left:-0.7rem;padding-left:1.4rem}.md-nav--secondary ul .md-nav__item ul .md-nav__item ul .md-nav__item .md-nav__link--active{margin-left:-1.3rem;padding-left:2rem}.md-nav--secondary ul .md-nav__item ul .md-nav__item ul .md-nav__item ul .md-nav__item .md-nav__link--active{margin-left:-1.9rem;padding-left:2.6rem}.md-nav--secondary ul .md-nav__item ul .md-nav__item ul .md-nav__item ul .md-nav__item ul .md-nav__item .md-nav__link--active{margin-left:-2.5rem;padding-left:3.2rem}.md-nav--secondary .md-nav__item{color:var(--md-default-fg-color--light)}.md-nav--secondary .md-nav__item .md-nav__link--active{color:var(--md-default-fg-color);border-left:.1rem solid var(--md-accent-fg-color);border-top-left-radius:0;border-bottom-left-radius:0}.md-nav--secondary .md-nav__item .md-nav__link:focus,.md-nav--secondary .md-nav__item .md-nav__link:hover{color:var(--md-default-fg-color)}.md-nav--primary .md-nav__item{color:var(--md-default-fg-color--light)}.md-nav__source{color:var(--md-text-color)}.md-nav__link[data-md-state=blur]{color:var(--md-default-fg-color--light)}.md-typeset h5{color:var(--md-text-color);text-transform:none}.md-typeset__scrollwrap,.md-sidebar__scrollwrap,.md-search__scrollwrap,.md-typeset pre>code,.md-typeset div.mermaid,.md-typeset div.diagram,.md-typeset mermaid-div,.md-typeset diagram-div,.md-typeset pre.arithmatex,.md-typeset div.arithmatex{scrollbar-color:var(--md-default-fg-color--lighter) rgba(0,0,0,0);scrollbar-width:thin}.md-typeset__scrollwrap:hover,.md-sidebar__scrollwrap:hover,.md-search__scrollwrap:hover,.md-typeset pre>code:hover,.md-typeset div.mermaid:hover,.md-typeset div.diagram:hover,.md-typeset mermaid-div:hover,.md-typeset diagram-div:hover,.md-typeset pre.arithmatex:hover,.md-typeset div.arithmatex:hover{scrollbar-color:var(--md-accent-fg-color) rgba(0,0,0,0)}.md-typeset__scrollwrap::-webkit-scrollbar,.md-sidebar__scrollwrap::-webkit-scrollbar,.md-search__scrollwrap::-webkit-scrollbar,.md-typeset pre>code::-webkit-scrollbar,.md-typeset div.mermaid::-webkit-scrollbar,.md-typeset div.diagram::-webkit-scrollbar,.md-typeset mermaid-div::-webkit-scrollbar,.md-typeset diagram-div::-webkit-scrollbar,.md-typeset pre.arithmatex::-webkit-scrollbar,.md-typeset div.arithmatex::-webkit-scrollbar{width:.2rem;height:.2rem}.md-typeset__scrollwrap::-webkit-scrollbar-corner,.md-sidebar__scrollwrap::-webkit-scrollbar-corner,.md-search__scrollwrap::-webkit-scrollbar-corner,.md-typeset pre>code::-webkit-scrollbar-corner,.md-typeset div.mermaid::-webkit-scrollbar-corner,.md-typeset div.diagram::-webkit-scrollbar-corner,.md-typeset mermaid-div::-webkit-scrollbar-corner,.md-typeset diagram-div::-webkit-scrollbar-corner,.md-typeset pre.arithmatex::-webkit-scrollbar-corner,.md-typeset div.arithmatex::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.md-typeset__scrollwrap::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap::-webkit-scrollbar-thumb,.md-search__scrollwrap::-webkit-scrollbar-thumb,.md-typeset pre>code::-webkit-scrollbar-thumb,.md-typeset div.mermaid::-webkit-scrollbar-thumb,.md-typeset div.diagram::-webkit-scrollbar-thumb,.md-typeset mermaid-div::-webkit-scrollbar-thumb,.md-typeset diagram-div::-webkit-scrollbar-thumb,.md-typeset pre.arithmatex::-webkit-scrollbar-thumb,.md-typeset div.arithmatex::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset__scrollwrap::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover,.md-search__scrollwrap::-webkit-scrollbar-thumb:hover,.md-typeset pre>code::-webkit-scrollbar-thumb:hover,.md-typeset div.mermaid::-webkit-scrollbar-thumb:hover,.md-typeset div.diagram::-webkit-scrollbar-thumb:hover,.md-typeset mermaid-div::-webkit-scrollbar-thumb:hover,.md-typeset diagram-div::-webkit-scrollbar-thumb:hover,.md-typeset pre.arithmatex::-webkit-scrollbar-thumb:hover,.md-typeset div.arithmatex::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@media screen and (max-width: 44.9375em){.md-typeset>diagram-div{margin-right:-0.8rem;margin-left:-0.8rem}.md-typeset>.collapse-code{margin-right:-0.8rem;margin-left:-0.8rem}.md-typeset>.collapse-code label.collapse{left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:0}.md-content__inner>.tabbed-set .tabbed-labels{max-width:100%;margin:0;padding-inline-start:0;scroll-padding-inline-start:0}.md-content__inner>.tabbed-set .tabbed-labels::after{padding-inline-end:0;content:none}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-inline-start:0;padding-inline-start:0}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-inline-end:0;padding-inline-end:0}}
+/*# sourceMappingURL=extra-835c322b67.css.map */
diff --git a/docs/theme/assets/pymdownx-extras/extra-835c322b67.css.map b/docs/theme/assets/pymdownx-extras/extra-835c322b67.css.map
new file mode 100644
index 00000000..8a55a240
--- /dev/null
+++ b/docs/theme/assets/pymdownx-extras/extra-835c322b67.css.map
@@ -0,0 +1 @@
+{"version":3,"sources":["extra.css","palette/_colors.scss","_general.scss","extensions/_admonition.scss","extensions/_arithmatex.scss","extensions/_critic.scss","extensions/_details.scss","extensions/_highlight.scss","extensions/_keys.scss","extensions/_magiclink.scss","extensions/_mark.scss","extensions/_progressbar.scss","palette/_material_color.scss","extensions/_tabbed.scss","extensions/_tasklist.scss","palette/_dracula.scss","extensions/_toc.scss","extensions/_superfences.scss","extensions/_steps.scss","extensions/_tables.scss","_material.scss","utilities/_break.scss"],"names":[],"mappings":"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,+CACA,CADA,uCACA,CAAA,6BACA,CADA,qBACA,CAAA,yBACA,CADA,iBACA,CAAA,UACA,CAAA,2BAIJ,iBACE,CAAA,cACA,CAAA,iBACA,CAAA,+BAEA,YACE,CAAA,eACA,CAAA,iCAGF,YACE,CAAA,8CAEA,UACE,CAAA,QACA,CAAA,4BACA,CAAA,oDAEA,iBACE,CAAA,YACA,CAAA,kBACA,CAAA,gCACA,CAAA,aACA,CAAA,0CACA,CAAA,6BACA,CADA,qBACA,CAAA,yBACA,CADA,iBACA,CAAA,mBACA,CAAA,cACA,CAAA,UACA,CAAA,0DAEA,0CACE,CAAA,4DAGF,iBACE,CAAA,SACA,CAAA,UACA,CAAA,aACA,CAAA,qBACA,CAAA,YACA,CAAA,aACA,CAAA,2CACA,CAAA,sBACA,CAAA,UACA,CAAA,2DAGF,YACE,CAAA,mEAEA,oDACE,CADF,4CACE,CAAA,qEAGJ,sDACE,CADF,8CACE,CAAA,mEAMJ,cACE,CAAA,qEAGF,YACE,CAAA,4DAGF,kBACE,CAAA,eACA,CAAA,sDAGF,iBACE,CAAA,YACA,CAAA,MACA,CAAA,oBACA,CAAA,2BACA,CAAA,6FACA,CAAA,iCAIA,CAAA,gCACA,CAkBA,qCC9NJ,kBACE,CAAA,WANkB,CAAA,2CAKpB,kBACE,CAAA,WANkB,CAAA,QCL1B,8PACE,CAAA,krBACA,CAAA,gUACA,CAAA,orBACA,CAAA,yTACA,CAAA,4iBACA,CAAA,+wBACA,CAAA,6VACA,CAAA,0zBACA,CAAA,8DAIA,8CACE,CADF,sCACE,CAAA,0XAUA,iBACE,CAAA,oBACA,CAAA,kbAEA,iBACE,CAAA,KACA,CAAA,MACA,CAAA,aACA,CAAA,qBACA,CAAA,YACA,CAAA,aACA,CAAA,0CACA,CAAA,sBACA,CAAA,iCACA,CAAA,6BACA,CADA,qBACA,CAAA,yBACA,CADA,iBACA,CAAA,UACA,CAAA,4dAGF,0CACE,CAAA,6DAgBF,+CACE,CADF,uCACE,CAAA,8DADF,gDACE,CADF,wCACE,CAAA,2DADF,6CACE,CADF,qCACE,CAAA,4DADF,8CACE,CADF,sC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","file":"extra-835c322b67.css","sourcesContent":[":root>*{--md-default-bg-color--trans: rgb(100%, 100%, 100%, 0);--md-tab-control-bg: var(--md-default-bg-color);--md-code-fg-color: #1F1F1F;--md-code-bg-color: #F5F5F5;--md-code-title-bg-color: #F5F5F5;--md-code-inline-bg-color: #F5F5F5;--md-code-hl-operator-color: #A3134D;--md-code-hl-punctuation-color: #1F1F1F;--md-code-hl-string-color: #836E15;--md-code-hl-special-color: #644AC9;--md-code-hl-number-color: #644AC9;--md-code-hl-keyword-color: #A3134D;--md-code-hl-name-color: #1F1F1F;--md-code-hl-constant-color: #644AC9;--md-code-hl-function-color: #14720A;--md-code-hl-comment-color: #635D97;--md-code-hl-variable-color: #A34D14;--md-code-hl-generic-color: #635D97;--md-code-hl-color: #CFCFDE;--md-code-hl-color--light: #DCDEEF;--md-code-hl-entity-color: #14720A;--md-code-hl-tag-color: #A3134D;--md-code-hl-namespace-color: #1F1F1F;--md-code-hl-builtin-color: #036A96;--md-code-hl-class-color: #036A96;--md-code-special-bg-color: #DCDEEF;--md-steps-bg-color: var(--md-code-bg-color);--md-steps-fg-color: var(--md-code-fg-color);--md-steps-border-color: hsla(0, 0%, 75%, 1);--md-typeset-a-color: #00bcd4;--md-progress-stripe: var(--md-default-bg-color--lighter);--md-progress-100: #00e676;--md-progress-80: #00e676;--md-progress-60: #fbc02d;--md-progress-40: #ff9100;--md-progress-20: #ff5252;--md-progress-0: #ff1744;--md-typeset-kbd-color: rgb(228.3721025416, 228.3721025416, 228.3721025416);--md-typeset-kbd-border-color: rgb(164.4010497691, 164.4010497691, 164.4010497691);--md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1)}:root>*[data-md-color-scheme=slate]{--md-default-fg-color: hsla(60, 30%, 96.078%, 0.87);--md-default-fg-color--light: hsla(60, 30%, 96.078%, 0.54);--md-default-fg-color--lighter: hsla(60, 30%, 96.078%, 0.36);--md-default-fg-color--lightest: hsla(60, 30%, 96.078%, 0.12);--md-default-autocomplete-fg-color: hsla(60, 30%, 96.078%, 0.4);--md-shadow-z2: 0 0.2rem 0.5rem hsla(0, 0%, 0%, 0.3), 0 0 0.05rem hsla(0, 0%, 0%, 0.2);--md-footer-fg-color: var(--md-default-fg-color);--md-default-bg-color: var(--md-default-bg-color--darkest);--md-default-bg-color--light: color(srgb 0.090174358 0.0958277825 0.1278638548 / 0.7);--md-default-bg-color--lighter: color(srgb 0.090174358 0.0958277825 0.1278638548 / 0.4);--md-default-bg-color--lightest: color(srgb 0.090174358 0.0958277825 0.1278638548 / 0.1);--md-default-bg-color--trans: color(srgb 0.090174358 0.0958277825 0.1278638548 / 0);--md-tab-control-bg: var(--md-default-bg-color--dark);--md-default-bg-color--dark: color(srgb 0.1400822885 0.147679243 0.1907286518);--md-default-bg-color--darker: color(srgb 0.1273335013 0.1344339886 0.1746700834);--md-default-bg-color--darkest: color(srgb 0.090174358 0.0958277825 0.1278638548);--md-text-color: var(--md-default-fg-color);--md-typeset-color: var(--md-default-fg-color);--md-admonition-fg-color: var(--md-default-fg-color);--md-code-fg-color: hsl(60, 30%, 96.078%);--md-code-bg-color: hsl(231, 15%, 18%);--md-code-title-bg-color: hsl(231, 15%, 18%);--md-code-inline-bg-color: hsl(231, 15%, 18%);--md-code-hl-operator-color: hsl(326, 100%, 74%);--md-code-hl-punctuation-color: hsl(60, 30%, 96.078%);--md-code-hl-string-color: hsl(65, 92%, 76%);--md-code-hl-special-color: hsl(265, 89%, 78%);--md-code-hl-number-color: hsl(265, 89%, 78%);--md-code-hl-keyword-color: hsl(326, 100%, 74%);--md-code-hl-name-color: hsl(60, 30%, 96.078%);--md-code-hl-constant-color: hsl(265, 89%, 78%);--md-code-hl-function-color: hsl(135, 94%, 65%);--md-code-hl-comment-color: hsl(225, 27%, 51%);--md-code-hl-variable-color: hsl(31, 100%, 71%);--md-code-hl-generic-color: hsl(225, 27%, 51%);--md-code-hl-color: hsl(231, 15%, 30%);--md-code-hl-color--light: hsl(231, 25%, 25%);--md-code-bg-color--light: hsla(231, 15%, 18%, 0.9);--md-code-bg-color--lighter: hsla(231, 15%, 18%, 0.5);--md-code-hl-entity-color: hsl(135, 94%, 65%);--md-code-hl-tag-color: hsl(326, 100%, 74%);--md-code-hl-namespace-color: hsl(60, 30%, 96.078%);--md-code-hl-builtin-color: hsl(191, 97%, 77%);--md-code-hl-class-color: hsl(191, 97%, 77%);--md-code-special-bg-color: hsl(231, 25%, 25%);--md-steps-border-color: hsl(230.6613379686, 10.4241713343%, 28.1575403575%);--md-typeset-a-color: hsl(191, 97%, 77%);--md-typeset-mark-color: hsl(75.3111515854, 11.5600114451%, 37.8888925515%);--md-typeset-del-color: hsl(314.8219481072, 22.0434125534%, 35.1703201111%);--md-typeset-ins-color: hsl(145.2334928709, 27.8121663576%, 33.1574755691%);--md-progress-stripe: var(--md-default-bg-color--lightest);--md-progress-100: hsl(135, 94%, 65%);--md-progress-80: hsl(96.9286079031, 93.5050765575%, 74.7933068737%);--md-progress-60: hsl(65, 92%, 76%);--md-progress-40: hsl(31, 100%, 71%);--md-progress-20: hsl(326, 100%, 74%);--md-progress-0: hsl(0, 100%, 67%);--md-typeset-kbd-color: var(--md-default-fg-color--lightest);--md-typeset-kbd-border-color: var(--md-default-bg-color--dark);--md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter)}[data-md-color-scheme=slate][data-md-color-primary=red],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=red]{--md-primary-code-bg-color: hsl(332.2545890109, 15.8127407999%, 23.5759703429%);--md-primary-fg-color: hsla(0deg, 100%, 67%, 1);--md-primary-fg-color--transparent: hsla(0deg, 100%, 67%, 0.2);--md-primary-fg-color--light: hsla(0deg, 100%, 72%, 1);--md-primary-fg-color--dark: hsla(0deg, 100%, 62%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=pink],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=pink]{--md-primary-code-bg-color: hsl(288.4757168622, 14.8889902037%, 24.6712834924%);--md-primary-fg-color: hsla(326deg, 100%, 74%, 1);--md-primary-fg-color--transparent: hsla(326deg, 100%, 74%, 0.2);--md-primary-fg-color--light: hsla(326deg, 100%, 79%, 1);--md-primary-fg-color--dark: hsla(326deg, 100%, 69%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=purple],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=purple]{--md-primary-code-bg-color: hsl(248.4980702, 16.8923581309%, 26.4141657947%);--md-primary-fg-color: hsla(265deg, 89%, 78%, 1);--md-primary-fg-color--transparent: hsla(265deg, 89%, 78%, 0.2);--md-primary-fg-color--light: hsla(265deg, 89%, 83%, 1);--md-primary-fg-color--dark: hsla(265deg, 89%, 73%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=deep-purple],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=deep-purple]{--md-primary-code-bg-color: hsl(248.4980702, 16.8923581309%, 26.4141657947%);--md-primary-fg-color: hsla(265deg, 89%, 78%, 1);--md-primary-fg-color--transparent: hsla(265deg, 89%, 78%, 0.2);--md-primary-fg-color--light: hsla(265deg, 89%, 83%, 1);--md-primary-fg-color--dark: hsla(265deg, 89%, 73%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=blue],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=blue]{--md-primary-code-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-primary-fg-color: hsla(225deg, 100%, 75%, 1);--md-primary-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-primary-fg-color--light: hsla(225deg, 100%, 80%, 1);--md-primary-fg-color--dark: hsla(225deg, 100%, 70%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=indigo],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=indigo]{--md-primary-code-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-primary-fg-color: hsla(225deg, 100%, 75%, 1);--md-primary-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-primary-fg-color--light: hsla(225deg, 100%, 80%, 1);--md-primary-fg-color--dark: hsla(225deg, 100%, 70%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=light-blue],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=light-blue]{--md-primary-code-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-primary-fg-color: hsla(225deg, 100%, 75%, 1);--md-primary-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-primary-fg-color--light: hsla(225deg, 100%, 80%, 1);--md-primary-fg-color--dark: hsla(225deg, 100%, 70%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=cyan],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=cyan]{--md-primary-code-bg-color: hsl(210.993928831, 19.0177068244%, 26.0788938803%);--md-primary-fg-color: hsla(191deg, 97%, 77%, 1);--md-primary-fg-color--transparent: hsla(191deg, 97%, 77%, 0.2);--md-primary-fg-color--light: hsla(191deg, 97%, 82%, 1);--md-primary-fg-color--dark: hsla(191deg, 97%, 72%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=teal],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=teal]{--md-primary-code-bg-color: hsl(210.993928831, 19.0177068244%, 26.0788938803%);--md-primary-fg-color: hsla(191deg, 97%, 77%, 1);--md-primary-fg-color--transparent: hsla(191deg, 97%, 77%, 0.2);--md-primary-fg-color--light: hsla(191deg, 97%, 82%, 1);--md-primary-fg-color--dark: hsla(191deg, 97%, 72%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=green],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=green]{--md-primary-code-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-primary-fg-color: hsla(135deg, 94%, 65%, 1);--md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);--md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=light-green],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=light-green]{--md-primary-code-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-primary-fg-color: hsla(135deg, 94%, 65%, 1);--md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);--md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=lime],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=lime]{--md-primary-code-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-primary-fg-color: hsla(135deg, 94%, 65%, 1);--md-primary-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-primary-fg-color--light: hsla(135deg, 94%, 70%, 1);--md-primary-fg-color--dark: hsla(135deg, 94%, 60%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=yellow],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=yellow]{--md-primary-code-bg-color: hsl(159.3047128419, 2.986865819%, 26.1419609775%);--md-primary-fg-color: hsla(65deg, 92%, 76%, 1);--md-primary-fg-color--transparent: hsla(65deg, 92%, 76%, 0.2);--md-primary-fg-color--light: hsla(65deg, 92%, 81%, 1);--md-primary-fg-color--dark: hsla(65deg, 92%, 71%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=amber],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=amber]{--md-primary-code-bg-color: hsl(159.3047128419, 2.986865819%, 26.1419609775%);--md-primary-fg-color: hsla(65deg, 92%, 76%, 1);--md-primary-fg-color--transparent: hsla(65deg, 92%, 76%, 0.2);--md-primary-fg-color--light: hsla(65deg, 92%, 81%, 1);--md-primary-fg-color--dark: hsla(65deg, 92%, 71%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=orange],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=orange]{--md-primary-code-bg-color: hsl(338.2103998913, 5.0960419739%, 25.1078079888%);--md-primary-fg-color: hsla(31deg, 100%, 71%, 1);--md-primary-fg-color--transparent: hsla(31deg, 100%, 71%, 0.2);--md-primary-fg-color--light: hsla(31deg, 100%, 76%, 1);--md-primary-fg-color--dark: hsla(31deg, 100%, 66%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-primary=deep-orange],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=deep-orange]{--md-primary-code-bg-color: hsl(338.2103998913, 5.0960419739%, 25.1078079888%);--md-primary-fg-color: hsla(31deg, 100%, 71%, 1);--md-primary-fg-color--transparent: hsla(31deg, 100%, 71%, 0.2);--md-primary-fg-color--light: hsla(31deg, 100%, 76%, 1);--md-primary-fg-color--dark: hsla(31deg, 100%, 66%, 1);--md-primary-bg-color: var(--md-default-bg-color);--md-primary-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=red],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=red]{--md-code-link-accent-bg-color: hsl(332.2545890109, 15.8127407999%, 23.5759703429%);--md-accent-fg-color: hsla(0deg, 100%, 67%, 1);--md-accent-fg-color--transparent: hsla(0deg, 100%, 67%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=pink],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=pink]{--md-code-link-accent-bg-color: hsl(288.4757168622, 14.8889902037%, 24.6712834924%);--md-accent-fg-color: hsla(326deg, 100%, 74%, 1);--md-accent-fg-color--transparent: hsla(326deg, 100%, 74%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=purple],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=purple]{--md-code-link-accent-bg-color: hsl(248.4980702, 16.8923581309%, 26.4141657947%);--md-accent-fg-color: hsla(265deg, 89%, 78%, 1);--md-accent-fg-color--transparent: hsla(265deg, 89%, 78%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=deep-purple],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=deep-purple]{--md-code-link-accent-bg-color: hsl(248.4980702, 16.8923581309%, 26.4141657947%);--md-accent-fg-color: hsla(265deg, 89%, 78%, 1);--md-accent-fg-color--transparent: hsla(265deg, 89%, 78%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=blue],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=blue]{--md-code-link-accent-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-accent-fg-color: hsla(225deg, 100%, 75%, 1);--md-accent-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=indigo],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=indigo]{--md-code-link-accent-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-accent-fg-color: hsla(225deg, 100%, 75%, 1);--md-accent-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=light-blue],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=light-blue]{--md-code-link-accent-bg-color: hsl(227.2638621359, 21.6677726002%, 25.6465952614%);--md-accent-fg-color: hsla(225deg, 100%, 75%, 1);--md-accent-fg-color--transparent: hsla(225deg, 100%, 75%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=cyan],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=cyan]{--md-code-link-accent-bg-color: hsl(210.993928831, 19.0177068244%, 26.0788938803%);--md-accent-fg-color: hsla(191deg, 97%, 77%, 1);--md-accent-fg-color--transparent: hsla(191deg, 97%, 77%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=teal],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=teal]{--md-code-link-accent-bg-color: hsl(210.993928831, 19.0177068244%, 26.0788938803%);--md-accent-fg-color: hsla(191deg, 97%, 77%, 1);--md-accent-fg-color--transparent: hsla(191deg, 97%, 77%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=green],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=green]{--md-code-link-accent-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-accent-fg-color: hsla(135deg, 94%, 65%, 1);--md-accent-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=light-green],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=light-green]{--md-code-link-accent-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-accent-fg-color: hsla(135deg, 94%, 65%, 1);--md-accent-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=lime],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=lime]{--md-code-link-accent-bg-color: hsl(168.8720935496, 16.518720864%, 23.1930022147%);--md-accent-fg-color: hsla(135deg, 94%, 65%, 1);--md-accent-fg-color--transparent: hsla(135deg, 94%, 65%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=yellow],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=yellow]{--md-code-link-accent-bg-color: hsl(159.3047128419, 2.986865819%, 26.1419609775%);--md-accent-fg-color: hsla(65deg, 92%, 76%, 1);--md-accent-fg-color--transparent: hsla(65deg, 92%, 76%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=amber],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=amber]{--md-code-link-accent-bg-color: hsl(159.3047128419, 2.986865819%, 26.1419609775%);--md-accent-fg-color: hsla(65deg, 92%, 76%, 1);--md-accent-fg-color--transparent: hsla(65deg, 92%, 76%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=orange],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=orange]{--md-code-link-accent-bg-color: hsl(338.2103998913, 5.0960419739%, 25.1078079888%);--md-accent-fg-color: hsla(31deg, 100%, 71%, 1);--md-accent-fg-color--transparent: hsla(31deg, 100%, 71%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}[data-md-color-scheme=slate][data-md-color-accent=deep-orange],[data-md-color-scheme=slate] :not([data-md-color-scheme])[data-md-color-primary=deep-orange]{--md-code-link-accent-bg-color: hsl(338.2103998913, 5.0960419739%, 25.1078079888%);--md-accent-fg-color: hsla(31deg, 100%, 71%, 1);--md-accent-fg-color--transparent: hsla(31deg, 100%, 71%, 0.2);--md-accent-bg-color: var(--md-default-bg-color);--md-accent-bg-color--light: var(--md-default-bg-color--light)}:root{--md-heart: #ff5252;--md-heart-big: #ff1744}:root [data-md-color-scheme=slate]{--md-heart: hsl(0, 100%, 67%);--md-heart-big: hsl(326, 100%, 74%)}.md-typeset a.source-link{position:relative;top:-0.6rem;float:right;color:var(--md-default-fg-color--lighter);transition:color 125ms}.md-typeset a.source-link:hover{color:var(--md-accent-fg-color)}.md-typeset a.source-link .twemoji{height:1.2rem}.md-typeset a.source-link .twemoji svg{width:1.2rem;height:1.2rem}.md-typeset div.highlight.md-max-height pre>code{max-height:15rem}.twemoji.heart-throb svg,.twemoji.heart-throb-hover svg{position:relative;color:var(--md-heart);animation:pulse 1.5s ease infinite}@keyframes pulse{0%{transform:scale(1)}40%{color:var(--md-heart-big);transform:scale(1.3)}50%{transform:scale(1.2)}60%{color:var(--md-heart-big);transform:scale(1.3)}100%{transform:scale(1)}}footer.sponsorship{text-align:center}footer.sponsorship .twemoji{padding:.05rem}footer.sponsorship a{text-decoration:none}footer.sponsorship hr{display:inline-block;width:1.6rem;margin:0 .7rem;vertical-align:middle;border-bottom:2px solid var(--md-default-fg-color--lighter)}footer.sponsorship:hover hr{border-color:var(--md-accent-fg-color)}footer.sponsorship:not(:hover) .twemoji.heart-throb-hover svg{color:var(--md-default-fg-color--lighter) !important}:root>*{--md-admonition-icon-color: #3654c2;--md-admonition-bg-color: rgba(54, 84, 194, 0.1)}:root>*[data-md-color-scheme=slate]{--md-admonition-icon-color: hsl(225, 100%, 75%);--md-admonition-bg-color: hsla(225, 100%, 75%, 0.1)}:root>*{--md-admonition-icon--settings: svg-load(\"@mdi/svg/svg/cog.svg\");--md-admonition-bg-color--settings: rgba(170, 0, 255, 0.1);--md-admonition-icon-color--settings: #aa00ff}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--settings: hsla(326, 100%, 74%, 0.1);--md-admonition-icon-color--settings: hsl(326, 100%, 74%)}:root>*{--md-admonition-icon--new: svg-load(\"@mdi/svg/svg/alert-decagram.svg\");--md-admonition-bg-color--new: rgba(255, 214, 0, 0.1);--md-admonition-icon-color--new: #ffd600}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--new: hsla(65, 92%, 76%, 0.1);--md-admonition-icon-color--new: hsl(65, 92%, 76%)}:root>*{--md-admonition-bg-color--note: rgba(68, 138, 255, 0.1);--md-admonition-icon-color--note: #448aff}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--note: hsla(225, 100%, 75%, 0.1);--md-admonition-icon-color--note: hsl(225, 100%, 75%)}:root>*{--md-admonition-bg-color--abstract: rgba(0, 176, 255, 0.1);--md-admonition-icon-color--abstract: #00b0ff}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--abstract: hsla(208.9651589316, 100.1516938638%, 76.1926610237%, 0.1);--md-admonition-icon-color--abstract: hsl(208.9651589316, 100.1516938638%, 76.1926610237%)}:root>*{--md-admonition-bg-color--info: rgba(0, 184, 212, 0.1);--md-admonition-icon-color--info: #00b8d4}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--info: hsla(191, 97%, 77%, 0.1);--md-admonition-icon-color--info: hsl(191, 97%, 77%)}:root>*{--md-admonition-bg-color--tip: rgba(0, 191, 165, 0.1);--md-admonition-icon-color--tip: #00bfa5}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--tip: hsla(157.7363570417, 83.7763520157%, 69.6636999884%, 0.1);--md-admonition-icon-color--tip: hsl(157.7363570417, 83.7763520157%, 69.6636999884%)}:root>*{--md-admonition-bg-color--success: rgba(0, 200, 83, 0.1);--md-admonition-icon-color--success: #00c853}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--success: hsla(135, 94%, 65%, 0.1);--md-admonition-icon-color--success: hsl(135, 94%, 65%)}:root>*{--md-admonition-bg-color--question: rgba(100, 221, 23, 0.1);--md-admonition-icon-color--question: #64dd17}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--question: hsla(74.4232873346, 59.3464897233%, 65.6529017761%, 0.1);--md-admonition-icon-color--question: hsl(74.4232873346, 59.3464897233%, 65.6529017761%)}:root>*{--md-admonition-bg-color--warning: rgba(255, 145, 0, 0.1);--md-admonition-icon-color--warning: #ff9100}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--warning: hsla(31, 100%, 71%, 0.1);--md-admonition-icon-color--warning: hsl(31, 100%, 71%)}:root>*{--md-admonition-bg-color--failure: rgba(255, 82, 82, 0.1);--md-admonition-icon-color--failure: #ff5252}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--failure: hsla(15.759766848, 102.8951066345%, 69.4486457644%, 0.1);--md-admonition-icon-color--failure: hsl(15.759766848, 102.8951066345%, 69.4486457644%)}:root>*{--md-admonition-bg-color--danger: rgba(255, 23, 68, 0.1);--md-admonition-icon-color--danger: #ff1744}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--danger: hsla(0, 100%, 67%, 0.1);--md-admonition-icon-color--danger: hsl(0, 100%, 67%)}:root>*{--md-admonition-bg-color--bug: rgba(245, 0, 87, 0.1);--md-admonition-icon-color--bug: #f50057}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--bug: hsla(331.9938073573, 62.7005462555%, 68.9374611138%, 0.1);--md-admonition-icon-color--bug: hsl(331.9938073573, 62.7005462555%, 68.9374611138%)}:root>*{--md-admonition-bg-color--example: rgba(124, 77, 255, 0.1);--md-admonition-icon-color--example: #7c4dff}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--example: hsla(265, 89%, 78%, 0.1);--md-admonition-icon-color--example: hsl(265, 89%, 78%)}:root>*{--md-admonition-bg-color--quote: rgba(158, 158, 158, 0.1);--md-admonition-icon-color--quote: #9e9e9e}:root>*[data-md-color-scheme=slate]{--md-admonition-bg-color--quote: hsla(225, 8%, 51%, 0.1);--md-admonition-icon-color--quote: hsl(225, 8%, 51%)}.md-typeset .admonition,.md-typeset details{background:var(--md-admonition-bg-color--note);border-width:0;border-left-width:4px}.md-typeset .admonition>.admonition-title::before,.md-typeset details>.admonition-title::before,.md-typeset details>summary::before{background-color:var(--md-admonition-icon-color--note)}.md-typeset .admonition>.admonition-title::after,.md-typeset details>.admonition-title::after,.md-typeset details>summary::after{color:var(--md-admonition-icon-color--note)}.md-typeset .admonition.note,.md-typeset details.note{background:var(--md-admonition-bg-color--note)}.md-typeset .admonition.note>.admonition-title::before,.md-typeset details.note>.admonition-title::before,.md-typeset details.note>summary::before{background-color:var(--md-admonition-icon-color--note)}.md-typeset .admonition.note>.admonition-title::after,.md-typeset details.note>.admonition-title::after,.md-typeset details.note>summary::after{color:var(--md-admonition-icon-color--note)}.md-typeset .admonition.abstract,.md-typeset details.abstract{background:var(--md-admonition-bg-color--abstract)}.md-typeset .admonition.abstract>.admonition-title::before,.md-typeset details.abstract>.admonition-title::before,.md-typeset details.abstract>summary::before{background-color:var(--md-admonition-icon-color--abstract)}.md-typeset .admonition.abstract>.admonition-title::after,.md-typeset details.abstract>.admonition-title::after,.md-typeset details.abstract>summary::after{color:var(--md-admonition-icon-color--abstract)}.md-typeset .admonition.info,.md-typeset details.info{background:var(--md-admonition-bg-color--info)}.md-typeset .admonition.info>.admonition-title::before,.md-typeset details.info>.admonition-title::before,.md-typeset details.info>summary::before{background-color:var(--md-admonition-icon-color--info)}.md-typeset .admonition.info>.admonition-title::after,.md-typeset details.info>.admonition-title::after,.md-typeset details.info>summary::after{color:var(--md-admonition-icon-color--info)}.md-typeset .admonition.tip,.md-typeset details.tip{background:var(--md-admonition-bg-color--tip)}.md-typeset .admonition.tip>.admonition-title::before,.md-typeset details.tip>.admonition-title::before,.md-typeset details.tip>summary::before{background-color:var(--md-admonition-icon-color--tip)}.md-typeset .admonition.tip>.admonition-title::after,.md-typeset details.tip>.admonition-title::after,.md-typeset details.tip>summary::after{color:var(--md-admonition-icon-color--tip)}.md-typeset .admonition.success,.md-typeset details.success{background:var(--md-admonition-bg-color--success)}.md-typeset .admonition.success>.admonition-title::before,.md-typeset details.success>.admonition-title::before,.md-typeset details.success>summary::before{background-color:var(--md-admonition-icon-color--success)}.md-typeset .admonition.success>.admonition-title::after,.md-typeset details.success>.admonition-title::after,.md-typeset details.success>summary::after{color:var(--md-admonition-icon-color--success)}.md-typeset .admonition.question,.md-typeset details.question{background:var(--md-admonition-bg-color--question)}.md-typeset .admonition.question>.admonition-title::before,.md-typeset details.question>.admonition-title::before,.md-typeset details.question>summary::before{background-color:var(--md-admonition-icon-color--question)}.md-typeset .admonition.question>.admonition-title::after,.md-typeset details.question>.admonition-title::after,.md-typeset details.question>summary::after{color:var(--md-admonition-icon-color--question)}.md-typeset .admonition.warning,.md-typeset details.warning{background:var(--md-admonition-bg-color--warning)}.md-typeset .admonition.warning>.admonition-title::before,.md-typeset details.warning>.admonition-title::before,.md-typeset details.warning>summary::before{background-color:var(--md-admonition-icon-color--warning)}.md-typeset .admonition.warning>.admonition-title::after,.md-typeset details.warning>.admonition-title::after,.md-typeset details.warning>summary::after{color:var(--md-admonition-icon-color--warning)}.md-typeset .admonition.failure,.md-typeset details.failure{background:var(--md-admonition-bg-color--failure)}.md-typeset .admonition.failure>.admonition-title::before,.md-typeset details.failure>.admonition-title::before,.md-typeset details.failure>summary::before{background-color:var(--md-admonition-icon-color--failure)}.md-typeset .admonition.failure>.admonition-title::after,.md-typeset details.failure>.admonition-title::after,.md-typeset details.failure>summary::after{color:var(--md-admonition-icon-color--failure)}.md-typeset .admonition.danger,.md-typeset details.danger{background:var(--md-admonition-bg-color--danger)}.md-typeset .admonition.danger>.admonition-title::before,.md-typeset details.danger>.admonition-title::before,.md-typeset details.danger>summary::before{background-color:var(--md-admonition-icon-color--danger)}.md-typeset .admonition.danger>.admonition-title::after,.md-typeset details.danger>.admonition-title::after,.md-typeset details.danger>summary::after{color:var(--md-admonition-icon-color--danger)}.md-typeset .admonition.bug,.md-typeset details.bug{background:var(--md-admonition-bg-color--bug)}.md-typeset .admonition.bug>.admonition-title::before,.md-typeset details.bug>.admonition-title::before,.md-typeset details.bug>summary::before{background-color:var(--md-admonition-icon-color--bug)}.md-typeset .admonition.bug>.admonition-title::after,.md-typeset details.bug>.admonition-title::after,.md-typeset details.bug>summary::after{color:var(--md-admonition-icon-color--bug)}.md-typeset .admonition.example,.md-typeset details.example{background:var(--md-admonition-bg-color--example)}.md-typeset .admonition.example>.admonition-title::before,.md-typeset details.example>.admonition-title::before,.md-typeset details.example>summary::before{background-color:var(--md-admonition-icon-color--example)}.md-typeset .admonition.example>.admonition-title::after,.md-typeset details.example>.admonition-title::after,.md-typeset details.example>summary::after{color:var(--md-admonition-icon-color--example)}.md-typeset .admonition.quote,.md-typeset details.quote{background:var(--md-admonition-bg-color--quote)}.md-typeset .admonition.quote>.admonition-title::before,.md-typeset details.quote>.admonition-title::before,.md-typeset details.quote>summary::before{background-color:var(--md-admonition-icon-color--quote)}.md-typeset .admonition.quote>.admonition-title::after,.md-typeset details.quote>.admonition-title::after,.md-typeset details.quote>summary::after{color:var(--md-admonition-icon-color--quote)}.md-typeset .admonition.settings,.md-typeset details.settings{background:var(--md-admonition-bg-color--settings)}.md-typeset .admonition.settings>.admonition-title::before,.md-typeset details.settings>.admonition-title::before,.md-typeset details.settings>summary::before{width:1rem;height:1rem;background-color:var(--md-admonition-icon-color--settings);background-size:1rem;mask-image:var(--md-admonition-icon--settings);content:\" \"}.md-typeset .admonition.settings>.admonition-title::after,.md-typeset details.settings>.admonition-title::after,.md-typeset details.settings>summary::after{color:var(--md-admonition-icon-color--settings)}.md-typeset .admonition.new,.md-typeset details.new{background:var(--md-admonition-bg-color--new)}.md-typeset .admonition.new>.admonition-title::before,.md-typeset details.new>.admonition-title::before,.md-typeset details.new>summary::before{width:1rem;height:1rem;background-color:var(--md-admonition-icon-color--new);background-size:1rem;mask-image:var(--md-admonition-icon--new);content:\" \"}.md-typeset .admonition.new>.admonition-title::after,.md-typeset details.new>.admonition-title::after,.md-typeset details.new>summary::after{color:var(--md-admonition-icon-color--new)}.admonition:has(.admonition-title:only-child,.md-typeset details>summary:only-child),.md-typeset details:has(.admonition-title:only-child,.md-typeset details>summary:only-child){padding-bottom:.48em}mjx-container[display=true]{font-size:120% !important}mjx-container:not([display]){font-size:100% !important}.md-typeset .arithmatex{overflow-x:auto !important;overflow-y:hidden !important}.katex-display .katex-html{display:flex !important;flex-direction:row;flex-wrap:nowrap;align-items:baseline;justify-content:space-between}.katex-display .katex-html .base{display:inline !important}.katex-display .katex-html .tag{position:relative !important;display:inline !important;margin-left:var(--margin-small)}.CtxtMenu_InfoClose{top:.2em;right:.2em}.CtxtMenu_InfoContent{overflow:auto;text-align:left;font-size:80%;padding:.4em .6em;border:1px inset;margin:1em 0px;max-height:20em;max-width:30em;background-color:#eee;white-space:normal}.CtxtMenu_Info.CtxtMenu_MousePost{outline:none}.CtxtMenu_Info{position:fixed;left:50%;width:auto;text-align:center;border:3px outset;padding:1em 2em;background-color:#ddd;color:#000;cursor:default;font-family:message-box;font-size:120%;font-style:normal;text-indent:0;text-transform:none;line-height:normal;letter-spacing:normal;word-spacing:normal;word-wrap:normal;white-space:nowrap;float:none;z-index:201;border-radius:15px;-webkit-border-radius:15px;-moz-border-radius:15px;-khtml-border-radius:15px;box-shadow:0px 10px 20px gray;-webkit-box-shadow:0px 10px 20px gray;-moz-box-shadow:0px 10px 20px gray;-khtml-box-shadow:0px 10px 20px gray;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color=\"gray\", Positive=\"true\")}.CtxtMenu_MenuClose{position:absolute;cursor:pointer;display:inline-block;border:2px solid #aaa;border-radius:18px;-webkit-border-radius:18px;-moz-border-radius:18px;-khtml-border-radius:18px;font-family:\"Courier New\",Courier;font-size:24px;color:#f0f0f0}.CtxtMenu_MenuClose span{display:block;background-color:#aaa;border:1.5px solid;border-radius:18px;-webkit-border-radius:18px;-moz-border-radius:18px;-khtml-border-radius:18px;line-height:0;padding:8px 0 6px}.CtxtMenu_MenuClose:hover{color:#fff !important;border:2px solid #ccc !important}.CtxtMenu_MenuClose:hover span{background-color:#ccc !important}.CtxtMenu_MenuClose:hover:focus{outline:none}.CtxtMenu_Menu{position:absolute;background-color:#fff;color:#000;width:auto;padding:5px 0px;border:1px solid #ccc;margin:0;cursor:default;font:menu;text-align:left;text-indent:0;text-transform:none;line-height:normal;letter-spacing:normal;word-spacing:normal;word-wrap:normal;white-space:nowrap;float:none;z-index:201;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-khtml-border-radius:5px;box-shadow:0px 10px 20px gray;-webkit-box-shadow:0px 10px 20px gray;-moz-box-shadow:0px 10px 20px gray;-khtml-box-shadow:0px 10px 20px gray}.CtxtMenu_MenuItem{padding:1px 2em;background:rgba(0,0,0,0)}.CtxtMenu_MenuArrow{position:absolute;right:.5em;padding-top:.25em;color:#666;font-size:.75em}.CtxtMenu_MenuActive .CtxtMenu_MenuArrow{color:#fff}.CtxtMenu_MenuArrow.CtxtMenu_RTL{left:.5em;right:auto}.CtxtMenu_MenuCheck{position:absolute;left:.7em}.CtxtMenu_MenuCheck.CtxtMenu_RTL{right:.7em;left:auto}.CtxtMenu_MenuRadioCheck{position:absolute;left:.7em}.CtxtMenu_MenuRadioCheck.CtxtMenu_RTL{right:.7em;left:auto}.CtxtMenu_MenuInputBox{padding-left:1em;right:.5em;color:#666}.CtxtMenu_MenuInputBox.CtxtMenu_RTL{left:.1em}.CtxtMenu_MenuComboBox{left:.1em;padding-bottom:.5em}.CtxtMenu_MenuSlider{left:.1em}.CtxtMenu_SliderValue{position:absolute;right:.1em;padding-top:.25em;color:#333;font-size:.75em}.CtxtMenu_SliderBar{outline:none;background:#d3d3d3}.CtxtMenu_MenuLabel{padding:1px 2em 3px 1.33em;font-style:italic}.CtxtMenu_MenuRule{border-top:1px solid #ddd;margin:4px 3px}.CtxtMenu_MenuDisabled{color:GrayText}.CtxtMenu_MenuActive{background-color:#606872;color:#fff}.CtxtMenu_MenuDisabled:focus{background-color:#e8e8e8}.CtxtMenu_MenuLabel:focus{background-color:#e8e8e8}.CtxtMenu_ContextMenu:focus{outline:none}.CtxtMenu_ContextMenu .CtxtMenu_MenuItem:focus{outline:none}.CtxtMenu_SelectionMenu{position:relative;float:left;border-bottom:none;-webkit-box-shadow:none;-webkit-border-radius:0px}.CtxtMenu_SelectionItem{padding-right:1em}.CtxtMenu_Selection{right:40%;width:50%}.CtxtMenu_SelectionBox{padding:0em;max-height:20em;max-width:none;background-color:#fff}.CtxtMenu_SelectionDivider{clear:both;border-top:2px solid #000}.CtxtMenu_Menu .CtxtMenu_MenuClose{top:-10px;left:-10px}[data-md-color-scheme=slate] .CtxtMenu_InfoSignature input,[data-md-color-scheme=slate] .CtxtMenu_InfoContent pre{color:#000}[data-md-color-scheme=slate] .CtxtMenu_Info,[data-md-color-scheme=slate] .CtxtMenu_Menu{box-shadow:0px 10px 20px rgba(0,0,0,.5)}.md-typeset del.critic,.md-typeset ins.critic,.md-typeset mark.critic{padding:0 .25em;color:unset;box-shadow:none}.md-typeset .critic.break{margin:0}.md-typeset details{overflow:hidden}.md-typeset details>summary:focus{outline-style:none}:root>*{--highlight-svg-console: svg-load(\"@mdi/svg/svg/console.svg\");--highlight-svg-arrow-expand: svg-load(\"@mdi/svg/svg/arrow-expand.svg\");--highlight-svg-arrow-collapse: svg-load(\"@mdi/svg/svg/arrow-collapse.svg\")}.highlight .kc{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne{color:var(--md-code-hl-class-color)}.highlight .mb{color:var(--md-code-hl-number-color)}.highlight .nb,.highlight .bp{color:var(--md-code-hl-builtin-color)}.highlight .nn{color:var(--md-code-hl-namespace-color)}.highlight .na,.highlight .nd,.highlight .ni{color:var(--md-code-hl-entity-color)}.highlight .nl,.highlight .nt{color:var(--md-code-hl-tag-color)}.md-typeset *:not(pre)>code{margin:0;padding:0 .2941176471em;color:var(--md-code-fg-color);background-color:var(--md-code-inline-bg-color);border-radius:.1rem;box-shadow:none}.md-typeset pre>code{outline:none}.md-typeset td code{word-break:normal}.md-typeset .highlight{tab-size:8}.md-typeset .highlight [data-linenos].special::before{background-color:var(--md-code-special-bg-color)}.md-typeset .highlighttable .linenodiv .special{margin-right:-.5882352941em;margin-left:-1.1764705882em;padding-right:.5882352941em;padding-left:1.1764705882em;background-color:var(--md-code-special-bg-color)}.md-typeset .highlight span.filename{position:relative;display:block;margin-top:1em;padding:.5em 1.1764705882em .5em 2.9411764706em;font-weight:700;font-size:.68rem;background-color:var(--md-code-title-bg-color);border-top-left-radius:.48rem;border-top-right-radius:.48rem}.md-typeset .highlight span.filename+pre{margin-top:0}.md-typeset .highlight span.filename+pre code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .highlight span.filename::before{position:absolute;left:.8823529412em;width:1.4705882353em;height:1.4705882353em;background-color:var(--md-default-fg-color);mask-image:var(--highlight-svg-console);mask-repeat:no-repeat;mask-size:contain;content:\"\"}.md-typeset .collapse-code{position:relative;margin-top:1em;margin-bottom:1em}.md-typeset .collapse-code pre{margin-top:0;margin-bottom:0}.md-typeset .collapse-code input{display:none}.md-typeset .collapse-code input~.code-footer{width:100%;margin:0;padding:.25em .5em .25em 0em}.md-typeset .collapse-code input~.code-footer label{position:relative;margin:.05em;padding:.15em .8em;color:var(--md-primary-bg-color);font-size:90%;background-color:var(--md-accent-fg-color);mask-repeat:no-repeat;mask-size:contain;border-radius:.1rem;cursor:pointer;content:\"\"}.md-typeset .collapse-code input~.code-footer label:hover{background-color:var(--md-accent-fg-color)}.md-typeset .collapse-code input~.code-footer label::before{position:absolute;top:.15em;left:.15em;display:block;box-sizing:border-box;width:1.25em;height:1.25em;background-color:var(--md-primary-bg-color);background-size:1.25em;content:\"\"}.md-typeset .collapse-code input~.code-footer label.expand{display:none}.md-typeset .collapse-code input~.code-footer label.expand::before{mask-image:var(--highlight-svg-arrow-expand)}.md-typeset .collapse-code input~.code-footer label.collapse::before{mask-image:var(--highlight-svg-arrow-collapse)}.md-typeset .collapse-code input:checked~.code-footer label.expand{display:inline}.md-typeset .collapse-code input:checked~.code-footer label.collapse{display:none}.md-typeset .collapse-code input:checked+div.highlight code{max-height:9.375em;overflow:hidden}.md-typeset .collapse-code input:checked~.code-footer{position:relative;bottom:4.3em;left:0;margin-bottom:-4.3em;padding:2em .5em .5em .8rem;background-image:linear-gradient(to bottom, transparent, var(--md-default-bg-color) 80% 100%);border-bottom-right-radius:.48rem;border-bottom-left-radius:.48rem}@media screen and (max-width: 44.9375em){.md-typeset>diagram-div{margin-right:-0.8rem;margin-left:-0.8rem}.md-typeset>.collapse-code{margin-right:-0.8rem;margin-left:-0.8rem}.md-typeset>.collapse-code label.collapse{left:.8rem}}.md-typeset .keys .key-power::before{padding-right:.4em;content:\"⏻\"}.md-typeset .keys .key-fingerprint::before{padding-right:.4em;content:\"☝\"}:root>*{--magiclink-email-icon: svg-load(\"@mdi/svg/svg/mail.svg\");--magiclink-github-icon: svg-load(\"@mdi/svg/svg/github.svg\");--magiclink-bitbucket-icon: svg-load(\"@mdi/svg/svg/bitbucket.svg\");--magiclink-gitlab-icon: svg-load(\"@mdi/svg/svg/gitlab.svg\");--magiclink-commit-icon: svg-load(\"@primer/octicons/build/svg/git-commit-24.svg\");--magiclink-compare-icon: svg-load(\"@primer/octicons/build/svg/file-diff-24.svg\");--magiclink-pull-icon: svg-load(\"@primer/octicons/build/svg/git-pull-request-24.svg\");--magiclink-issue-icon: svg-load(\"@primer/octicons/build/svg/issue-opened-24.svg\");--magiclink-discussion-icon: svg-load(\"@primer/octicons/build/svg/comment-discussion-24.svg\")}.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore)::before{mask-image:var(--magiclink-email-icon)}.md-typeset .magiclink-repository:not(.magiclink-ignore),.md-typeset .magiclink-compare:not(.magiclink-ignore),.md-typeset .magiclink-commit:not(.magiclink-ignore),.md-typeset .magiclink-pull:not(.magiclink-ignore),.md-typeset .magiclink-issue:not(.magiclink-ignore),.md-typeset .magiclink-discussion:not(.magiclink-ignore),.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore){position:relative;padding-left:1.375em}.md-typeset .magiclink-repository:not(.magiclink-ignore)::before,.md-typeset .magiclink-compare:not(.magiclink-ignore)::before,.md-typeset .magiclink-commit:not(.magiclink-ignore)::before,.md-typeset .magiclink-pull:not(.magiclink-ignore)::before,.md-typeset .magiclink-issue:not(.magiclink-ignore)::before,.md-typeset .magiclink-discussion:not(.magiclink-ignore)::before,.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore)::before{position:absolute;top:0;left:0;display:block;box-sizing:border-box;width:1.25em;height:1.25em;background-color:var(--md-typeset-a-color);background-size:1.25em;transition:background-color 125ms;mask-repeat:no-repeat;mask-size:contain;content:\"\"}.md-typeset .magiclink-repository:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-compare:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-commit:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-pull:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-issue:not(.magiclink-ignore):hover::before,.md-typeset .magiclink-discussion:not(.magiclink-ignore):hover::before,.md-typeset a[href^=\"mailto:\"]:not(.magiclink-ignore):hover::before{background-color:var(--md-accent-fg-color)}.md-typeset .magiclink-commit:not(.magiclink-ignore)::before{mask-image:var(--magiclink-commit-icon)}.md-typeset .magiclink-compare:not(.magiclink-ignore)::before{mask-image:var(--magiclink-compare-icon)}.md-typeset .magiclink-pull:not(.magiclink-ignore)::before{mask-image:var(--magiclink-pull-icon)}.md-typeset .magiclink-issue:not(.magiclink-ignore)::before{mask-image:var(--magiclink-issue-icon)}.md-typeset .magiclink-discussion:not(.magiclink-ignore)::before{mask-image:var(--magiclink-discussion-icon)}.md-typeset .magiclink-repository.magiclink-github:not(.magiclink-ignore)::before{mask-image:var(--magiclink-github-icon)}.md-typeset .magiclink-repository.magiclink-gitlab:not(.magiclink-ignore)::before{mask-image:var(--magiclink-gitlab-icon)}.md-typeset .magiclink-repository.magiclink-bitbucket:not(.magiclink-ignore)::before{mask-image:var(--magiclink-bitbucket-icon)}.md-typeset mark:not(.critic){box-shadow:none}.md-typeset .progress-label{position:absolute;width:100%;margin:0;color:var(--md-text-color);font-weight:700;line-height:1.4rem;white-space:nowrap;text-align:center;text-shadow:-0.0625em -0.0625em .375em var(--md-default-bg-color--light),.0625em -0.0625em .375em var(--md-default-bg-color--light),-0.0625em .0625em .375em var(--md-default-bg-color--light),.0625em .0625em .375em var(--md-default-bg-color--light)}.md-typeset .progress-bar{float:left;height:1.2rem;background-color:#2979ff}.md-typeset .candystripe-animate .progress-bar{animation:animate-stripes 3s linear infinite}.md-typeset .progress{position:relative;display:block;width:100%;height:1.2rem;margin:.5rem 0;background-color:var(--md-default-fg-color--lightest)}.md-typeset .progress.thin{height:.4rem;margin-top:.9rem}.md-typeset .progress.thin .progress-label{margin-top:-0.4rem}.md-typeset .progress.thin .progress-bar{height:.4rem}.md-typeset .progress.candystripe .progress-bar{background-image:linear-gradient(135deg, var(--md-progress-stripe) 27%, transparent 27%, transparent 52%, var(--md-progress-stripe) 52%, var(--md-progress-stripe) 77%, transparent 77%, transparent);background-size:2rem 2rem}.md-typeset .progress-100plus .progress-bar{background-color:var(--md-progress-100)}.md-typeset .progress-80plus .progress-bar{background-color:var(--md-progress-80)}.md-typeset .progress-60plus .progress-bar{background-color:var(--md-progress-60)}.md-typeset .progress-40plus .progress-bar{background-color:var(--md-progress-40)}.md-typeset .progress-20plus .progress-bar{background-color:var(--md-progress-20)}.md-typeset .progress-0plus .progress-bar{background-color:var(--md-progress-0)}@keyframes animate-stripes{0%{background-position:0 0}100%{background-position:6rem 0}}.md-typeset .tabbed-control button:hover{color:var(--md-default-bg-color);background:var(--md-accent-fg-color)}.md-typeset .tabbed-control--next button:hover{color:var(--md-default-bg-color);background:var(--md-accent-fg-color)}.js .md-typeset .tabbed-labels::before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-alternate.tabbed-set .tabbed-control{width:2rem}.md-typeset .tabbed-alternate.tabbed-set .tabbed-control[hidden]{width:1.2rem;opacity:0}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block{padding:0 .6rem}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:first-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:first-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:first-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:first-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:first-child{margin-top:.9375em}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:first-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:first-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:first-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:first-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:first-child code{border-top-left-radius:.48rem;border-top-right-radius:.48rem}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:only-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:only-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:only-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:only-child,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:only-child{margin-top:0;margin-right:-1.2rem;margin-left:-1.2rem;padding-right:.6rem;padding-left:.6rem}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:only-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:only-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:only-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:only-child code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:only-child code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>pre:only-child span.filename,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilite:only-child span.filename,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.codehilitetable:only-child span.filename,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlight:only-child span.filename,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.highlighttable:only-child span.filename{margin-top:0}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child{margin-top:0;margin-right:-1.2rem;margin-left:-1.2rem;padding-right:.6rem;padding-left:.6rem}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child pre code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child .codehilite code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child .codehilitetable code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child .highlight code,.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>.collapse-code:only-child .highlighttable code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-alternate.tabbed-set>.tabbed-content>.tabbed-block>diagram-div:only-child{margin-right:-1.2rem;margin-left:-1.2rem;padding-right:.6rem;padding-left:.6rem}@media screen and (max-width: 44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:0}.md-content__inner>.tabbed-set .tabbed-labels{max-width:100%;margin:0;padding-inline-start:0;scroll-padding-inline-start:0}.md-content__inner>.tabbed-set .tabbed-labels::after{padding-inline-end:0;content:none}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-inline-start:0;padding-inline-start:0}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-inline-end:0;padding-inline-end:0}}[data-md-color-scheme=slate] .md-typeset .task-list-control .task-list-indicator::before{background-color:var(--md-default-fg-color--lighter)}[data-md-color-scheme=slate] .md-typeset .task-list-control [type=checkbox]:checked+.task-list-indicator::before{background-color:hsl(135,94%,65%)}:root>*{--toc-svg-link: svg-load(\"@mdi/svg/svg/link.svg\")}.md-typeset .headerlink{width:1em;height:1em;vertical-align:middle;background-color:var(--md-default-fg-color--lighter);background-size:1em;mask-size:1em;mask-repeat:no-repeat;visibility:visible;mask-image:var(--toc-svg-link)}.md-typeset .headerlink:hover,.md-typeset [id]:target .headerlink{background-color:var(--md-accent-fg-color)}diagram-div{overflow:auto}.md-typeset div.steps>ol{counter-reset:item}.md-typeset div.steps>ol>li{position:relative;padding-left:1em;list-style:none}.md-typeset div.steps>ol>li::before{position:absolute;top:0;left:0;z-index:-1;display:block;width:1.75em;height:1.75em;margin-left:-1.25em;color:var(--md-steps-fg-color);font-weight:600;font-size:.9em;text-align:center;background-color:var(--md-steps-bg-color);border:1px solid var(--md-steps-border-color);border-radius:100px;content:counter(item);counter-increment:item}.md-typeset div.steps>ol>li::after{position:absolute;top:0;bottom:0;left:-0.36em;display:block;width:1px;margin-top:2em;border-left:1px solid var(--md-steps-border-color);content:\"\"}.md-typeset table:not([class]) th{border-bottom:.1rem solid var(--md-accent-fg-color)}html{background-color:rgba(0,0,0,0)}[data-md-component=announce] .twemoji{color:var(--md-primary-fg-color)}.md-container .md-tabs .md-tabs__item--active{border-bottom:.1rem solid var(--md-accent-fg-color)}.md-nav--secondary>ul{border-left:.1rem solid var(--md-default-fg-color--lightest)}.md-nav--secondary ul .md-nav__item .md-nav__link--active{margin-left:-0.1rem;padding-left:.8rem}.md-nav--secondary ul .md-nav__item ul .md-nav__item .md-nav__link--active{margin-left:-0.7rem;padding-left:1.4rem}.md-nav--secondary ul .md-nav__item ul .md-nav__item ul .md-nav__item .md-nav__link--active{margin-left:-1.3rem;padding-left:2rem}.md-nav--secondary ul .md-nav__item ul .md-nav__item ul .md-nav__item ul .md-nav__item .md-nav__link--active{margin-left:-1.9rem;padding-left:2.6rem}.md-nav--secondary ul .md-nav__item ul .md-nav__item ul .md-nav__item ul .md-nav__item ul .md-nav__item .md-nav__link--active{margin-left:-2.5rem;padding-left:3.2rem}.md-nav--secondary .md-nav__item{color:var(--md-default-fg-color--light)}.md-nav--secondary .md-nav__item .md-nav__link--active{color:var(--md-default-fg-color);border-left:.1rem solid var(--md-accent-fg-color);border-top-left-radius:0;border-bottom-left-radius:0}.md-nav--secondary .md-nav__item .md-nav__link:focus,.md-nav--secondary .md-nav__item .md-nav__link:hover{color:var(--md-default-fg-color)}.md-nav--primary .md-nav__item{color:var(--md-default-fg-color--light)}.md-nav__source{color:var(--md-text-color)}.md-nav__link[data-md-state=blur]{color:var(--md-default-fg-color--light)}.md-typeset h5{color:var(--md-text-color);text-transform:none}.md-typeset__scrollwrap,.md-sidebar__scrollwrap,.md-search__scrollwrap,.md-typeset pre>code,.md-typeset div.mermaid,.md-typeset div.diagram,.md-typeset mermaid-div,.md-typeset diagram-div,.md-typeset pre.arithmatex,.md-typeset div.arithmatex{scrollbar-color:var(--md-default-fg-color--lighter) rgba(0,0,0,0);scrollbar-width:thin}.md-typeset__scrollwrap:hover,.md-sidebar__scrollwrap:hover,.md-search__scrollwrap:hover,.md-typeset pre>code:hover,.md-typeset div.mermaid:hover,.md-typeset div.diagram:hover,.md-typeset mermaid-div:hover,.md-typeset diagram-div:hover,.md-typeset pre.arithmatex:hover,.md-typeset div.arithmatex:hover{scrollbar-color:var(--md-accent-fg-color) rgba(0,0,0,0)}.md-typeset__scrollwrap::-webkit-scrollbar,.md-sidebar__scrollwrap::-webkit-scrollbar,.md-search__scrollwrap::-webkit-scrollbar,.md-typeset pre>code::-webkit-scrollbar,.md-typeset div.mermaid::-webkit-scrollbar,.md-typeset div.diagram::-webkit-scrollbar,.md-typeset mermaid-div::-webkit-scrollbar,.md-typeset diagram-div::-webkit-scrollbar,.md-typeset pre.arithmatex::-webkit-scrollbar,.md-typeset div.arithmatex::-webkit-scrollbar{width:.2rem;height:.2rem}.md-typeset__scrollwrap::-webkit-scrollbar-corner,.md-sidebar__scrollwrap::-webkit-scrollbar-corner,.md-search__scrollwrap::-webkit-scrollbar-corner,.md-typeset pre>code::-webkit-scrollbar-corner,.md-typeset div.mermaid::-webkit-scrollbar-corner,.md-typeset div.diagram::-webkit-scrollbar-corner,.md-typeset mermaid-div::-webkit-scrollbar-corner,.md-typeset diagram-div::-webkit-scrollbar-corner,.md-typeset pre.arithmatex::-webkit-scrollbar-corner,.md-typeset div.arithmatex::-webkit-scrollbar-corner{background-color:rgba(0,0,0,0)}.md-typeset__scrollwrap::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap::-webkit-scrollbar-thumb,.md-search__scrollwrap::-webkit-scrollbar-thumb,.md-typeset pre>code::-webkit-scrollbar-thumb,.md-typeset div.mermaid::-webkit-scrollbar-thumb,.md-typeset div.diagram::-webkit-scrollbar-thumb,.md-typeset mermaid-div::-webkit-scrollbar-thumb,.md-typeset diagram-div::-webkit-scrollbar-thumb,.md-typeset pre.arithmatex::-webkit-scrollbar-thumb,.md-typeset div.arithmatex::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset__scrollwrap::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover,.md-search__scrollwrap::-webkit-scrollbar-thumb:hover,.md-typeset pre>code::-webkit-scrollbar-thumb:hover,.md-typeset div.mermaid::-webkit-scrollbar-thumb:hover,.md-typeset div.diagram::-webkit-scrollbar-thumb:hover,.md-typeset mermaid-div::-webkit-scrollbar-thumb:hover,.md-typeset diagram-div::-webkit-scrollbar-thumb:hover,.md-typeset pre.arithmatex::-webkit-scrollbar-thumb:hover,.md-typeset div.arithmatex::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}","@use \"sass:color\";\n@use \"../utilities/convert\";\n@use \"../utilities/color_tools\";\n@use \"./material_color\";\n@use \"./dracula\";\n@use \"sass:list\";\n\n:root > * {\n // Custom code colors\n --md-default-bg-color--trans: rgb(100%, 100%, 100%, 0);\n --md-tab-control-bg: var(--md-default-bg-color);\n\n // Code colors\n --md-code-fg-color: #{dracula.$alucard-fg};\n --md-code-bg-color: #{dracula.$alucard-bg};\n --md-code-title-bg-color: #{dracula.$alucard-bg};\n --md-code-inline-bg-color: #{dracula.$alucard-bg};\n --md-code-hl-operator-color: #{dracula.$alucard-pink};\n --md-code-hl-punctuation-color: #{dracula.$alucard-fg};\n --md-code-hl-string-color: #{dracula.$alucard-yellow};\n --md-code-hl-special-color: #{dracula.$alucard-purple};\n --md-code-hl-number-color: #{dracula.$alucard-purple};\n --md-code-hl-keyword-color: #{dracula.$alucard-pink};\n --md-code-hl-name-color: #{dracula.$alucard-fg};\n --md-code-hl-constant-color: #{dracula.$alucard-purple};\n --md-code-hl-function-color: #{dracula.$alucard-green};\n --md-code-hl-comment-color: #{dracula.$alucard-comment};\n --md-code-hl-variable-color: #{dracula.$alucard-orange};\n --md-code-hl-generic-color: #{dracula.$alucard-comment};\n --md-code-hl-color: #{dracula.$alucard-selection};\n --md-code-hl-color--light: #{dracula.$alucard-highlight};\n\n // Custom code colors\n --md-code-hl-entity-color: #{dracula.$alucard-green};\n --md-code-hl-tag-color: #{dracula.$alucard-pink};\n --md-code-hl-namespace-color: #{dracula.$alucard-fg};\n --md-code-hl-builtin-color: #{dracula.$alucard-cyan};\n --md-code-hl-class-color: #{dracula.$alucard-cyan};\n\n --md-code-special-bg-color: #{dracula.$alucard-highlight};\n\n // List steps\n --md-steps-bg-color: var(--md-code-bg-color);\n --md-steps-fg-color: var(--md-code-fg-color);\n --md-steps-border-color: hsla(0, 0%, 75%, 1);\n\n // Various Material related color variables\n --md-typeset-a-color: #{material_color.$clr-cyan-500};\n\n // Progressbar colors\n --md-progress-stripe: var(--md-default-bg-color--lighter);\n --md-progress-100: #{material_color.$clr-green-a400};\n --md-progress-80: #{material_color.$clr-green-a400};\n --md-progress-60: #{material_color.$clr-yellow-700};\n --md-progress-40: #{material_color.$clr-orange-a400};\n --md-progress-20: #{material_color.$clr-red-a200};\n --md-progress-0: #{material_color.$clr-red-a400};\n\n // Keys colors\n --md-typeset-kbd-color: #{color_tools.shade(hsla(0, 100%, 100%, 1), 8%)};\n --md-typeset-kbd-border-color: #{color_tools.shade(hsla(0, 100%, 100%, 1), 28%)};\n --md-typeset-kbd-accent-color: hsla(0, 100%, 100%, 1);\n\n // Dark mode color changes\n &[data-md-color-scheme=\"slate\"] {\n // Default color shades\n --md-default-fg-color: #{color.adjust(dracula.$drac-fg, $alpha: -0.13)};\n --md-default-fg-color--light: #{color.adjust(dracula.$drac-fg, $alpha: -0.46)};\n --md-default-fg-color--lighter: #{color.adjust(dracula.$drac-fg, $alpha: -0.64)};\n --md-default-fg-color--lightest: #{color.adjust(dracula.$drac-fg, $alpha: -0.88)};\n --md-default-autocomplete-fg-color: #{color.adjust(dracula.$drac-fg, $alpha: -0.60)};\n --md-shadow-z2: 0 #{convert.px2rem(4px)} #{convert.px2rem(10px)} hsla(0, 0%, 0%, 0.3),\n 0 0 #{convert.px2rem(1px)} hsla(0, 0%, 0%, 0.2);\n\n --md-footer-fg-color: var(--md-default-fg-color);\n\n --md-default-bg-color: var(--md-default-bg-color--darkest);\n --md-default-bg-color--light: #{color.adjust(color.mix(color(srgb 0 0 0), dracula.$drac-bg, 25%, $method: oklab), $alpha: -0.3)};\n --md-default-bg-color--lighter: #{color.adjust(color.mix(color(srgb 0 0 0), dracula.$drac-bg, 25%, $method: oklab), $alpha: -0.6)};\n --md-default-bg-color--lightest: #{color.adjust(color.mix(color(srgb 0 0 0), dracula.$drac-bg, 25%, $method: oklab), $alpha: -0.9)};\n --md-default-bg-color--trans: #{color.adjust(color.mix(color(srgb 0 0 0), dracula.$drac-bg, 25%, $method: oklab), $alpha: -1)};\n\n --md-tab-control-bg: var(--md-default-bg-color--dark);\n\n // Dark specific colors\n --md-default-bg-color--dark: #{color.mix(color(srgb 0 0 0), dracula.$drac-bg, 5%, $method: oklab)};\n --md-default-bg-color--darker: #{color.mix(color(srgb 0 0 0), dracula.$drac-bg, 10%, $method: oklab)};\n --md-default-bg-color--darkest: #{color.mix(color(srgb 0 0 0), dracula.$drac-bg, 25%, $method: oklab)};\n\n // General text\n --md-text-color: var(--md-default-fg-color);\n --md-typeset-color: var(--md-default-fg-color);\n\n // Admonition colors\n --md-admonition-fg-color: var(--md-default-fg-color);\n\n // Code colors\n --md-code-fg-color: #{dracula.$drac-fg};\n --md-code-bg-color: #{dracula.$drac-bg};\n --md-code-title-bg-color: #{dracula.$drac-bg};\n --md-code-inline-bg-color: #{dracula.$drac-bg};\n --md-code-hl-operator-color: #{dracula.$drac-pink};\n --md-code-hl-punctuation-color: #{dracula.$drac-fg};\n --md-code-hl-string-color: #{dracula.$drac-yellow};\n --md-code-hl-special-color: #{dracula.$drac-purple};\n --md-code-hl-number-color: #{dracula.$drac-purple};\n --md-code-hl-keyword-color: #{dracula.$drac-pink};\n --md-code-hl-name-color: #{dracula.$drac-fg};\n --md-code-hl-constant-color: #{dracula.$drac-purple};\n --md-code-hl-function-color: #{dracula.$drac-green};\n --md-code-hl-comment-color: #{dracula.$drac-comment};\n --md-code-hl-variable-color: #{dracula.$drac-orange};\n --md-code-hl-generic-color: #{dracula.$drac-comment};\n --md-code-hl-color: #{dracula.$drac-selection};\n --md-code-hl-color--light: #{dracula.$drac-highlight};\n --md-code-bg-color--light: #{color.change(dracula.$drac-bg, $alpha: 0.9)};\n --md-code-bg-color--lighter: #{color.change(dracula.$drac-bg, $alpha: 0.5)};\n\n // Custom code colors\n --md-code-hl-entity-color: #{dracula.$drac-green};\n --md-code-hl-tag-color: #{dracula.$drac-pink};\n --md-code-hl-namespace-color: #{dracula.$drac-fg};\n --md-code-hl-builtin-color: #{dracula.$drac-cyan};\n --md-code-hl-class-color: #{dracula.$drac-cyan};\n\n --md-code-special-bg-color: #{dracula.$drac-highlight};\n\n // List steps\n --md-steps-border-color: #{color.adjust(dracula.$drac-bg, $lightness: 10%, $space: oklab)};\n\n // Various Material related color variables\n --md-typeset-a-color: #{dracula.$drac-cyan};\n --md-typeset-mark-color: #{color.mix(dracula.$drac-yellow, dracula.$drac-bg, 35%, $method: oklab)};\n --md-typeset-del-color: #{color.mix(dracula.$drac-pink, dracula.$drac-bg, 35%, $method: oklab)};\n --md-typeset-ins-color: #{color.mix(dracula.$drac-green, dracula.$drac-bg, 35%, $method: oklab)};\n\n // Progressbar colors\n --md-progress-stripe: var(--md-default-bg-color--lightest);\n\n --md-progress-100: #{dracula.$drac-green};\n --md-progress-80: #{color.mix(dracula.$drac-green, dracula.$drac-yellow, $method: oklab)};\n --md-progress-60: #{dracula.$drac-yellow};\n --md-progress-40: #{dracula.$drac-orange};\n --md-progress-20: #{dracula.$drac-pink};\n --md-progress-0: #{dracula.$drac-red};\n\n // Keys colors\n --md-typeset-kbd-color: var(--md-default-fg-color--lightest);\n --md-typeset-kbd-border-color: var(--md-default-bg-color--dark);\n --md-typeset-kbd-accent-color: var(--md-default-fg-color--lighter);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Rules: primary colors\n// ----------------------------------------------------------------------------\n\n@each $name, $colors in (\n \"red\": dracula.$drac-red color.adjust(dracula.$drac-red, $lightness: 5%) color.adjust(dracula.$drac-red, $lightness: -5%),\n \"pink\": dracula.$drac-pink color.adjust(dracula.$drac-pink, $lightness: 5%) color.adjust(dracula.$drac-pink, $lightness: -5%),\n \"purple\": dracula.$drac-purple color.adjust(dracula.$drac-purple, $lightness: 5%) color.adjust(dracula.$drac-purple, $lightness: -5%),\n \"deep-purple\": dracula.$drac-purple color.adjust(dracula.$drac-purple, $lightness: 5%) color.adjust(dracula.$drac-purple, $lightness: -5%),\n \"blue\": dracula.$drac-blue color.adjust(dracula.$drac-blue, $lightness: 5%) color.adjust(dracula.$drac-blue, $lightness: -5%),\n \"indigo\": dracula.$drac-blue color.adjust(dracula.$drac-blue, $lightness: 5%) color.adjust(dracula.$drac-blue, $lightness: -5%),\n \"light-blue\": dracula.$drac-blue color.adjust(dracula.$drac-blue, $lightness: 5%) color.adjust(dracula.$drac-blue, $lightness: -5%),\n \"cyan\": dracula.$drac-cyan color.adjust(dracula.$drac-cyan, $lightness: 5%) color.adjust(dracula.$drac-cyan, $lightness: -5%),\n \"teal\": dracula.$drac-cyan color.adjust(dracula.$drac-cyan, $lightness: 5%) color.adjust(dracula.$drac-cyan, $lightness: -5%),\n \"green\": dracula.$drac-green color.adjust(dracula.$drac-green, $lightness: 5%) color.adjust(dracula.$drac-green, $lightness: -5%),\n \"light-green\": dracula.$drac-green color.adjust(dracula.$drac-green, $lightness: 5%) color.adjust(dracula.$drac-green, $lightness: -5%),\n \"lime\": dracula.$drac-green color.adjust(dracula.$drac-green, $lightness: 5%) color.adjust(dracula.$drac-green, $lightness: -5%),\n \"yellow\": dracula.$drac-yellow color.adjust(dracula.$drac-yellow, $lightness: 5%) color.adjust(dracula.$drac-yellow, $lightness: -5%),\n \"amber\": dracula.$drac-yellow color.adjust(dracula.$drac-yellow, $lightness: 5%) color.adjust(dracula.$drac-yellow, $lightness: -5%),\n \"orange\": dracula.$drac-orange color.adjust(dracula.$drac-orange, $lightness: 5%) color.adjust(dracula.$drac-orange, $lightness: -5%),\n \"deep-orange\": dracula.$drac-orange color.adjust(dracula.$drac-orange, $lightness: 5%) color.adjust(dracula.$drac-orange, $lightness: -5%)\n) {\n\n // Color palette\n [data-md-color-scheme=\"slate\"][data-md-color-primary=\"#{$name}\"],\n [data-md-color-scheme=\"slate\"] :not([data-md-color-scheme])[data-md-color-primary=\"#{$name}\"]\n {\n\n --md-primary-code-bg-color: #{color.mix(dracula.$drac-bg, list.nth($colors, 1), 85%, $method: oklab)};\n --md-primary-fg-color: hsla(#{convert.hex2hsl(list.nth($colors, 1))}, 1);\n --md-primary-fg-color--transparent: hsla(#{convert.hex2hsl(list.nth($colors, 1))}, 0.2);\n --md-primary-fg-color--light: hsla(#{convert.hex2hsl(list.nth($colors, 2))}, 1);\n --md-primary-fg-color--dark: hsla(#{convert.hex2hsl(list.nth($colors, 3))}, 1);\n --md-primary-bg-color: var(--md-default-bg-color);\n --md-primary-bg-color--light: var(--md-default-bg-color--light);\n }\n}\n\n// ----------------------------------------------------------------------------\n// Rules: accent colors\n// ----------------------------------------------------------------------------\n\n@each $name, $color in (\n \"red\": dracula.$drac-red,\n \"pink\": dracula.$drac-pink,\n \"purple\": dracula.$drac-purple,\n \"deep-purple\": dracula.$drac-purple,\n \"blue\": dracula.$drac-blue,\n \"indigo\": dracula.$drac-blue,\n \"light-blue\": dracula.$drac-blue,\n \"cyan\": dracula.$drac-cyan,\n \"teal\": dracula.$drac-cyan,\n \"green\": dracula.$drac-green,\n \"light-green\": dracula.$drac-green,\n \"lime\": dracula.$drac-green,\n \"yellow\": dracula.$drac-yellow,\n \"amber\": dracula.$drac-yellow,\n \"orange\": dracula.$drac-orange,\n \"deep-orange\": dracula.$drac-orange\n) {\n\n // Color palette\n [data-md-color-scheme=\"slate\"][data-md-color-accent=\"#{$name}\"],\n [data-md-color-scheme=\"slate\"] :not([data-md-color-scheme])[data-md-color-primary=\"#{$name}\"] {\n --md-code-link-accent-bg-color: #{color.mix($color, dracula.$drac-bg, 15%, $method: oklab)};\n --md-accent-fg-color: hsla(#{convert.hex2hsl($color)}, 1);\n --md-accent-fg-color--transparent: hsla(#{convert.hex2hsl($color)}, 0.2);\n --md-accent-bg-color: var(--md-default-bg-color);\n --md-accent-bg-color--light: var(--md-default-bg-color--light);\n }\n}\n","@use \"palette/material_color\";\n@use \"palette/dracula\";\n@use \"utilities/break\";\n@use \"utilities/convert\";\n\n/* Normal colors */\n:root {\n --md-heart: #{material_color.$clr-red-a200};\n --md-heart-big: #{material_color.$clr-red-a400};\n\n /* Dark mode colors */\n [data-md-color-scheme=\"slate\"] {\n --md-heart: #{dracula.$drac-red};\n --md-heart-big: #{dracula.$drac-pink};\n }\n}\n\n.md-typeset {\n\n a.source-link {\n position: relative;\n top: convert.px2rem(-12px);\n float: right;\n color: var(--md-default-fg-color--lighter);\n transition: color 125ms;\n\n &:hover {\n color: var(--md-accent-fg-color);\n }\n\n .twemoji {\n height: convert.px2rem(24px);\n\n svg {\n width: convert.px2rem(24px);\n height: convert.px2rem(24px);\n }\n }\n }\n\n div.highlight.md-max-height pre > code {\n max-height: convert.px2rem(300px);\n }\n}\n\n.twemoji {\n &.heart-throb, &.heart-throb-hover {\n svg {\n position: relative;\n color: var(--md-heart);\n animation: pulse 1.5s ease infinite;\n }\n }\n}\n\n@keyframes pulse {\n 0% { transform: scale(1); }\n 40% { color: var(--md-heart-big); transform: scale(1.3); }\n 50% { transform: scale(1.2); }\n 60% { color: var(--md-heart-big); transform: scale(1.3); }\n 100% { transform: scale(1); }\n}\n\nfooter.sponsorship {\n text-align: center;\n\n .twemoji {\n padding: convert.px2rem(1px);\n }\n\n a {\n text-decoration: none;\n }\n\n hr {\n display: inline-block;\n width: convert.px2rem(32px);\n margin: 0 convert.px2rem(14px);\n vertical-align: middle;\n border-bottom: 2px solid var(--md-default-fg-color--lighter);\n }\n\n &:hover {\n hr {\n border-color: var(--md-accent-fg-color);\n }\n }\n\n &:not(:hover) {\n .twemoji.heart-throb-hover svg{\n color: var(--md-default-fg-color--lighter) !important;\n }\n }\n}\n","@use \"sass:color\";\n@use \"sass:list\";\n@use \"../utilities/convert\";\n@use \"../palette/material_color\";\n@use \"../palette/dracula\";\n\n$new-admonitions: (\n settings config: dracula.$drac-pink material_color.$clr-purple-a700 \"@mdi/svg/svg/cog.svg\",\n new: dracula.$drac-yellow material_color.$clr-yellow-a700 \"@mdi/svg/svg/alert-decagram.svg\"\n) !default;\n\n$old-admonitions: (\n note: dracula.$drac-blue material_color.$clr-blue-a200,\n abstract: color.mix(dracula.$drac-blue, dracula.$drac-cyan, $method: oklab) material_color.$clr-light-blue-a400,\n info: dracula.$drac-cyan material_color.$clr-cyan-a700,\n tip: color.mix(dracula.$drac-cyan, dracula.$drac-green, $method: oklab) material_color.$clr-teal-a700,\n success: dracula.$drac-green material_color.$clr-green-a700,\n question: color.mix(dracula.$drac-green, dracula.$drac-orange, $method: oklab) material_color.$clr-light-green-a700,\n warning: dracula.$drac-orange material_color.$clr-orange-a400,\n failure: color.mix(dracula.$drac-orange, dracula.$drac-red, $method: oklab) material_color.$clr-red-a200,\n danger: dracula.$drac-red material_color.$clr-red-a400,\n bug: color.mix(dracula.$drac-red, dracula.$drac-purple, $method: oklab) material_color.$clr-pink-a400,\n example: dracula.$drac-purple material_color.$clr-deep-purple-a200,\n quote: dracula.$drac-grey material_color.$clr-grey\n) !default;\n\n/* Style new admonitions with dark or light colors */\n:root > * {\n --md-admonition-icon-color: #{dracula.$alucard-blue};\n --md-admonition-bg-color: #{color.adjust(dracula.$alucard-blue, $alpha: -0.9)};\n // --md-admonition-bg-color: #{color.mix(dracula.$alucard-blue, dracula.$alucard-bg, $weight: 12%, $method: oklab)};\n\n &[data-md-color-scheme=\"slate\"] {\n --md-admonition-icon-color: #{dracula.$drac-blue};\n --md-admonition-bg-color: #{color.adjust(dracula.$drac-blue, $alpha: -0.9)};\n }\n\n @each $names, $prop in $new-admonitions {\n $tint: list.nth($prop, 1);\n $tint2: list.nth($prop, 2);\n $name: list.nth($names, 1);\n\n & {\n --md-admonition-icon--#{$name}: svg-load(\"#{list.nth($prop, 3)}\");\n --md-admonition-bg-color--#{$name}: #{color.adjust($tint2, $alpha: -0.9)};\n --md-admonition-icon-color--#{$name}: #{$tint2};\n }\n\n &[data-md-color-scheme=\"slate\"] {\n --md-admonition-bg-color--#{$name}: #{color.adjust($tint, $alpha: -0.9)};\n --md-admonition-icon-color--#{$name}: #{$tint};\n }\n }\n\n @each $names, $prop in $old-admonitions {\n $tint: list.nth($prop, 1);\n $tint2: list.nth($prop, 2);\n $name: list.nth($names, 1);\n\n & {\n --md-admonition-bg-color--#{$name}: #{color.adjust($tint2, $alpha: -0.9)};\n --md-admonition-icon-color--#{$name}: #{$tint2};\n }\n\n &[data-md-color-scheme=\"slate\"] {\n --md-admonition-bg-color--#{$name}: #{color.adjust($tint, $alpha: -0.9)};\n --md-admonition-icon-color--#{$name}: #{$tint};\n }\n }\n}\n\n/* Dark mode changes */\n.md-typeset .admonition {\n background: var(--md-admonition-bg-color--note);\n border-width: 0;\n border-left-width: 4px;\n\n > .admonition-title {\n &::before {\n background-color: var(--md-admonition-icon-color--note);\n }\n &::after {\n color: var(--md-admonition-icon-color--note);\n }\n }\n}\n\n/* Style existing admonitions with dark mode colors */\n@each $names, $prop in $old-admonitions {\n\n $name: list.nth($names, 1);\n $tint: list.nth($prop, 1);\n\n // Define base class\n .md-typeset .admonition.#{$name} {\n background: var(--md-admonition-bg-color--#{$name});\n\n // Define base class\n > .admonition-title {\n\n // Icon\n &::before {\n background-color: var(--md-admonition-icon-color--#{$name});\n }\n &::after {\n color: var(--md-admonition-icon-color--#{$name});\n }\n }\n }\n}\n\n@each $names, $prop in $new-admonitions {\n $name: list.nth($names, 1);\n $tint: list.nth($prop, 1);\n\n // Define base class\n .md-typeset .admonition.#{$name} {\n background: var(--md-admonition-bg-color--#{$name});\n\n > .admonition-title {\n // Icon\n &::before {\n width: convert.px2rem(20px);\n height: convert.px2rem(20px);\n background-color: var(--md-admonition-icon-color--#{$name});\n background-size: convert.px2rem(20px);\n mask-image: var(--md-admonition-icon--#{$name});\n content: \"\\a0\";\n }\n &::after {\n color: var(--md-admonition-icon-color--#{$name});\n }\n }\n }\n}\n\n.admonition:has(.admonition-title:only-child) {\n padding-bottom: convert.px2em(7.68px);\n}\n","mjx-container[display=true] {\n font-size: 120% !important;\n}\n\nmjx-container:not([display]) {\n font-size: 100% !important;\n}\n\n.md-typeset .arithmatex {\n overflow-x: auto !important;\n overflow-y: hidden !important;\n}\n\n// Fix tag overlap in `KaTeX`\n.katex-display {\n .katex-html {\n display: flex !important;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: baseline;\n justify-content: space-between;\n // overflow-x: auto;\n\n .base {\n display: inline !important;\n }\n\n .tag {\n position: relative !important;\n display: inline !important;\n margin-left: var(--margin-small);\n }\n }\n}\n\n/* Instant mode in the Material theme wipes out menu CSS and MathJax has no easy way of reinserting it */\n\n/* stylelint-disable */\n.CtxtMenu_InfoClose { top:.2em; right:.2em;}\n.CtxtMenu_InfoContent { overflow:auto; text-align:left; font-size:80%; padding:.4em .6em; border:1px inset; margin:1em 0px; max-height:20em; max-width:30em; background-color:#EEEEEE; white-space:normal;}\n.CtxtMenu_Info.CtxtMenu_MousePost {outline:none;}\n.CtxtMenu_Info { position:fixed; left:50%; width:auto; text-align:center; border:3px outset; padding:1em 2em; background-color:#DDDDDD; color:black; cursor:default; font-family:message-box; font-size:120%; font-style:normal; text-indent:0; text-transform:none; line-height:normal; letter-spacing:normal; word-spacing:normal; word-wrap:normal; white-space:nowrap; float:none; z-index:201; border-radius: 15px; /* Opera 10.5 and IE9 */ -webkit-border-radius:15px; /* Safari and Chrome */ -moz-border-radius:15px; /* Firefox */ -khtml-border-radius:15px; /* Konqueror */ box-shadow:0px 10px 20px #808080; /* Opera 10.5 and IE9 */ -webkit-box-shadow:0px 10px 20px #808080; /* Safari 3 & Chrome */ -moz-box-shadow:0px 10px 20px #808080; /* Forefox 3.5 */ -khtml-box-shadow:0px 10px 20px #808080; /* Konqueror */ filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color=\"gray\", Positive=\"true\"); /* IE */}\n\n.CtxtMenu_MenuClose { position:absolute; cursor:pointer; display:inline-block; border:2px solid #AAA; border-radius:18px; -webkit-border-radius: 18px; /* Safari and Chrome */ -moz-border-radius: 18px; /* Firefox */ -khtml-border-radius: 18px; /* Konqueror */ font-family: \"Courier New\", Courier; font-size:24px; color:#F0F0F0}\n.CtxtMenu_MenuClose span { display:block; background-color:#AAA; border:1.5px solid; border-radius:18px; -webkit-border-radius: 18px; /* Safari and Chrome */ -moz-border-radius: 18px; /* Firefox */ -khtml-border-radius: 18px; /* Konqueror */ line-height:0; padding:8px 0 6px /* may need to be browser-specific */}\n.CtxtMenu_MenuClose:hover { color:white!important; border:2px solid #CCC!important}\n.CtxtMenu_MenuClose:hover span { background-color:#CCC!important}\n.CtxtMenu_MenuClose:hover:focus { outline:none}\n\n.CtxtMenu_Menu { position:absolute; background-color:white; color:black; width:auto; padding:5px 0px; border:1px solid #CCCCCC; margin:0; cursor:default; font: menu; text-align:left; text-indent:0; text-transform:none; line-height:normal; letter-spacing:normal; word-spacing:normal; word-wrap:normal; white-space:nowrap; float:none; z-index:201; border-radius: 5px; /* Opera 10.5 and IE9 */ -webkit-border-radius: 5px; /* Safari and Chrome */ -moz-border-radius: 5px; /* Firefox */ -khtml-border-radius: 5px; /* Konqueror */ box-shadow:0px 10px 20px #808080; /* Opera 10.5 and IE9 */ -webkit-box-shadow:0px 10px 20px #808080; /* Safari 3 & Chrome */ -moz-box-shadow:0px 10px 20px #808080; /* Forefox 3.5 */ -khtml-box-shadow:0px 10px 20px #808080; /* Konqueror */}\n.CtxtMenu_MenuItem { padding: 1px 2em; background:transparent;}\n.CtxtMenu_MenuArrow { position:absolute; right:.5em; padding-top:.25em; color:#666666; font-family: null; font-size: .75em}\n.CtxtMenu_MenuActive .CtxtMenu_MenuArrow {color:white}\n.CtxtMenu_MenuArrow.CtxtMenu_RTL {left:.5em; right:auto}\n.CtxtMenu_MenuCheck { position:absolute; left:.7em; font-family: null}\n.CtxtMenu_MenuCheck.CtxtMenu_RTL { right:.7em; left:auto }\n.CtxtMenu_MenuRadioCheck { position:absolute; left: .7em;}\n.CtxtMenu_MenuRadioCheck.CtxtMenu_RTL { right: .7em; left:auto}\n.CtxtMenu_MenuInputBox { padding-left: 1em; right:.5em; color:#666666; font-family: null;}\n.CtxtMenu_MenuInputBox.CtxtMenu_RTL { left: .1em;}\n.CtxtMenu_MenuComboBox { left:.1em; padding-bottom:.5em;}\n.CtxtMenu_MenuSlider { left: .1em;}\n.CtxtMenu_SliderValue { position:absolute; right:.1em; padding-top:.25em; color:#333333; font-size: .75em}\n.CtxtMenu_SliderBar { outline: none; background: #d3d3d3}\n.CtxtMenu_MenuLabel { padding: 1px 2em 3px 1.33em; font-style:italic}\n.CtxtMenu_MenuRule { border-top: 1px solid #DDDDDD; margin: 4px 3px;}\n.CtxtMenu_MenuDisabled { color:GrayText}\n.CtxtMenu_MenuActive { background-color: #606872; color: white;}\n.CtxtMenu_MenuDisabled:focus { background-color: #E8E8E8}\n.CtxtMenu_MenuLabel:focus { background-color: #E8E8E8}\n.CtxtMenu_ContextMenu:focus { outline:none}\n.CtxtMenu_ContextMenu .CtxtMenu_MenuItem:focus { outline:none}\n.CtxtMenu_SelectionMenu { position:relative; float:left; border-bottom: none; -webkit-box-shadow:none; -webkit-border-radius:0px; }\n.CtxtMenu_SelectionItem { padding-right: 1em;}\n.CtxtMenu_Selection { right: 40%; width:50%; }\n.CtxtMenu_SelectionBox { padding: 0em; max-height:20em; max-width: none; background-color:#FFFFFF;}\n.CtxtMenu_SelectionDivider { clear: both; border-top: 2px solid #000000;}\n.CtxtMenu_Menu .CtxtMenu_MenuClose { top:-10px; left:-10px}\n\n[data-md-color-scheme=\"slate\"] {\n .CtxtMenu_InfoSignature input,\n .CtxtMenu_InfoContent pre {\n color: rgb(0, 0, 0);\n }\n .CtxtMenu_Info,\n .CtxtMenu_Menu {\n box-shadow: 0px 10px 20px rgb(0 0 0 / 0.5);\n }\n}\n/* stylelint-enable */\n","@use \"../utilities/convert\";\n\n/* Don't use box shadows */\n.md-typeset {\n del,\n ins,\n mark {\n &.critic {\n padding: 0 convert.px2em(4px, 16px);\n color: unset;\n box-shadow: none;\n }\n }\n\n .critic.break {\n margin: 0;\n }\n}\n","@use \"./admonition\";\n\n/* Inherit admonition style */\n.md-typeset {\n details {\n @extend .admonition;\n\n overflow: hidden;\n\n // Title\n > summary {\n @extend .admonition-title;\n\n // Disable accessibility focus\n &:focus {\n outline-style: none;\n }\n }\n }\n}\n","@use \"../utilities/break\";\n@use \"../utilities/convert\";\n\n:root > * {\n --highlight-svg-console: svg-load(\"@mdi/svg/svg/console.svg\");\n --highlight-svg-arrow-expand: svg-load(\"@mdi/svg/svg/arrow-expand.svg\");\n --highlight-svg-arrow-collapse: svg-load(\"@mdi/svg/svg/arrow-collapse.svg\");\n}\n\n.highlight {\n .kc { // Keyword constant\n color: var(--md-code-hl-constant-color);\n }\n\n .nc, // Name, class\n .ne, // Name, exception\n {\n color: var(--md-code-hl-class-color);\n }\n\n .mb {\n color: var(--md-code-hl-number-color);\n }\n\n .nb, // Name, builtin\n .bp { // Name, builtin pseudo\n color: var(--md-code-hl-builtin-color);\n }\n\n .nn { // Name, namespace Name, namespace Name, namespace Name, namespace\n color: var(--md-code-hl-namespace-color);\n }\n\n .na, // Name, attribute\n .nd, // Name, decorator\n .ni { // Name, entity\n color: var(--md-code-hl-entity-color);\n }\n .nl, // Name, label\n .nt { // Name, tag\n color: var(--md-code-hl-tag-color);\n }\n}\n\n.md-typeset {\n\n /* Allow code to look like code everywhere despite Material's current preference */\n *:not(pre) > code {\n margin: 0;\n padding: 0 convert.px2em( 4px, 13.6px);\n color: var(--md-code-fg-color);\n background-color: var(--md-code-inline-bg-color);\n border-radius: convert.px2rem(2px);\n box-shadow: none;\n }\n\n pre > code {\n outline: none;\n }\n\n /* Don't always like code breaking in table cells */\n td code {\n word-break: normal;\n }\n\n .highlight {\n\n /* Needed for tab preserving mode */\n tab-size: 8;\n\n /* `pymdownx-inline` mode */\n [data-linenos] {\n\n /* Special line mode coloring */\n &.special::before {\n background-color: var(--md-code-special-bg-color);\n }\n }\n }\n\n /* Special line number coloring for tables */\n .highlighttable {\n .linenodiv {\n .special {\n margin-right: convert.px2em(-8px, 13.6px);\n margin-left: convert.px2em(-16px, 13.6px);\n padding-right: convert.px2em(8px, 13.6px);\n padding-left: convert.px2em(16px, 13.6px);\n background-color: var(--md-code-special-bg-color);\n }\n }\n }\n\n // Filename span\n .highlight span.filename {\n\n // Style the filename banner\n position: relative;\n display: block;\n margin-top: 1em;\n padding: convert.px2em(8px) convert.px2em(16px, 13.6px) convert.px2em(8px) convert.px2em(40px, 13.6px);\n font-weight: 700;\n font-size: convert.px2rem(13.6px);\n background-color: var(--md-code-title-bg-color);\n border-top-left-radius: convert.px2rem(9.6px);\n border-top-right-radius: convert.px2rem(9.6px);\n\n // Adjust margins and and general container look of code block\n + pre {\n margin-top: 0;\n\n code {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n }\n\n // Add code icon\n &::before {\n position: absolute;\n left: convert.px2em(12px, 13.6px);\n width: convert.px2em(20px, 13.6px);\n height: convert.px2em(20px, 13.6px);\n background-color: var(--md-default-fg-color);\n mask-image: var(--highlight-svg-console);\n mask-repeat: no-repeat;\n mask-size: contain;\n content: \"\";\n }\n }\n\n .collapse-code {\n position: relative;\n margin-top: 1em;\n margin-bottom: 1em;\n\n pre {\n margin-top: 0;\n margin-bottom: 0;\n }\n\n input{\n display: none;\n\n ~ .code-footer {\n width: 100%;\n margin: 0;\n padding: convert.px2em(4px) convert.px2em(8px) convert.px2em(4px) convert.px2em(0px);\n\n label {\n position: relative;\n margin: 0.05em;\n padding: 0.15em 0.8em;\n color: var(--md-primary-bg-color);\n font-size: 90%;\n background-color: var(--md-accent-fg-color);\n mask-repeat: no-repeat;\n mask-size: contain;\n border-radius: convert.px2rem(2px);\n cursor: pointer;\n content: \"\";\n\n &:hover {\n background-color: var(--md-accent-fg-color);\n }\n\n &::before {\n position: absolute;\n top: 0.15em;\n left: 0.15em;\n display: block;\n box-sizing: border-box;\n width: 1.25em;\n height: 1.25em;\n background-color: var(--md-primary-bg-color);\n background-size: 1.25em;\n content: \"\";\n }\n\n &.expand {\n display: none;\n\n &::before {\n mask-image: var(--highlight-svg-arrow-expand);\n }\n }\n &.collapse::before {\n mask-image: var(--highlight-svg-arrow-collapse);\n }\n }\n }\n\n &:checked {\n ~ .code-footer label.expand {\n display: inline;\n }\n\n ~ .code-footer label.collapse {\n display: none;\n }\n\n + div.highlight code {\n max-height: convert.px2em(150px);\n overflow: hidden;\n }\n\n ~ .code-footer {\n position: relative;\n bottom: 4.3em;\n left: 0;\n margin-bottom: -4.3em;\n padding: convert.px2em(32px) convert.px2em(8px) convert.px2em(8px) convert.px2rem(16px);\n background-image: linear-gradient(to bottom,\n transparent,\n var(--md-default-bg-color) 80%\n 100%);\n border-bottom-right-radius: convert.px2rem(9.6px);\n border-bottom-left-radius: convert.px2rem(9.6px);\n }\n }\n }\n }\n\n @include break.break-to-device(mobile) {\n\n > {\n diagram-div {\n margin-right: convert.px2rem(-16px);\n margin-left: convert.px2rem(-16px);\n }\n .collapse-code {\n margin-right: convert.px2rem(-16px);\n margin-left: convert.px2rem(-16px);\n\n label.collapse {\n left: convert.px2rem(16px);\n }\n }\n }\n }\n}\n","@use \"../utilities/convert\";\n\n.md-typeset {\n\n // Keyboard key\n .keys {\n\n // Define keyboard keys with left icon\n @each $name, $code in (\n // Extra Keys\n \"power\": \"\\23FB\",\n \"fingerprint\": \"\\261D\",\n ) {\n .key-#{$name}::before {\n padding-right: convert.px2em(6.4px);\n content: $code;\n }\n }\n\n // Define keyboard keys with right icon\n @each $name, $code in (\n // Extra Keys\n ) {\n .key-#{$name}::after {\n padding-left: convert.px2em(6.4px);\n content: $code;\n }\n }\n }\n}\n","@use \"../utilities/convert\";\n\n// General styling for repository link icons\n:root > * {\n --magiclink-email-icon: svg-load(\"@mdi/svg/svg/mail.svg\");\n --magiclink-github-icon: svg-load(\"@mdi/svg/svg/github.svg\");\n --magiclink-bitbucket-icon: svg-load(\"@mdi/svg/svg/bitbucket.svg\");\n --magiclink-gitlab-icon: svg-load(\"@mdi/svg/svg/gitlab.svg\");\n --magiclink-commit-icon: svg-load(\"@primer/octicons/build/svg/git-commit-24.svg\");\n --magiclink-compare-icon: svg-load(\"@primer/octicons/build/svg/file-diff-24.svg\");\n --magiclink-pull-icon: svg-load(\"@primer/octicons/build/svg/git-pull-request-24.svg\");\n --magiclink-issue-icon: svg-load(\"@primer/octicons/build/svg/issue-opened-24.svg\");\n --magiclink-discussion-icon: svg-load(\"@primer/octicons/build/svg/comment-discussion-24.svg\");\n}\n\n.md-typeset {\n a[href^=\"mailto:\"]:not(.magiclink-ignore)::before {\n mask-image: var(--magiclink-email-icon);\n }\n\n .magiclink-repository,\n .magiclink-compare,\n .magiclink-commit,\n .magiclink-pull,\n .magiclink-issue,\n .magiclink-discussion,\n a[href^=\"mailto:\"] {\n &:not(.magiclink-ignore) {\n position: relative;\n padding-left: convert.px2em(22px);\n\n &::before {\n position: absolute;\n top: 0;\n left: 0;\n display: block;\n box-sizing: border-box;\n width: convert.px2em(20px);\n height: convert.px2em(20px);\n background-color: var(--md-typeset-a-color);\n background-size: convert.px2em(20px);\n transition: background-color 125ms;\n mask-repeat: no-repeat;\n mask-size: contain;\n content: \"\";\n }\n\n &:hover::before {\n background-color: var(--md-accent-fg-color);\n }\n }\n }\n}\n\n// Assign icons to repository links\n@each $name, $icon in (\n \"commit\": \"commit\",\n \"compare\": \"compare\",\n \"pull\": \"pull\",\n \"issue\": \"issue\",\n \"discussion\": \"discussion\"\n) {\n .md-typeset {\n .magiclink-#{$name}:not(.magiclink-ignore) {\n &::before {\n mask-image: var(--magiclink-#{$icon}-icon);\n }\n }\n }\n}\n\n// Assign icons to repository links\n@each $name, $icon in (\n \"github\": \"github\",\n \"gitlab\": \"gitlab\",\n \"bitbucket\": \"bitbucket\"\n) {\n .md-typeset {\n .magiclink-repository.magiclink-#{$name}:not(.magiclink-ignore) {\n &::before {\n mask-image: var(--magiclink-#{$icon}-icon);\n }\n }\n }\n}\n","/* Shadow boxes sometimes give issues, so just pad. */\n.md-typeset mark:not(.critic) {\n box-shadow: none;\n}\n","@use \"../palette/material_color\";\n@use \"../utilities/convert\";\n\n.md-typeset {\n\n /* Progress Bars */\n .progress-label {\n position: absolute;\n width: 100%;\n margin: 0;\n color: var(--md-text-color);\n font-weight: 700;\n line-height: convert.px2rem(28px);\n white-space: nowrap;\n text-align: center;\n text-shadow:\n convert.px2em(-1px) convert.px2em(-1px) convert.px2em(6px) var(--md-default-bg-color--light),\n convert.px2em(1px) convert.px2em(-1px) convert.px2em(6px) var(--md-default-bg-color--light),\n convert.px2em(-1px) convert.px2em(1px) convert.px2em(6px) var(--md-default-bg-color--light),\n convert.px2em(1px) convert.px2em(1px) convert.px2em(6px) var(--md-default-bg-color--light);\n }\n\n .progress-bar {\n float: left;\n height: convert.px2rem(24px);\n background-color: material_color.$clr-blue-a400;\n }\n\n /* Stripe animation */\n .candystripe-animate {\n .progress-bar{\n animation: animate-stripes 3s linear infinite;\n }\n }\n\n .progress {\n position: relative;\n display: block;\n width: 100%;\n height: convert.px2rem(24px);\n margin: convert.px2rem(10px) 0;\n background-color: var(--md-default-fg-color--lightest);\n\n &.thin {\n height: convert.px2rem(8px);\n margin-top: convert.px2rem(18px);\n\n .progress-label {\n margin-top: convert.px2rem(-8px);\n }\n\n .progress-bar {\n height: convert.px2rem(8px);\n }\n }\n\n &.candystripe .progress-bar {\n background-image:\n linear-gradient(\n 135deg,\n var(--md-progress-stripe) 27%,\n transparent 27%,\n transparent 52%,\n var(--md-progress-stripe) 52%,\n var(--md-progress-stripe) 77%,\n transparent 77%,\n transparent\n );\n background-size: convert.px2rem(40px) convert.px2rem(40px);\n }\n }\n\n @each $percent, $color in (\n \"100\": var(--md-progress-100),\n \"80\": var(--md-progress-80),\n \"60\": var(--md-progress-60),\n \"40\": var(--md-progress-40),\n \"20\": var(--md-progress-20),\n \"0\": var(--md-progress-0)\n ) {\n .progress-#{$percent}plus {\n .progress-bar {\n background-color: $color;\n }\n }\n }\n\n @keyframes animate-stripes {\n 0% {\n background-position: 0 0;\n }\n\n 100% {\n background-position: convert.px2rem(120px) 0;\n }\n }\n}\n","// Material Colors\n// https://materialui.co/colors\n\n$clr-red: #f44336;\n$clr-red-50: #ffebee;\n$clr-red-100: #ffcdd2;\n$clr-red-200: #ef9a9a;\n$clr-red-300: #e57373;\n$clr-red-400: #ef5350;\n$clr-red-500: #f44336;\n$clr-red-600: #e53935;\n$clr-red-700: #d32f2f;\n$clr-red-800: #c62828;\n$clr-red-900: #b71c1c;\n$clr-red-a100: #ff8a80;\n$clr-red-a200: #ff5252;\n$clr-red-a400: #ff1744;\n$clr-red-a700: #d50000;\n\n$clr-pink: #e91e63;\n$clr-pink-50: #fce4ec;\n$clr-pink-100: #f8bbd0;\n$clr-pink-200: #f48fb1;\n$clr-pink-300: #f06292;\n$clr-pink-400: #ec407a;\n$clr-pink-500: #e91e63;\n$clr-pink-600: #d81b60;\n$clr-pink-700: #c2185b;\n$clr-pink-800: #ad1457;\n$clr-pink-900: #880e4f;\n$clr-pink-a100: #ff80ab;\n$clr-pink-a200: #ff4081;\n$clr-pink-a400: #f50057;\n$clr-pink-a700: #c51162;\n\n$clr-purple: #9c27b0;\n$clr-purple-50: #f3e5f5;\n$clr-purple-100: #e1bee7;\n$clr-purple-200: #ce93d8;\n$clr-purple-300: #ba68c8;\n$clr-purple-400: #ab47bc;\n$clr-purple-500: #9c27b0;\n$clr-purple-600: #8e24aa;\n$clr-purple-700: #7b1fa2;\n$clr-purple-800: #6a1b9a;\n$clr-purple-900: #4a148c;\n$clr-purple-a100: #ea80fc;\n$clr-purple-a200: #e040fb;\n$clr-purple-a400: #d500f9;\n$clr-purple-a700: #aa00ff;\n\n$clr-deep-purple: #673ab7;\n$clr-deep-purple-50: #ede7f6;\n$clr-deep-purple-100: #d1c4e9;\n$clr-deep-purple-200: #b39ddb;\n$clr-deep-purple-300: #9575cd;\n$clr-deep-purple-400: #7e57c2;\n$clr-deep-purple-500: #673ab7;\n$clr-deep-purple-600: #5e35b1;\n$clr-deep-purple-700: #512da8;\n$clr-deep-purple-800: #4527a0;\n$clr-deep-purple-900: #311b92;\n$clr-deep-purple-a100: #b388ff;\n$clr-deep-purple-a200: #7c4dff;\n$clr-deep-purple-a400: #651fff;\n$clr-deep-purple-a700: #6200ea;\n\n$clr-indigo: #3f51b5;\n$clr-indigo-50: #e8eaf6;\n$clr-indigo-100: #c5cae9;\n$clr-indigo-200: #9fa8da;\n$clr-indigo-300: #7986cb;\n$clr-indigo-400: #5c6bc0;\n$clr-indigo-500: #3f51b5;\n$clr-indigo-600: #3949ab;\n$clr-indigo-700: #303f9f;\n$clr-indigo-800: #283593;\n$clr-indigo-900: #1a237e;\n$clr-indigo-a100: #8c9eff;\n$clr-indigo-a200: #536dfe;\n$clr-indigo-a400: #3d5afe;\n$clr-indigo-a700: #304ffe;\n\n$clr-blue: #2196f3;\n$clr-blue-50: #e3f2fd;\n$clr-blue-100: #bbdefb;\n$clr-blue-200: #90caf9;\n$clr-blue-300: #64b5f6;\n$clr-blue-400: #42a5f5;\n$clr-blue-500: #2196f3;\n$clr-blue-600: #1e88e5;\n$clr-blue-700: #1976d2;\n$clr-blue-800: #1565c0;\n$clr-blue-900: #0d47a1;\n$clr-blue-a100: #82b1ff;\n$clr-blue-a200: #448aff;\n$clr-blue-a400: #2979ff;\n$clr-blue-a700: #2962ff;\n\n$clr-light-blue: #03a9f4;\n$clr-light-blue-50: #e1f5fe;\n$clr-light-blue-100: #b3e5fc;\n$clr-light-blue-200: #81d4fa;\n$clr-light-blue-300: #4fc3f7;\n$clr-light-blue-400: #29b6f6;\n$clr-light-blue-500: #03a9f4;\n$clr-light-blue-600: #039be5;\n$clr-light-blue-700: #0288d1;\n$clr-light-blue-800: #0277bd;\n$clr-light-blue-900: #01579b;\n$clr-light-blue-a100: #80d8ff;\n$clr-light-blue-a200: #40c4ff;\n$clr-light-blue-a400: #00b0ff;\n$clr-light-blue-a700: #0091ea;\n\n$clr-cyan: #00bcd4;\n$clr-cyan-50: #e0f7fa;\n$clr-cyan-100: #b2ebf2;\n$clr-cyan-200: #80deea;\n$clr-cyan-300: #4dd0e1;\n$clr-cyan-400: #26c6da;\n$clr-cyan-500: #00bcd4;\n$clr-cyan-600: #00acc1;\n$clr-cyan-700: #0097a7;\n$clr-cyan-800: #00838f;\n$clr-cyan-900: #006064;\n$clr-cyan-a100: #84ffff;\n$clr-cyan-a200: #18ffff;\n$clr-cyan-a400: #00e5ff;\n$clr-cyan-a700: #00b8d4;\n\n$clr-teal: #009688;\n$clr-teal-50: #e0f2f1;\n$clr-teal-100: #b2dfdb;\n$clr-teal-200: #80cbc4;\n$clr-teal-300: #4db6ac;\n$clr-teal-400: #26a69a;\n$clr-teal-500: #009688;\n$clr-teal-600: #00897b;\n$clr-teal-700: #00796b;\n$clr-teal-800: #00695c;\n$clr-teal-900: #004d40;\n$clr-teal-a100: #a7ffeb;\n$clr-teal-a200: #64ffda;\n$clr-teal-a400: #1de9b6;\n$clr-teal-a700: #00bfa5;\n\n$clr-green: #4caf50;\n$clr-green-50: #e8f5e9;\n$clr-green-100: #c8e6c9;\n$clr-green-200: #a5d6a7;\n$clr-green-300: #81c784;\n$clr-green-400: #66bb6a;\n$clr-green-500: #4caf50;\n$clr-green-600: #43a047;\n$clr-green-700: #388e3c;\n$clr-green-800: #2e7d32;\n$clr-green-900: #1b5e20;\n$clr-green-a100: #b9f6ca;\n$clr-green-a200: #69f0ae;\n$clr-green-a400: #00e676;\n$clr-green-a700: #00c853;\n\n$clr-light-green: #8bc34a;\n$clr-light-green-50: #f1f8e9;\n$clr-light-green-100: #dcedc8;\n$clr-light-green-200: #c5e1a5;\n$clr-light-green-300: #aed581;\n$clr-light-green-400: #9ccc65;\n$clr-light-green-500: #8bc34a;\n$clr-light-green-600: #7cb342;\n$clr-light-green-700: #689f38;\n$clr-light-green-800: #558b2f;\n$clr-light-green-900: #33691e;\n$clr-light-green-a100: #ccff90;\n$clr-light-green-a200: #b2ff59;\n$clr-light-green-a400: #76ff03;\n$clr-light-green-a700: #64dd17;\n\n$clr-lime: #cddc39;\n$clr-lime-50: #f9fbe7;\n$clr-lime-100: #f0f4c3;\n$clr-lime-200: #e6ee9c;\n$clr-lime-300: #dce775;\n$clr-lime-400: #d4e157;\n$clr-lime-500: #cddc39;\n$clr-lime-600: #c0ca33;\n$clr-lime-700: #afb42b;\n$clr-lime-800: #9e9d24;\n$clr-lime-900: #827717;\n$clr-lime-a100: #f4ff81;\n$clr-lime-a200: #eeff41;\n$clr-lime-a400: #c6ff00;\n$clr-lime-a700: #aeea00;\n\n$clr-yellow: #ffeb3b;\n$clr-yellow-50: #fffde7;\n$clr-yellow-100: #fff9c4;\n$clr-yellow-200: #fff59d;\n$clr-yellow-300: #fff176;\n$clr-yellow-400: #ffee58;\n$clr-yellow-500: #ffeb3b;\n$clr-yellow-600: #fdd835;\n$clr-yellow-700: #fbc02d;\n$clr-yellow-800: #f9a825;\n$clr-yellow-900: #f57f17;\n$clr-yellow-a100: #ffff8d;\n$clr-yellow-a200: #ffff00;\n$clr-yellow-a400: #ffea00;\n$clr-yellow-a700: #ffd600;\n\n$clr-amber: #ffc107;\n$clr-amber-50: #fff8e1;\n$clr-amber-100: #ffecb3;\n$clr-amber-200: #ffe082;\n$clr-amber-300: #ffd54f;\n$clr-amber-400: #ffca28;\n$clr-amber-500: #ffc107;\n$clr-amber-600: #ffb300;\n$clr-amber-700: #ffa000;\n$clr-amber-800: #ff8f00;\n$clr-amber-900: #ff6f00;\n$clr-amber-a100: #ffe57f;\n$clr-amber-a200: #ffd740;\n$clr-amber-a400: #ffc400;\n$clr-amber-a700: #ffab00;\n\n$clr-orange: #ff9800;\n$clr-orange-50: #fff3e0;\n$clr-orange-100: #ffe0b2;\n$clr-orange-200: #ffcc80;\n$clr-orange-300: #ffb74d;\n$clr-orange-400: #ffa726;\n$clr-orange-500: #ff9800;\n$clr-orange-600: #fb8c00;\n$clr-orange-700: #f57c00;\n$clr-orange-800: #ef6c00;\n$clr-orange-900: #e65100;\n$clr-orange-a100: #ffd180;\n$clr-orange-a200: #ffab40;\n$clr-orange-a400: #ff9100;\n$clr-orange-a700: #ff6d00;\n\n$clr-deep-orange: #ff5722;\n$clr-deep-orange-50: #fbe9e7;\n$clr-deep-orange-100: #ffccbc;\n$clr-deep-orange-200: #ffab91;\n$clr-deep-orange-300: #ff8a65;\n$clr-deep-orange-400: #ff7043;\n$clr-deep-orange-500: #ff5722;\n$clr-deep-orange-600: #f4511e;\n$clr-deep-orange-700: #e64a19;\n$clr-deep-orange-800: #d84315;\n$clr-deep-orange-900: #bf360c;\n$clr-deep-orange-a100: #ff9e80;\n$clr-deep-orange-a200: #ff6e40;\n$clr-deep-orange-a400: #ff3d00;\n$clr-deep-orange-a700: #dd2c00;\n\n$clr-brown: #795548;\n$clr-brown-50: #efebe9;\n$clr-brown-100: #d7ccc8;\n$clr-brown-200: #bcaaa4;\n$clr-brown-300: #a1887f;\n$clr-brown-400: #8d6e63;\n$clr-brown-500: #795548;\n$clr-brown-600: #6d4c41;\n$clr-brown-700: #5d4037;\n$clr-brown-800: #4e342e;\n$clr-brown-900: #3e2723;\n\n$clr-grey: #9e9e9e;\n$clr-grey-50: #fafafa;\n$clr-grey-100: #f5f5f5;\n$clr-grey-200: #eeeeee;\n$clr-grey-300: #e0e0e0;\n$clr-grey-400: #bdbdbd;\n$clr-grey-500: #9e9e9e;\n$clr-grey-600: #757575;\n$clr-grey-700: #616161;\n$clr-grey-800: #424242;\n$clr-grey-900: #212121;\n\n$clr-blue-grey: #607d8b;\n$clr-blue-grey-50: #eceff1;\n$clr-blue-grey-100: #cfd8dc;\n$clr-blue-grey-200: #b0bec5;\n$clr-blue-grey-300: #90a4ae;\n$clr-blue-grey-400: #78909c;\n$clr-blue-grey-500: #607d8b;\n$clr-blue-grey-600: #546e7a;\n$clr-blue-grey-700: #455a64;\n$clr-blue-grey-800: #37474f;\n$clr-blue-grey-900: #263238;\n\n$clr-white: #FFFFFF;\n$clr-black: #000000;\n","@use \"../utilities/break\";\n@use \"../utilities/convert\";\n\n.md-typeset .tabbed-control button{\n &:hover {\n color: var(--md-default-bg-color);\n background: var(--md-accent-fg-color);\n }\n}\n\n.md-typeset .tabbed-control--next button {\n &:hover {\n color: var(--md-default-bg-color);\n background: var(--md-accent-fg-color);\n }\n}\n\n.js .md-typeset .tabbed-labels::before {\n background-color: var(--md-accent-fg-color);\n}\n\n/* Style code blocks to fill full tab,\n but otherwise, pad content. */\n.md-typeset {\n .tabbed-alternate {\n &.tabbed-set .tabbed-control {\n width: convert.px2rem(40px);\n\n &[hidden] {\n width: convert.px2rem(24px);\n opacity: 0;\n }\n }\n\n &.tabbed-set > .tabbed-content > .tabbed-block {\n padding: 0 convert.px2rem(12px);\n\n > {\n pre,\n .codehilite,\n .codehilitetable,\n .highlight,\n .highlighttable {\n\n &:first-child {\n margin-top: convert.px2em(15px);\n\n code {\n border-top-left-radius: convert.px2rem(9.6px);\n border-top-right-radius: convert.px2rem(9.6px);\n }\n }\n\n &:only-child {\n margin-top: 0;\n margin-right: convert.px2rem(-24px);\n margin-left: convert.px2rem(-24px);\n padding-right: convert.px2rem(12px);\n padding-left: convert.px2rem(12px);\n code {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n span.filename {\n margin-top: 0;\n }\n }\n }\n\n .collapse-code:only-child {\n margin-top: 0;\n\n margin-right: convert.px2rem(-24px);\n margin-left: convert.px2rem(-24px);\n padding-right: convert.px2rem(12px);\n padding-left: convert.px2rem(12px);\n\n pre,\n .codehilite,\n .codehilitetable,\n .highlight,\n .highlighttable {\n code {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n }\n }\n\n diagram-div:only-child {\n margin-right: convert.px2rem(-24px);\n margin-left: convert.px2rem(-24px);\n padding-right: convert.px2rem(12px);\n padding-left: convert.px2rem(12px);\n }\n }\n }\n }\n}\n\n/* Ignore mobile overflow styling that extends the tab bar */\n@include break.break-to-device(mobile) {\n [dir=ltr] .md-content__inner > .tabbed-set .tabbed-labels {\n padding-left: 0;\n }\n\n .md-content__inner > .tabbed-set .tabbed-labels {\n max-width: 100%;\n margin: 0;\n padding-inline-start: 0;\n scroll-padding-inline-start: 0;\n\n &::after {\n padding-inline-end: 0;\n content: none;\n }\n\n // Tabbed control previous\n ~ .tabbed-control--prev {\n margin-inline-start: 0;\n padding-inline-start: 0;\n }\n\n // Tabbed control next\n ~ .tabbed-control--next {\n margin-inline-end: 0;\n padding-inline-end: 0;\n }\n }\n}\n","@use \"palette/dracula\";\n\n/* Dark mode changes */\n[data-md-color-scheme=\"slate\"] {\n .md-typeset .task-list-control {\n .task-list-indicator::before {\n \tbackground-color: var(--md-default-fg-color--lighter);\n }\n\n [type=checkbox]:checked + .task-list-indicator::before {\n \tbackground-color: dracula.$drac-green;\n }\n }\n}\n","@use \"sass:color\";\n\n$drac-fg: hsl(60 30% 96.078%);\n$drac-bg: hsl(231 15% 18%);\n$drac-comment: hsl(225 27% 51%);\n$drac-highlight: hsl(231 25% 25%) ;\n$drac-selection: hsl(231 15% 30%);\n$drac-blue: hsl(225 100% 75%);\n$drac-cyan: hsl(191 97% 77%);\n$drac-green: hsl(135 94% 65%);\n$drac-orange: hsl(31 100% 71%);\n$drac-pink: hsl(326 100% 74%);\n$drac-purple: hsl(265 89% 78%);\n$drac-red: hsl(0 100% 67%);\n$drac-yellow: hsl(65 92% 76%);\n\n$drac-grey: hsl(225 8% 51%);\n\n// An approximation of the Alucard theme\n$alucard-fg: #1F1F1F;\n$alucard-bg: #F5F5F5;\n$alucard-comment: #635D97;\n$alucard-highlight: #DCDEEF;\n$alucard-selection: #CFCFDE;\n$alucard-blue: #3654c2;\n$alucard-cyan: #036A96;\n$alucard-green: #14720A;\n$alucard-orange: #A34D14;\n$alucard-pink: #A3134D;\n$alucard-purple: #644AC9;\n$alucard-red: #CB3A2A;\n$alucard-yellow: #836E15;\n","@use \"../utilities/convert\";\n\n:root > * {\n --toc-svg-link: svg-load(\"@mdi/svg/svg/link.svg\");\n}\n\n// Header anchors\n.md-typeset {\n .headerlink {\n width: convert.px2em(16px);\n height: convert.px2em(16px);\n vertical-align: middle;\n background-color: var(--md-default-fg-color--lighter);\n background-size: convert.px2em(16px);\n mask-size: convert.px2em(16px);\n mask-repeat: no-repeat;\n visibility: visible;\n mask-image: var(--toc-svg-link);\n }\n\n .headerlink:hover,\n [id]:target .headerlink {\n background-color: var(--md-accent-fg-color);\n }\n}\n","/* Special handling of Mermaid content. */\ndiagram-div {\n overflow: auto;\n}\n",".md-typeset div.steps > ol {\n counter-reset: item;\n\n > li {\n position: relative;\n padding-left: 1em;\n list-style: none;\n\n &::before {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -1;\n display: block;\n width: 1.75em;\n height: 1.75em;\n margin-left: -1.25em;\n color: var(--md-steps-fg-color);\n font-weight: 600;\n font-size: 0.9em;\n text-align: center;\n background-color: var(--md-steps-bg-color);\n border: 1px solid var(--md-steps-border-color);\n border-radius: 100px;\n content: counter(item);\n counter-increment: item;\n }\n\n &::after {\n position: absolute;\n top: 0;\n bottom: 0;\n left: -0.36em;\n display: block;\n width: 1px;\n margin-top: 2em;\n border-left: 1px solid var(--md-steps-border-color);\n content: '';\n }\n }\n}\n","@use \"../utilities/convert\";\n\n.md-typeset table:not([class]) {\n th {\n border-bottom: convert.px2rem(2px) solid var(--md-accent-fg-color);\n }\n}\n","@use \"utilities/break\";\n@use \"utilities/convert\";\n\nhtml {\n background-color: transparent;\n}\n\n[data-md-component=\"announce\"] .twemoji {\n color: var(--md-primary-fg-color);\n}\n\n.md-container .md-tabs {\n .md-tabs__item--active {\n border-bottom: convert.px2rem(2px) solid var(--md-accent-fg-color);\n }\n}\n\n// Navigation\n.md-nav--secondary {\n > ul {\n border-left: convert.px2rem(2px) solid var(--md-default-fg-color--lightest);\n }\n\n ul .md-nav__item {\n .md-nav__link--active {\n margin-left: convert.px2rem(-2px);\n padding-left: convert.px2rem(16px);\n }\n\n ul .md-nav__item {\n .md-nav__link--active {\n margin-left: convert.px2rem(-14px);\n padding-left: convert.px2rem(28px);\n }\n\n ul .md-nav__item {\n .md-nav__link--active {\n margin-left: convert.px2rem(-26px);\n padding-left: convert.px2rem(40px);\n }\n\n ul .md-nav__item {\n .md-nav__link--active {\n margin-left: convert.px2rem(-38px);\n padding-left: convert.px2rem(52px);\n }\n\n ul .md-nav__item {\n .md-nav__link--active {\n margin-left: convert.px2rem(-50px);\n padding-left: convert.px2rem(64px);\n }\n }\n }\n }\n }\n }\n\n .md-nav__item {\n color: var(--md-default-fg-color--light);\n\n .md-nav__link--active {\n color: var(--md-default-fg-color);\n border-left: convert.px2rem(2px) solid var(--md-accent-fg-color);\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .md-nav__link {\n &:focus,\n &:hover {\n color: var(--md-default-fg-color);\n }\n }\n }\n}\n\n.md-nav--primary {\n .md-nav__item {\n color: var(--md-default-fg-color--light);\n }\n}\n\n// Navigation\n.md-nav__source {\n color: var(--md-text-color);\n}\n\n.md-nav__link[data-md-state=blur] {\n color: var(--md-default-fg-color--light);\n}\n\n.md-typeset {\n\n /* Don't force capitalization of `H5` elements. */\n h5 {\n color: var(--md-text-color);\n text-transform: none;\n }\n}\n\n.md-typeset__scrollwrap,\n.md-sidebar__scrollwrap,\n.md-search__scrollwrap,\n.md-typeset pre > code,\n.md-typeset div.mermaid,\n.md-typeset div.diagram,\n.md-typeset mermaid-div,\n.md-typeset diagram-div,\n.md-typeset pre.arithmatex,\n.md-typeset div.arithmatex {\n // Firefox scrollbar and thumb\n scrollbar-color: var(--md-default-fg-color--lighter) transparent;\n scrollbar-width: thin;\n\n // Firefox hovered scrollbar and thumb\n &:hover {\n scrollbar-color: var(--md-accent-fg-color) transparent;\n }\n\n // Override native scrollbar styles\n &::-webkit-scrollbar {\n width: convert.px2rem(4px);\n height: convert.px2rem(4px);\n }\n\n &::-webkit-scrollbar-corner {\n background-color: transparent;\n }\n\n // Scrollbar thumb\n &::-webkit-scrollbar-thumb {\n background-color: var(--md-default-fg-color--lighter);\n\n // Hovered scrollbar thumb\n &:hover {\n background-color: var(--md-accent-fg-color);\n }\n }\n}\n","////\n/// Copyright (c) 2016-2020 Martin Donath \n///\n/// Permission is hereby granted, free of charge, to any person obtaining a\n/// copy of this software and associated documentation files (the \"Software\"),\n/// to deal in the Software without restriction, including without limitation\n/// the rights to use, copy, modify, merge, publish, distribute, sublicense,\n/// and/or sell copies of the Software, and to permit persons to whom the\n/// Software is furnished to do so, subject to the following conditions:\n///\n/// The above copyright notice and this permission notice shall be included in\n/// all copies or substantial portions of the Software.\n///\n/// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n/// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL\n/// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n/// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n/// DEALINGS\n////\n\n// ----------------------------------------------------------------------------\n// Variables\n// ----------------------------------------------------------------------------\n\n///\n/// Device-specific breakpoints\n///\n/// @example\n/// $break-devices: (\n/// mobile: (\n/// portrait: 220px 479px,\n/// landscape: 480px 719px\n/// ),\n/// tablet: (\n/// portrait: 720px 959px,\n/// landscape: 960px 1219px\n/// ),\n/// screen: (\n/// small: 1220px 1599px,\n/// medium: 1600px 1999px,\n/// large: 2000px\n/// )\n/// );\n///\n@use \"sass:map\";\n@use \"sass:list\";\n@use \"sass:meta\";\n@use \"./convert\";\n\n$break-devices: (\n mobile: (\n portrait: convert.px2em(220px) convert.px2em(479px),\n landscape: convert.px2em(480px) convert.px2em(719px)\n ),\n tablet: (\n portrait: convert.px2em(720px) convert.px2em(959px),\n landscape: convert.px2em(960px) convert.px2em(1219px)\n ),\n screen: (\n small: convert.px2em(1220px) convert.px2em(1599px),\n medium: convert.px2em(1600px) convert.px2em(1999px),\n large: convert.px2em(2000px)\n )\n) !default;\n\n// ----------------------------------------------------------------------------\n// Helpers\n// ----------------------------------------------------------------------------\n\n///\n/// Choose minimum and maximum device widths\n///\n@function break-select-min-max($devices) {\n $min: 1000000;\n $max: 0;\n @each $key, $value in $devices {\n @while meta.type-of($value) == map {\n $value: break-select-min-max($value);\n }\n @if meta.type-of($value) == list {\n @each $number in $value {\n @if meta.type-of($number) == number {\n $min: min($number, $min);\n @if $max != null {\n $max: max($number, $max);\n }\n } @else {\n @error \"Invalid number: #{$number}\";\n }\n }\n } @else if meta.type-of($value) == number {\n $min: min($value, $min);\n $max: null;\n } @else {\n @error \"Invalid value: #{$value}\";\n }\n }\n @return $min, $max;\n}\n\n///\n/// Select minimum and maximum widths for a device breakpoint\n///\n@function break-select-device($device) {\n $current: $break-devices;\n @for $n from 1 through list.length($device) {\n @if meta.type-of($current) == map {\n $current: map.get($current, list.nth($device, $n));\n } @else {\n @error \"Invalid device map: #{$devices}\";\n }\n }\n @if meta.type-of($current) == list or meta.type-of($current) == number {\n $current: (default: $current);\n }\n @return break-select-min-max($current);\n}\n\n// ----------------------------------------------------------------------------\n// Mixins\n// ----------------------------------------------------------------------------\n\n///\n/// A minimum-maximum media query breakpoint\n///\n@mixin break-at($breakpoint) {\n @if meta.type-of($breakpoint) == number {\n @media screen and (min-width: $breakpoint) {\n @content;\n }\n } @else if meta.type-of($breakpoint) == list {\n $min: list.nth($breakpoint, 1);\n $max: list.nth($breakpoint, 2);\n @if meta.type-of($min) == number and meta.type-of($max) == number {\n @media screen and (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// An orientation media query breakpoint\n///\n@mixin break-at-orientation($breakpoint) {\n @if meta.type-of($breakpoint) == string {\n @media screen and (orientation: $breakpoint) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// A maximum-aspect-ratio media query breakpoint\n///\n@mixin break-at-ratio($breakpoint) {\n @if meta.type-of($breakpoint) == number {\n @media screen and (max-aspect-ratio: $breakpoint) {\n @content;\n }\n } @else {\n @error \"Invalid breakpoint: #{$breakpoint}\";\n }\n}\n\n///\n/// A minimum-maximum media query device breakpoint\n///\n@mixin break-at-device($device) {\n @if meta.type-of($device) == string {\n $device: $device,;\n }\n @if meta.type-of($device) == list {\n $breakpoint: break-select-device($device);\n @if list.nth($breakpoint, 2) != null {\n $min: list.nth($breakpoint, 1);\n $max: list.nth($breakpoint, 2);\n @media screen and (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n\n///\n/// A minimum media query device breakpoint\n///\n@mixin break-from-device($device) {\n @if meta.type-of($device) == string {\n $device: $device,;\n }\n @if meta.type-of($device) == list {\n $breakpoint: break-select-device($device);\n $min: list.nth($breakpoint, 1);\n @media screen and (min-width: $min) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n\n///\n/// A maximum media query device breakpoint\n///\n@mixin break-to-device($device) {\n @if meta.type-of($device) == string {\n $device: $device,;\n }\n @if meta.type-of($device) == list {\n $breakpoint: break-select-device($device);\n $max: list.nth($breakpoint, 2);\n @media screen and (max-width: $max) {\n @content;\n }\n } @else {\n @error \"Invalid device: #{$device}\";\n }\n}\n"]}
\ No newline at end of file
diff --git a/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js b/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js
new file mode 100644
index 00000000..36a3bebb
--- /dev/null
+++ b/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js
@@ -0,0 +1,4 @@
+function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}!function(){"use strict";function t(t,e,r,o,a,n,i){try{var c=t[n](i),l=c.value}catch(t){return void r(t)}c.done?e(l):Promise.resolve(l).then(o,a)}function e(t,e,r){return e=o(e),function(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,n()?Reflect.construct(e,[],o(t).constructor):e.apply(t,r))}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},o(t)}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&l(t,e)}function n(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(n=function(){return!!t})()}function i(){
+/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
+var t,e,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.toStringTag||"@@toStringTag";function n(r,o,a,n){var i=o&&o.prototype instanceof f?o:f,d=Object.create(i.prototype);return c(d,"_invoke",function(r,o,a){var n,i,c,f=0,d=a||[],u=!1,p={p:0,n:0,v:t,a:s,f:s.bind(t,4),d:function(e,r){return n=e,i=0,c=t,p.n=r,l}};function s(r,o){for(i=r,c=o,e=0;!u&&f&&!a&&e3?(a=m===o)&&(c=n[(i=n[4])?5:(i=3,3)],n[4]=n[5]=t):n[0]<=s&&((a=r<2&&so||o>m)&&(n[4]=r,n[5]=o,p.n=m,i=0))}if(a||r>1)return l;throw u=!0,o}return function(a,d,m){if(f>1)throw TypeError("Generator is already running");for(u&&1===d&&s(d,m),i=d,c=m;(e=i<2?t:c)||!u;){n||(i?i<3?(i>1&&(p.n=-1),s(i,c)):p.n=c:p.v=c);try{if(f=2,n){if(i||(a="next"),e=n[a]){if(!(e=e.call(n,c)))throw TypeError("iterator result is not an object");if(!e.done)return e;c=e.value,i<2&&(i=0)}else 1===i&&(e=n.return)&&e.call(n),i<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),i=1);n=t}else if((e=(u=p.n<0)?c:r.call(o,p))!==l)break}catch(e){n=t,i=1,c=e}finally{f=1}}return{value:e,done:u}}}(r,a,n),!0),d}var l={};function f(){}function d(){}function u(){}e=Object.getPrototypeOf;var p=[][o]?e(e([][o]())):(c(e={},o,function(){return this}),e),s=u.prototype=f.prototype=Object.create(p);function m(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,u):(t.__proto__=u,c(t,a,"GeneratorFunction")),t.prototype=Object.create(s),t}return d.prototype=u,c(s,"constructor",u),c(u,"constructor",d),d.displayName="GeneratorFunction",c(u,a,"GeneratorFunction"),c(s),c(s,a,"Generator"),c(s,o,function(){return this}),c(s,"toString",function(){return"[object Generator]"}),(i=function(){return{w:n,m:m}})()}function c(t,e,r,o){var a=Object.defineProperty;try{a({},"",{})}catch(t){a=0}c=function(t,e,r,o){function n(e,r){c(t,e,function(t){return this._invoke(e,r,t)})}e?a?a(t,e,{value:r,enumerable:!o,configurable:!o,writable:!o}):t[e]=r:(n("next",0),n("throw",1),n("return",2))},c(t,e,r,o)}function l(t,e){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},l(t,e)}function f(t){var e="function"==typeof Map?new Map:void 0;return f=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return function(t,e,r){if(n())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,e);var a=new(t.bind.apply(t,o));return r&&l(a,r.prototype),a}(t,arguments,o(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),l(r,t)},f(t)}var d,u,p,s=function(){var o,n=(o=i().m(function t(o){var n,c,l,d,u,p,s,m,g,h,b,y,v,x,k,O;return i().w(function(t){for(;;)switch(t.p=t.n){case 0:n=function(t){function o(){var t;r(this,o);var a=(t=e(this,o)).attachShadow({mode:"open"}),n=document.createElement("style");return n.textContent="\n :host {\n display: block;\n line-height: initial;\n font-size: 16px;\n }\n div.diagram {\n margin: 0;\n overflow: visible;\n }",a.appendChild(n),t}return a(o,t),n=o,Object.defineProperty(n,"prototype",{writable:!1}),n;var n}(f(HTMLElement)),void 0===customElements.get("diagram-div")&&customElements.define("diagram-div",n),c=function(t){for(var e="",r=0;r .label text { fill: var(--drac-purple-fg); } .edgeLabel text { fill: var(--drac-purple-fg) !important; } .edgeLabel rect { opacity: 0.75 !important; fill: var(--drac-purple-bg) !important; } .grey rect.label-container { fill: var(--drac-purple-bg) !important; stroke: var(--drac-purple-fg) !important; } /* Sequence */ line[id^='actor'] { stroke: var(--drac-blue-fg); } .noteText { fill: var(--drac-yellow-fg); } /* Gantt */ .sectionTitle { fill: var(--drac-purple-fg) !important; } .grid .tick line { stroke: var(--drac-blue-fg) !important; } .grid .tick text { fill: var(--drac-purple-fg); } /* Class Diagram */ .statediagram-state rect.divider { fill: transparent !important; } /* State Diagram */ .stateGroup circle[style$=\"fill: black;\"] { fill: var(--drac-purple-bg) !important; stroke: var(--drac-purple-bg) !important; } .stateGroup circle[style$=\"fill: white;\"] { fill: var(--drac-purple-bg) !important; stroke: var(--drac-purple-fg) !important; } .stateGroup .composit { fill: var(--drac-page-bg); } /* Pie */ text.slice { fill: var(--drac-white-fg) !important; } /* Git Graph */ .commit-bullets .commit-reverse, .commit-bullets .commit-merge, .commit-bullets .commit-highlight-inner { fill: var(--drac-page-bg) !important; stroke: var(--drac-page-bg) !important; } ",themeVariables:{darkMode:!0,background:"#323443",mainBkg:"#604b7d",textColor:"#bf95f9",lineColor:"#bf95f9",errorBkgColor:"#802c2c",errorTextColor:"#ff5757",primaryColor:"#604b7d",primaryTextColor:"#bf95f9",primaryBorderColor:"#bf95f9",secondaryColor:"#297d3e",secondaryTextColor:"#52fa7c",secondaryBorderColor:"#52fa7c",tertiaryColor:"#303952",tertiaryTextColor:"#6071a4",tertiaryBorderColor:"#6071a4",noteBkgColor:"#797d45",noteTextColor:"#f1fa89",noteBorderColor:"#f1fa89",edgeLabelBackground:"#604b7d",edgeLabelText:"#604b7d",actorLineColor:"#6071a4",activeTaskBkgColor:"#803d63",activeTaskBorderColor:"#ff7ac6",doneTaskBkgColor:"#297d3e",doneTaskBorderColor:"#52fa7c",critBkgColor:"#802c2c",critBorderColor:"#ff5757",taskTextColor:"#bf95f9",taskTextOutsideColor:"#bf95f9",taskTextLightColor:"#bf95f9",sectionBkgColor:"#bf95f9b3",sectionBkgColor2:"#bf95f966",altSectionBkgColor:"#323443",todayLineColor:"#ff7ac6",gridColor:"#6071a4",defaultLinkColor:"#8be8fd",altBackground:"#bf95f9",classText:"#bf95f9",fillType0:"#406080",fillType1:"#46747f",fillType2:"#297d3e",fillType3:"#805c36",fillType4:"#803d63",fillType5:"#604b7d",fillType6:"#802c2c",fillType7:"#797d45",fillType8:"#7c7c79",git0:"#ff5555",git1:"#ffb86c",git2:"#f1fa8c",git3:"#50fa7b",git4:"#8be9fd",git5:"#809fff",git6:"#ff79c6",git7:"#bd93f9",gitInv0:"#ff5555",gitInv1:"#ffb86c",gitInv2:"#f1fa8c",gitInv3:"#50fa7b",gitInv4:"#8be9fd",gitInv5:"#809fff",gitInv6:"#ff79c6",gitInv7:"#bd93f9",gitBranchLabel0:"#323443",gitBranchLabel1:"#323443",gitBranchLabel2:"#323443",gitBranchLabel3:"#323443",gitBranchLabel4:"#323443",gitBranchLabel5:"#323443",gitBranchLabel6:"#323443",gitBranchLabel7:"#323443",commitLabelColor:"#52fa7c",commitLabelBackground:"#297d3e"},flowchart:{useMaxWidth:!1},er:{useMaxWidth:!1},sequence:{useMaxWidth:!1,noteFontWeight:"14px",actorFontSize:"14px",messageFontSize:"16px"},journey:{useMaxWidth:!1},pie:{useMaxWidth:!1},gantt:{useMaxWidth:!1},gitGraph:{useMaxWidth:!1}},default:{startOnLoad:!1,theme:"default",flowchart:{useMaxWidth:!1},er:{useMaxWidth:!1},sequence:{useMaxWidth:!1,noteFontWeight:"14px",actorFontSize:"14px",messageFontSize:"16px"},journey:{useMaxWidth:!1},pie:{useMaxWidth:!1},gantt:{useMaxWidth:!1},gitGraph:{useMaxWidth:!1}}}),d=Promise.resolve(),u=Promise.resolve(),p=new MutationObserver(function(t){t.forEach(function(t){"attributes"===t.type&&(t.target.getAttribute("data-md-color-scheme"),"undefined"!=typeof mermaid&&s("diagram"))})}),window.document$.subscribe(function(){p.observe(document.querySelector("body"),{attributeFilter:["data-md-color-scheme"]}),"undefined"!=typeof mermaid&&(d=d.then(function(){s("diagram")}).catch(function(t){console.log("UML loading failed...".concat(t))})),"undefined"!=typeof katex?u=u.then(function(){m("arithmatex","katex")}).catch(function(t){console.log("Math loading failed...".concat(t))}):"undefined"!=typeof MathJax&&"typesetPromise"in MathJax&&(u=u.then(function(){m("arithmatex","mathjax")}).catch(function(t){console.log("Math loading failed...".concat(t))}))})}();
+//# sourceMappingURL=extra-loader-Ccztcqfq.js.map
diff --git a/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js.map b/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js.map
new file mode 100644
index 00000000..9081580a
--- /dev/null
+++ b/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"extra-loader-Ccztcqfq.js","sources":["uml.js","extra-loader.js","arithmatex.js","material-extra-3rdparty.js"],"sourcesContent":["/* Notes (as of Mermaid 8.7.0):\n * - Gantt: width is always relative to the parent, if you have a small parent, the chart will be squashed.\n * Can't help it.\n * - Journey: Suffers from the same issues that Gantt does.\n * - Pie: These charts have no default height or width. Good luck pinning them down to a reasonable size.\n * - Git: The render portion is agnostic to the size of the parent element. But padding of the SVG is relative\n * to the parent element. You will never find a happy size.\n */\n\n/**\n * Targets special code or div blocks and converts them to UML.\n * @param {string} className is the name of the class to target.\n * @return {void}\n */\nexport default async className => {\n\n // Custom element to encapsulate Mermaid content.\n class MermaidDiv extends HTMLElement {\n\n /**\n * Creates a special Mermaid div shadow DOM.\n * Works around issues of shared IDs.\n * @return {void}\n */\n constructor() {\n super()\n\n // Create the Shadow DOM and attach style\n const shadow = this.attachShadow({mode: \"open\"})\n const style = document.createElement(\"style\")\n style.textContent = `\n :host {\n display: block;\n line-height: initial;\n font-size: 16px;\n }\n div.diagram {\n margin: 0;\n overflow: visible;\n }`\n shadow.appendChild(style)\n }\n }\n\n if (typeof customElements.get(\"diagram-div\") === \"undefined\") {\n customElements.define(\"diagram-div\", MermaidDiv)\n }\n\n const getFromCode = parent => {\n // Handles text extraction.\n let text = \"\"\n for (let j = 0; j < parent.childNodes.length; j++) {\n const subEl = parent.childNodes[j]\n if (subEl.tagName.toLowerCase() === \"code\") {\n for (let k = 0; k < subEl.childNodes.length; k++) {\n const child = subEl.childNodes[k]\n const whitespace = /^\\s*$/\n if (child.nodeName === \"#text\" && !(whitespace.test(child.nodeValue))) {\n text = child.nodeValue\n break\n }\n }\n }\n }\n return text\n }\n\n // We use this to determine if we want the dark or light theme.\n // This is specific for our MkDocs Material environment.\n // You should load your configs based on your own environment's needs.\n const defaultConfig = {\n startOnLoad: false,\n theme: \"default\",\n flowchart: {\n useMaxWidth: false\n },\n er: {\n useMaxWidth: false\n },\n sequence: {\n useMaxWidth: false,\n noteFontWeight: \"14px\",\n actorFontSize: \"14px\",\n messageFontSize: \"16px\"\n }\n }\n mermaid.mermaidAPI.globalReset()\n // Non Material themes should just use \"default\"\n let scheme = null\n try {\n scheme = document.querySelector(\"[data-md-color-scheme]\").getAttribute(\"data-md-color-scheme\")\n } catch (err) {\n scheme = \"slate\"\n }\n const config = (typeof mermaidConfig === \"undefined\") ?\n defaultConfig :\n mermaidConfig[scheme] || (mermaidConfig.default || defaultConfig)\n mermaid.initialize(config)\n\n // Find all of our Mermaid sources and render them.\n const blocks = document.querySelectorAll(`pre.${className}, diagram-div`)\n const surrogate = document.querySelector(\"html body\")\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i]\n const parentEl = (block.tagName.toLowerCase() === \"diagram-div\") ?\n block.shadowRoot.querySelector(`pre.${className}`) :\n block\n\n // Create a temporary element with the typeset and size we desire.\n // Insert it at the end of our parent to render the SVG.\n const temp = document.createElement(\"div\")\n temp.style.visibility = \"hidden\"\n temp.style.display = \"display\"\n temp.style.padding = \"0\"\n temp.style.margin = \"0\"\n temp.style.lineHeight = \"initial\"\n temp.style.fontSize = \"16px\"\n surrogate.appendChild(temp)\n\n try {\n const res = await mermaid.render(`_diagram_${i}`, getFromCode(parentEl), temp)\n const content = res.svg\n const fn = res.bindFunctions\n const el = document.createElement(\"div\")\n el.className = className\n el.innerHTML = content\n if (fn) {\n fn(el)\n }\n\n // Insert the render where we want it and remove the original text source.\n // Mermaid will clean up the temporary element.\n const shadow = document.createElement(\"diagram-div\")\n shadow.shadowRoot.appendChild(el)\n block.parentNode.insertBefore(shadow, block)\n parentEl.style.display = \"none\"\n shadow.shadowRoot.appendChild(parentEl)\n if (parentEl !== block) {\n block.parentNode.removeChild(block)\n }\n } catch (err) {} // eslint-disable-line no-empty\n\n if (surrogate.contains(temp)) {\n surrogate.removeChild(temp)\n }\n }\n}\n","import uml from \"./uml\"\nimport arithmatex from \"./arithmatex\"\nimport \"./material-extra-3rdparty\"\n\n// Main function\n(() => {\n let umlPromise = Promise.resolve()\n let mathPromise = Promise.resolve()\n\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.type === \"attributes\") {\n let scheme = mutation.target.getAttribute(\"data-md-color-scheme\")\n if (!scheme) {\n scheme = \"slate\"\n }\n if (typeof mermaid !== \"undefined\") {\n uml(\"diagram\")\n }\n }\n })\n })\n\n const main = () => {\n observer.observe(document.querySelector(\"body\"), {attributeFilter: [\"data-md-color-scheme\"]})\n\n if (typeof mermaid !== \"undefined\") {\n umlPromise = umlPromise.then(() => {\n uml(\"diagram\")\n }).catch(err => {\n console.log(`UML loading failed...${err}`) // eslint-disable-line no-console\n })\n }\n\n if (typeof katex !== \"undefined\") {\n mathPromise = mathPromise.then(() => {\n arithmatex(\"arithmatex\", \"katex\")\n }).catch(err => {\n console.log(`Math loading failed...${err}`) // eslint-disable-line no-console\n })\n } else if (typeof MathJax !== \"undefined\" && 'typesetPromise' in MathJax) {\n mathPromise = mathPromise.then(() => {\n arithmatex(\"arithmatex\", \"mathjax\")\n }).catch(err => {\n console.log(`Math loading failed...${err}`) // eslint-disable-line no-console\n })\n }\n }\n\n window.document$.subscribe(main)\n})()\n","export default (className, mode) => {\n if (mode === 'katex') {\n const maths = document.querySelectorAll(`.${className}`)\n\n for (let i = 0; i < maths.length; i++) {\n const tex = maths[i].textContent || maths[i].innerText\n\n if (tex.startsWith('\\\\(') && tex.endsWith('\\\\)')) {\n katex.render(tex.slice(2, -2), maths[i], {'displayMode': false})\n } else if (tex.startsWith('\\\\[') && tex.endsWith('\\\\]')) {\n katex.render(tex.slice(2, -2), maths[i], {'displayMode': true})\n }\n }\n } else if (mode === 'mathjax') {\n if (typeof MathJax.startup.output.clearCache !== \"undefined\") {\n MathJax.startup.output.clearCache()\n }\n MathJax.typesetClear()\n MathJax.texReset()\n MathJax.typesetPromise()\n }\n}\n","// MathJax configuration\n\nif (!('mathjaxConfig' in window)) {\n window.MathJax = {\n tex: {\n inlineMath: [[\"\\\\(\", \"\\\\)\"]],\n displayMath: [[\"\\\\[\", \"\\\\]\"]],\n processEscapes: true,\n processEnvironments: true,\n tagSide: \"right\",\n tagIndent: \".8em\",\n multlineWidth: \"85%\",\n tags: \"ams\"\n },\n options: {\n ignoreHtmlClass: \".*\",\n processHtmlClass: \"arithmatex\"\n }\n }\n}\n\nif (!('mermaidConfig' in window)) {\n // Our loader looks for `mermaidConfig` and will load the the appropriate\n // configuration based on our current scheme: light, dark, etc.\n window.mermaidConfig = {\n slate: {\n startOnLoad: false,\n theme: \"base\",\n themeCSS: \"\\\n * {\\\n --drac-page-bg: hsl(233, 15%, 23%);\\\n --drac-white-fg: hsl(60, 30%, 96%);\\\n --drac-purple-fg: hsl(265, 89%, 78%);\\\n --drac-purple-bg: hsl(265, 25%, 39%);\\\n --drac-yellow-fg: hsl(65, 92%, 76%);\\\n --drac-blue-fg: hsl(225, 27%, 51%);\\\n }\\\n \\\n /* General */\\\n [id^='_diagram'] {\\\n background-color: var(--drac-page-bg);\\\n }\\\n \\\n /* Entity Relationship */\\\n rect.relationshipLabelBox {\\\n opacity: 0.75 !important;\\\n fill: var(--drac-purple-bg) !important;\\\n }\\\n defs marker#ZERO_OR_MORE_END circle {\\\n fill: var(--drac-page-bg) !important;\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ZERO_OR_MORE_END path {\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ZERO_OR_MORE_START circle{\\\n fill: var(--drac-page-bg) !important;\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ZERO_OR_MORE_START path {\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ONLY_ONE_START path {\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ONLY_ONE_END path {\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ZERO_OR_ONE_START path {\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ZERO_OR_ONE_END path {\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ONE_OR_MORE_START path {\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n defs marker#ONE_OR_MORE_END path {\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n \\\n /* Flowchart */\\\n .labelText,\\\n :not(.branchLabel) > .label text {\\\n fill: var(--drac-purple-fg);\\\n }\\\n .edgeLabel text {\\\n fill: var(--drac-purple-fg) !important;\\\n }\\\n .edgeLabel rect {\\\n opacity: 0.75 !important;\\\n fill: var(--drac-purple-bg) !important;\\\n }\\\n \\\n .grey rect.label-container { \\\n fill: var(--drac-purple-bg) !important;\\\n stroke: var(--drac-purple-fg) !important;\\\n } \\\n /* Sequence */\\\n line[id^='actor'] {\\\n stroke: var(--drac-blue-fg);\\\n }\\\n .noteText {\\\n fill: var(--drac-yellow-fg);\\\n }\\\n \\\n /* Gantt */\\\n .sectionTitle {\\\n fill: var(--drac-purple-fg) !important;\\\n }\\\n \\\n .grid .tick line {\\\n stroke: var(--drac-blue-fg) !important;\\\n }\\\n \\\n .grid .tick text {\\\n fill: var(--drac-purple-fg);\\\n }\\\n \\\n /* Class Diagram */\\\n .statediagram-state rect.divider {\\\n fill: transparent !important;\\\n }\\\n \\\n /* State Diagram */\\\n .stateGroup circle[style$=\\\"fill: black;\\\"] {\\\n fill: var(--drac-purple-bg) !important;\\\n stroke: var(--drac-purple-bg) !important;\\\n }\\\n \\\n .stateGroup circle[style$=\\\"fill: white;\\\"] {\\\n fill: var(--drac-purple-bg) !important;\\\n stroke: var(--drac-purple-fg) !important;\\\n }\\\n \\\n .stateGroup .composit {\\\n fill: var(--drac-page-bg);\\\n }\\\n /* Pie */\\\n text.slice {\\\n fill: var(--drac-white-fg) !important;\\\n }\\\n /* Git Graph */\\\n .commit-bullets .commit-reverse,\\\n .commit-bullets .commit-merge, \\\n .commit-bullets .commit-highlight-inner {\\\n fill: var(--drac-page-bg) !important;\\\n stroke: var(--drac-page-bg) !important;\\\n }\\\n \",\n themeVariables: {\n darkMode: true,\n background: \"#323443\",\n mainBkg: \"#604b7d\",\n textColor: \"#bf95f9\",\n lineColor: \"#bf95f9\",\n errorBkgColor: \"#802c2c\",\n errorTextColor: \"#ff5757\",\n primaryColor: \"#604b7d\",\n primaryTextColor: \"#bf95f9\",\n primaryBorderColor: \"#bf95f9\",\n secondaryColor: \"#297d3e\",\n secondaryTextColor: \"#52fa7c\",\n secondaryBorderColor: \"#52fa7c\",\n tertiaryColor: \"#303952\",\n tertiaryTextColor: \"#6071a4\",\n tertiaryBorderColor: \"#6071a4\",\n noteBkgColor: \"#797d45\",\n noteTextColor: \"#f1fa89\",\n noteBorderColor: \"#f1fa89\",\n edgeLabelBackground: \"#604b7d\",\n edgeLabelText: \"#604b7d\",\n\n actorLineColor: \"#6071a4\",\n\n activeTaskBkgColor: \"#803d63\",\n activeTaskBorderColor: \"#ff7ac6\",\n doneTaskBkgColor: \"#297d3e\",\n doneTaskBorderColor: \"#52fa7c\",\n critBkgColor: \"#802c2c\",\n critBorderColor: \"#ff5757\",\n taskTextColor: \"#bf95f9\",\n taskTextOutsideColor: \"#bf95f9\",\n taskTextLightColor: \"#bf95f9\",\n sectionBkgColor: \"#bf95f9b3\",\n sectionBkgColor2: \"#bf95f966\",\n altSectionBkgColor: \"#323443\",\n todayLineColor: \"#ff7ac6\",\n gridColor: \"#6071a4\",\n defaultLinkColor: \"#8be8fd\",\n\n altBackground: \"#bf95f9\",\n\n classText: \"#bf95f9\",\n\n fillType0: \"#406080\",\n fillType1: \"#46747f\",\n fillType2: \"#297d3e\",\n fillType3: \"#805c36\",\n fillType4: \"#803d63\",\n fillType5: \"#604b7d\",\n fillType6: \"#802c2c\",\n fillType7: \"#797d45\",\n fillType8: \"#7c7c79\",\n\n git0: \"#ff5555\",\n git1: \"#ffb86c\",\n git2: \"#f1fa8c\",\n git3: \"#50fa7b\",\n git4: \"#8be9fd\",\n git5: \"#809fff\",\n git6: \"#ff79c6\",\n git7: \"#bd93f9\",\n\n gitInv0: \"#ff5555\",\n gitInv1: \"#ffb86c\",\n gitInv2: \"#f1fa8c\",\n gitInv3: \"#50fa7b\",\n gitInv4: \"#8be9fd\",\n gitInv5: \"#809fff\",\n gitInv6: \"#ff79c6\",\n gitInv7: \"#bd93f9\",\n\n gitBranchLabel0: \"#323443\",\n gitBranchLabel1: \"#323443\",\n gitBranchLabel2: \"#323443\",\n gitBranchLabel3: \"#323443\",\n gitBranchLabel4: \"#323443\",\n gitBranchLabel5: \"#323443\",\n gitBranchLabel6: \"#323443\",\n gitBranchLabel7: \"#323443\",\n\n commitLabelColor: '#52fa7c',\n commitLabelBackground: '#297d3e'\n },\n flowchart: {\n useMaxWidth: false\n },\n er: {\n useMaxWidth: false\n },\n sequence: {\n useMaxWidth: false,\n // Mermaid handles Firefox a little different.\n // For some reason, it doesn't attach font sizes to the labels in Firefox.\n // If we specify the documented defaults, font sizes are written to the labels in Firefox.\n noteFontWeight: \"14px\",\n actorFontSize: \"14px\",\n messageFontSize: \"16px\"\n },\n journey: {\n useMaxWidth: false\n },\n pie: {\n useMaxWidth: false\n },\n gantt: {\n useMaxWidth: false\n },\n gitGraph: {\n useMaxWidth: false\n }\n },\n\n default: {\n startOnLoad: false,\n theme: \"default\",\n flowchart: {\n useMaxWidth: false\n },\n er: {\n useMaxWidth: false\n },\n sequence: {\n useMaxWidth: false,\n noteFontWeight: \"14px\",\n actorFontSize: \"14px\",\n messageFontSize: \"16px\"\n },\n journey: {\n useMaxWidth: false\n },\n pie: {\n useMaxWidth: false\n },\n gantt: {\n useMaxWidth: false\n },\n gitGraph: {\n useMaxWidth: false\n }\n }\n }\n}\n"],"names":["umlPromise","mathPromise","observer","uml","_ref","_regenerator","m","_callee","className","MermaidDiv","getFromCode","defaultConfig","scheme","config","blocks","surrogate","i","block","parentEl","temp","res","content","fn","el","shadow","w","_context","p","n","_HTMLElement","_this","_classCallCheck","_callSuper","this","attachShadow","mode","style","document","createElement","textContent","appendChild","_inherits","_wrapNativeSuper","HTMLElement","customElements","get","define","parent","text","j","childNodes","length","subEl","tagName","toLowerCase","k","child","nodeName","test","nodeValue","startOnLoad","theme","flowchart","useMaxWidth","er","sequence","noteFontWeight","actorFontSize","messageFontSize","mermaid","mermaidAPI","globalReset","querySelector","getAttribute","err","mermaidConfig","initialize","querySelectorAll","concat","shadowRoot","visibility","display","padding","margin","lineHeight","fontSize","render","v","svg","bindFunctions","innerHTML","parentNode","insertBefore","removeChild","contains","a","_x","apply","arguments","arithmatex","maths","tex","innerText","startsWith","endsWith","katex","slice","displayMode","MathJax","startup","output","clearCache","typesetClear","texReset","typesetPromise","window","inlineMath","displayMath","processEscapes","processEnvironments","tagSide","tagIndent","multlineWidth","tags","options","ignoreHtmlClass","processHtmlClass","slate","themeCSS","themeVariables","darkMode","background","mainBkg","textColor","lineColor","errorBkgColor","errorTextColor","primaryColor","primaryTextColor","primaryBorderColor","secondaryColor","secondaryTextColor","secondaryBorderColor","tertiaryColor","tertiaryTextColor","tertiaryBorderColor","noteBkgColor","noteTextColor","noteBorderColor","edgeLabelBackground","edgeLabelText","actorLineColor","activeTaskBkgColor","activeTaskBorderColor","doneTaskBkgColor","doneTaskBorderColor","critBkgColor","critBorderColor","taskTextColor","taskTextOutsideColor","taskTextLightColor","sectionBkgColor","sectionBkgColor2","altSectionBkgColor","todayLineColor","gridColor","defaultLinkColor","altBackground","classText","fillType0","fillType1","fillType2","fillType3","fillType4","fillType5","fillType6","fillType7","fillType8","git0","git1","git2","git3","git4","git5","git6","git7","gitInv0","gitInv1","gitInv2","gitInv3","gitInv4","gitInv5","gitInv6","gitInv7","gitBranchLabel0","gitBranchLabel1","gitBranchLabel2","gitBranchLabel3","gitBranchLabel4","gitBranchLabel5","gitBranchLabel6","gitBranchLabel7","commitLabelColor","commitLabelBackground","journey","pie","gantt","gitGraph","default","Promise","resolve","MutationObserver","mutations","forEach","mutation","type","target","document$","subscribe","observe","attributeFilter","then","console","log"],"mappings":"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"}
\ No newline at end of file
diff --git a/docs/theme/main.html b/docs/theme/main.html
new file mode 100644
index 00000000..ad250137
--- /dev/null
+++ b/docs/theme/main.html
@@ -0,0 +1,17 @@
+{% extends "base.html" %}
+
+{% block announce %}{% include "announce.html" ignore missing %}{% endblock %}
+
+{% block content %}
+ {{ super() }}
+
+{% endblock %}
diff --git a/hatch_build.py b/hatch_build.py
index a9623d9b..3e4fc028 100644
--- a/hatch_build.py
+++ b/hatch_build.py
@@ -48,6 +48,7 @@ def update(self, metadata):
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
+ "Programming Language :: Python :: 3.14",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Text Processing :: Filters",
diff --git a/pyproject.toml b/pyproject.toml
index f0b2ccde..1ee2d452 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -153,7 +153,7 @@ legacy_tox_ini = """
[tox]
skipsdist=true
envlist=
- {py39,py310,py311,py312,py313},
+ {py39,py310,py311,py312,py313,py314},
lint
[testenv]
@@ -177,10 +177,10 @@ commands=
[testenv:documents]
passenv = *
-deps=
- -r requirements/docs.txt
-commands=
- {envpython} -m mkdocs build --clean --verbose --strict
- {envpython} -m pyspelling
+deps =
+ -rrequirements/docs.txt
+commands =
+ {envbindir}/zensical build -f zensical.yml --clean --strict
+ pyspelling -j 0
{envpython} {toxinidir}/tools/gen_docs.py --verbose --test
"""
diff --git a/requirements/docs.txt b/requirements/docs.txt
index da942b50..feee4a13 100644
--- a/requirements/docs.txt
+++ b/requirements/docs.txt
@@ -1,4 +1,4 @@
-mkdocs_pymdownx_material_extras>=2.0
-mkdocs-git-revision-date-localized-plugin
-mkdocs-minify-plugin
+zensical
+markdown
+pymdown-extensions
pyspelling
diff --git a/rummage/lib/gui/controls/webview.py b/rummage/lib/gui/controls/webview.py
index ebc52ba3..c05cf4a9 100644
--- a/rummage/lib/gui/controls/webview.py
+++ b/rummage/lib/gui/controls/webview.py
@@ -232,7 +232,7 @@ def link_type(link):
link_type = OTHER_LINK
try:
- scheme, netloc, path, params, query, fragment, is_url, is_absolute, is_blank = parse_url(link)
+ scheme, _, path, _, _, _, is_url, _, is_blank = parse_url(link)
if is_url:
link_type = URL_LINK
elif is_blank:
diff --git a/rummage/lib/gui/data/docs/.dochash b/rummage/lib/gui/data/docs/.dochash
index 4512812e..87ea1925 100644
--- a/rummage/lib/gui/data/docs/.dochash
+++ b/rummage/lib/gui/data/docs/.dochash
@@ -1 +1 @@
-27006063770f8c91bfb5fdc28ad86a1a
\ No newline at end of file
+6134b8fa5d2a2cb34981261b85d47d04
\ No newline at end of file
diff --git a/rummage/lib/gui/data/docs/about/contributing.html b/rummage/lib/gui/data/docs/about/contributing.html
index 67c9caa0..4db2f45e 100644
--- a/rummage/lib/gui/data/docs/about/contributing.html
+++ b/rummage/lib/gui/data/docs/about/contributing.html
@@ -31,7 +31,7 @@
- Contributing & Support
+ Contributing & Support
Overview
Contribution from the community is encouraged and can be done in a variety of ways:
GitHub Sponsors
- PayPal
+ PayPal
Bug Reports
@@ -145,10 +145,10 @@ Documentation Improvements
with documentation is always appreciated and can be done via pull requests. There shouldn't be any need to run
validation tests if only updating documentation.
To build the documentation, you will need the necessary requirements. You can get them by running
-pip install -r requirements/docs.txt. We currently use a combination of MkDocs , the
-Material theme , and PyMdown Extensions to render the docs. You can preview
-the docs if you install these packages via the requirements file. The command for previewing the docs is
-mkdocs serve. It should be run from the root directory. You can then view the documents at localhost:8000.
+pip install -r requirements/docs.txt. We currently use [Zensical][zensical] and PyMdown Extensions
+to render the docs. You can preview the docs if you install these packages via the requirements file. The command for
+previewing the docs is zensical serve. It should be run from the root directory. You can then view the documents at
+localhost:8000.
When providing documentation updates, please generate Rummage's internal documentation via python tools/gen_docs.py.
Pull requests will currently fail if the documentation is not updated along with the requested changes.
diff --git a/rummage/lib/gui/data/docs/about/license.html b/rummage/lib/gui/data/docs/about/license.html
index 1b1ee1fe..8d8ff24f 100644
--- a/rummage/lib/gui/data/docs/about/license.html
+++ b/rummage/lib/gui/data/docs/about/license.html
@@ -26,7 +26,7 @@
License
MIT license.
-Copyright © 2013 - 2024 Isaac Muse isaacmuse@gmail.com
+Copyright © 2013 - 2025 Isaac Muse isaacmuse@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
diff --git a/rummage/lib/gui/data/docs/extras.html b/rummage/lib/gui/data/docs/extras.html
index 7d2f1fd5..b7916fb8 100644
--- a/rummage/lib/gui/data/docs/extras.html
+++ b/rummage/lib/gui/data/docs/extras.html
@@ -236,16 +236,16 @@
Ubuntu Thunar (XFCE4)
In Thunar, select Edit > Configure Custom Actions.... You will be presented with the custom actions dialog.
-
+
Simply press the button with the + to create a new entry. Fill in the inputs as shown below (or modify to your
preference):
-
+
Then select the Appearance Conditions tab and fill in the fields as shown below (or modify to your preference):
-
+
Afterwards, you should have a Rummage context menu on both files and directories in Thunar.
diff --git a/rummage/lib/gui/data/docs/preferences.html b/rummage/lib/gui/data/docs/preferences.html
index 59a1f481..c453dfa9 100644
--- a/rummage/lib/gui/data/docs/preferences.html
+++ b/rummage/lib/gui/data/docs/preferences.html
@@ -88,7 +88,7 @@ General
a window.
Language
Rummage has internal support to display dialog labels in different languages. Currently Rummage has English. Russian
- is outdated but includes a fair bit of the needed translations. See Localization to
+ is outdated but includes a fair bit of the needed translations. See Localization to
learn more about improving current translations or adding additional translations.
Updates
@@ -123,7 +123,7 @@ Search
The Regular Expression panel is where the desired regular expression engine that Rummage uses can be selected and
configured. By default, Rummage will use Re, but if the Regex module is installed in your Python installation, it can
-be selected instead. There is also the option of using Re or Regex with Backrefs (a wrapper
+be selected instead. There is also the option of using Re or Regex with Backrefs (a wrapper
that adds a couple of special escapes and features).
If using Regex, you can set it to the version of your choice. V0 tries to be completely compatible with Re patterns
with non-breaking additional features, while V1 breaks compatibility with Re and adds even more useful features.
@@ -131,15 +131,15 @@
Search
Under File/Folder Matching are a number options for file and folder matching patterns. Follow the links to learn
more about each feature:
Encoding
@@ -314,52 +314,52 @@ Import/Export Settings
i
All
-Search case-sensitive.
+Search case-sensitive.
u
All
-Use Unicode properties.
+Use Unicode properties.
s
All
-Dot matches newline.
+Dot matches newline.
f
Regex, Regex + Backrefs
-Full case-folding.
+Full case-folding.
b
Regex, Regex + Backrefs
-Best fuzzy match.
+Best fuzzy match.
e
Regex, Regex + Backrefs
-Improve fuzzy fit.
+Improve fuzzy fit.
w
Regex, Regex + Backrefs
-Unicode word breaks.
+Unicode word breaks.
r
Regex, Regex + Backrefs
-Search backwards.
+Search backwards.
p
Regex, Regex + Backrefs
-Use POSIX matching.
+Use POSIX matching.
F
Regex, Regex + Backrefs, Re + Backrefs
-Format style replacements.
+Format style replacements.
diff --git a/rummage/lib/gui/data/docs/search.html b/rummage/lib/gui/data/docs/search.html
index dbc452de..9ffb4756 100644
--- a/rummage/lib/gui/data/docs/search.html
+++ b/rummage/lib/gui/data/docs/search.html
@@ -204,11 +204,11 @@ Rummage Options
Use chain search
-Puts Rummage into "search chain" mode . When in "search chain" mode, rummage will only use saved search chains for search and replace.
+Puts Rummage into "search chain" mode . When in "search chain" mode, rummage will only use saved search chains for search and replace.
Use replace plugin
-When enabled, Rummage will use a replace plugin instead of a replace pattern in order to do more advanced replaces.
+When enabled, Rummage will use a replace plugin instead of a replace pattern in order to do more advanced replaces.
@@ -232,7 +232,7 @@ Wildcard
patterns.
File patterns are case insensitive by default, even for Linux/Unix systems. Case sensitivity can be enabled in
- Preferences .
+ Preferences .
Slashes are generally treated as normal characters, but on windows they will be normalized: / will become \\.
There is no need to explicitly use \\ in patterns on Windows, but if you do, it will be handled.
. is always matched by *, ?, [], etc. To prevent hidden files from being matched, you should uncheck the
@@ -279,7 +279,7 @@ Basic Wildcard syntax
- / !
-By default, if - is found at the start of a pattern, it will match the inverse. This can be changed to use ! instead in Preferences .
+By default, if - is found at the start of a pattern, it will match the inverse. This can be changed to use ! instead in Preferences .
\xhh
@@ -346,7 +346,7 @@ Basic Wildcard syntax
a sequence as - is also used to specify character ranges: [a-z].
Extended Match Syntax
-In Preferences , you can also enable extended match patterns. Extended match patterns allow
+
In Preferences , you can also enable extended match patterns. Extended match patterns allow
you to provide pattern lists to provide more advanced logic.
@@ -398,7 +398,7 @@ Extended Match Syntax
pattern instead of treating it as the start of an extended match pattern (!(...)).
Brace Expansion Syntax
-In Preferences , you can enables Bash style brace expansion.
+In Preferences , you can enables Bash style brace expansion.
Brace expansion is applied before anything else. When applied, a pattern will be expanded into multiple patterns. Each
pattern will then be parsed separately.
This is great for specifying complex combinations of patterns: a{b,{c,d}} → ab ac ad. For simple patterns, it may
@@ -436,7 +436,7 @@
Brace Expansion Syntax
Full Path Matching
-In Preferences , you can enable full path search for either file patterns and/or folder
+
In Preferences , you can enable full path search for either file patterns and/or folder
exclude patterns. This will allow for matching against a full path instead of the base file name. While it is referred
to as "full path", it is still relative to the provided base path.
Assuming you Provided a base folder of /My/base/path to search, and as Rummage was crawling directories, it needed to
@@ -445,28 +445,28 @@
Full Path Matching
you'd have to use pattern like */*.txt instead of *.txt.
When full path matching is enabled for a pattern, slashes are generally treated special. Slashes will not be matched in
[], *, ?, or in extended patterns like *(...). Slashes can be matched by ** if the "globstar (**)"" option
-is enabled in Preferences .
+is enabled in Preferences .
When full path matching is not enabled, wildcard patterns use base matching. That is to say, the wildcard patterns are
-applied to the base filename instead of the full path. If you enable base matching for full paths in Preferences ,
+applied to the base filename instead of the full path. If you enable base matching for full paths in Preferences ,
if a pattern has no slashes, it will perform base matching, and if there are slashes, it will perform a full path match.
This allows you to have the best of both worlds. For instance, the following pattern would match all Markdown files
under the document directory, but would exclude any file in any subdirectory under docs whose name starts with c:
docs/**/*.md|-c*. Full path is used for the docs/**/*.md pattern while base matching is used for -c*.
Full path matching can be enabled for both file the file pattern box and the folder exclude box. Each can be controlled
-separately in Preferences .
+separately in Preferences .
To learn more about full path matching with regular expression, checkout the regular expression section .
Pattern Limit
Glob style patterns, by default, allow expanding a pattern by splitting on | or expanding the pattern with brace
expansion: a{b,c} → ab ac. This can turn one pattern into many patterns. The underlying expansion code limits
-expansion to 1000 patterns. This limit can be configured in Preferences . To raise or lower
+expansion to 1000 patterns. This limit can be configured in Preferences . To raise or lower
the limit, simply set the value higher or lower. To disable the limit entirely, set it to 0.
Regular Expression
Wildcard patterns are the default for file and folder exclude patterns, but regular expression patterns can be used
-instead by selecting the Regex checkbox beside the pattern. The regular expression engine set in Preferences
-is what will be used for file patterns. It will also respect the case sensitivity setting in Preferences
+instead by selecting the Regex checkbox beside the pattern. The regular expression engine set in Preferences
+is what will be used for file patterns. It will also respect the case sensitivity setting in Preferences
for File/Folder Matching .
Full Path Matching
-In Preferences , you can enable full path search for either file patterns and/or folder
+
In Preferences , you can enable full path search for either file patterns and/or folder
exclude patterns. This will allow for matching against a full path instead of the base file name. While it is referred
to as "full path", it is still relative to the provided base path.
Assuming you Provided a base folder to search of /My/base/path, and as Rummage was crawling directories, it needed to
@@ -479,7 +479,7 @@
Backrefs
The supported back references actually vary depending on whether it is being applied to Re or Regex. For instance,
Backrefs only adds Unicode Properties to Re since Regex already has Unicode properties. To learn more about what
Backrefs adds, read the official Backrefs documentation . You can enable extended back references in the
-Preferences dialog.
+Preferences dialog.
diff --git a/rummage/lib/gui/data/docs/sitemap.html b/rummage/lib/gui/data/docs/sitemap.html
deleted file mode 100644
index dbb26b8e..00000000
--- a/rummage/lib/gui/data/docs/sitemap.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
-
-
- Rummage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Documentation Navigation
-
-
-
-
-
-
-
-