diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..4536331 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: bdc9fe5f9af8f48270429efb5837bccc +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_sources/index.md.txt b/_sources/index.md.txt new file mode 100644 index 0000000..80322af --- /dev/null +++ b/_sources/index.md.txt @@ -0,0 +1,11 @@ +# {{project}} + +```{toctree} +:maxdepth: 2 + +introduction +readme +protoplaster +report +system_report +``` diff --git a/_sources/introduction.md.txt b/_sources/introduction.md.txt new file mode 100644 index 0000000..5bc41c1 --- /dev/null +++ b/_sources/introduction.md.txt @@ -0,0 +1,8 @@ +# Introduction + +This documentation serves as an example of how individual projects documentation can look like. + +The second chapter contains information from the README file. + +The last chapter is generated from the sample ``test.yml`` file which can be found in the README. +Its purpose is to demonstrate the documentation generated to describe test procedures used in a project. diff --git a/_sources/protoplaster.md.txt b/_sources/protoplaster.md.txt new file mode 100644 index 0000000..28994a2 --- /dev/null +++ b/_sources/protoplaster.md.txt @@ -0,0 +1,62 @@ +Protoplaster tests +================== + +```{note} + This page has been autogenerated from a Protoplaster tests definition file. +``` + +To perform hardware/BSP tests and open-source [Protoplaster](https://github.com/antmicro/protoplaster) framework has been used. + +Running Protoplaster runs the tests described in the following chapters: + +I2C devices tests +----------------- + +This module provides tests dedicated to i2c devices on specific buses: + +* /dev/i2c-0: + + * detection test for *Sensor name* on address: `0x3c` + + +* /dev/i2c-0: + + * detection test for *I2C-bus multiplexer* on address: `0x70` + + + +Camera sensor tests +------------------- + +This module provides tests dedicated to V4L devices on specific video node: + +* /dev/video0: + + * try to capture frame + + * check if the camera sensor name is `vivid` + + * check if the camera sensor driver name is `vivid` + + +* /dev/video2: + + * try to capture frameand store it to `frame.raw` file + + * check if the camera sensor name is `vivid` + + * check if the camera sensor driver name is `vivid` + + + +GPIOs tests +----------- + +This module provides tests dedicated to GPIO on specific pin number + +* /sys/class/gpio/gpio20: + + * write `1` and read back to confirm + + + diff --git a/_sources/readme.md.txt b/_sources/readme.md.txt new file mode 100644 index 0000000..dffcab0 --- /dev/null +++ b/_sources/readme.md.txt @@ -0,0 +1,258 @@ +# Protoplaster + +Copyright (c) 2022-2024 [Antmicro](https://www.antmicro.com) + +An automated framework for platform testing (Hardware and BSPs). + +Currently includes tests for: + +* I2C +* GPIO +* Camera +* FPGA + +## Installation +```bash +pip install git+https://github.com/antmicro/protoplaster.git +``` + +## Usage + +``` +usage: protoplaster [-h] [-t TEST_FILE] [-g GROUP] [--list-groups] [-o OUTPUT] [--csv CSV] [--csv-columns CSV_COLUMNS] [--generate-docs] [-c CUSTOM_TESTS] + +options: + -h, --help show this help message and exit + -t TEST_FILE, --test-file TEST_FILE + Path to the test yaml description + -g GROUP, --group GROUP + Group to execute + --list-groups List possible groups to execute + -o OUTPUT, --output OUTPUT + A junit-xml style report of the tests results + --csv CSV Generate a CSV report of the tests results + --csv-columns CSV_COLUMNS + Comma-separated list of columns to be included in generated CSV + --generate-docs Generate documentation + -c CUSTOM_TESTS, --custom-tests CUSTOM_TESTS + Path to the custom tests sources + --report-output REPORT_OUTPUT + Proplaster report archive + --system-report-config SYSTEM_REPORT_CONFIG + Path to the system report yaml config file + --sudo Run as sudo +``` + +Protoplaster expects a yaml file describing tests as an input. The yaml file should have a structure specified as follows: + + +```yaml +base: # A group specifier + i2c: # A module specifier + - bus: 0 # An interface specifier + devices: # Multiple instances of devices can be defined in one module + - name: "Sensor name" + address: 0x3c # The given device parameters determine which tests will be run for the module + - bus: 0 + devices: + - name: "I2C-bus multiplexer" + address: 0x70 + camera: + - device: "/dev/video0" + camera_name: "vivid" + driver_name: "vivid" + - device: "/dev/video2" + camera_name: "vivid" + driver_name: "vivid" + save_file: "frame.raw" +additional: + gpio: + - number: 20 + value: 1 +``` + +### Groups +In the YAML file, you can define different groups of tests to run them for different use cases. +In the YAML file example, there are two groups defined: base and additional. +Protoplaster, when run without a defined group, will execute every test in each group. +When the group is specified with the parameter `-g` or `--group`, only the tests in the specified group are going to be run. +You can also list existing groups in the YAML file, simply run `protoplaster --list-groups test.yaml`. + +## Base modules parameters +Each base module requires parameters for test initialization. +These parameters describe the tests and are passed to the test class as its attributes. + +### I2C +Required parameters: + +* `bus` - i2c bus to be checked +* `name` - name of device to be detected +* `address` - address of the device to be detected on the indicated bus + +### GPIO +Required parameters: + +* `number` - GPIO pin number +* `value` - value written to that pin + +Optional parameters: + +* `gpio_name` - name of the sysfs GPIO interface after exporting + +### Cameras +Required parameters: + +* `device` - path to the camera device (eg. /dev/video0) +* `camera_name` - expected camera name +* `driver_name` - expected driver name + +Optional parameters: + +* `save_file` - a path which the tested frame is saved to (the frame is saved only if this parameter is present) + +### FPGA +Required parameters: + +* `sysfs_interface` - path to a sysfs interface for flashing the bitstream to the FPGA +* `bitstream_path` - path to a test bitstream that is going to be flashed + +## Writing additional modules +Apart from base modules available in Protoplaster, you can provide your own extended modules. +The module should contain a `test.py` file in the root path. +This file should contain a test class that is decorated with `ModuleName("")` from the `protoplaster.conf.module` package. +This decorator tells Protoplaster what the name of the module is. +With this information, Protoplaster can correctly initialize the test parameters. +The test class should contain a `name()` method. Its return value is used for the `device_name` field in CSV output. + +The description of the external module should be added to the YAML file as for other tests. +By default, external modules are expected in the `/etc/protoplaster` directory. +If you want to store them in a different path, use the `--custom-tests` argument to set your own path. +Individual tests run by Protoplaster should be present in the main class in the `test.py` file. +The class's name should start with `Test`, and every test's name in this class should also start with `test`. +An example of an extended module test: + +```python +from protoplaster.conf.module import ModuleName + +@ModuleName("additional_camera") +class TestAdditionalCamera: + """ + {% macro TestAdditionalCamera(prefix) -%} + Additional camera tests + ----------------------- + {% do prefix.append('') %} + This module provides tests dedicated to camera sensors on specific video node: + {%- endmacro %} + """ + + def test_exists(self): + """ + {% macro test_exists(device) -%} + check if the path exists + {%- endmacro %} + """ + assert self.path == "/dev/video0" +``` + +And a YAML definition: + +```yaml +--- +base: + additional_camera: + - path: "/dev/video0" + - path: "/dev/video1" +``` + +## Protoplaster test report +Protoplaster provides `protoplaster-test-report`, a tool to convert test CSV output into a HTML or Markdown table. +``` +usage: protoplaster-test-report [-h] [-i INPUT_FILE] -t {md,html} [-o OUTPUT_FILE] + +options: + -h, --help show this help message and exit + -i INPUT_FILE, --input-file INPUT_FILE + Path to the csv file + -t {md,html}, --type {md,html} + Output type + -o OUTPUT_FILE, --output-file OUTPUT_FILE + Path to the output file +``` + + +## System report +Protoplaster provides `protoplaster-system-report`, a tool for obtaining information about system state and configuration. +It executes a list of commands and saves their outputs. +The outputs are stored in a single zip archive along with an HTML summary. + +### Usage +``` +usage: protoplaster-system-report [-h] [-o OUTPUT_FILE] [-c CONFIG] [--sudo] + +options: + -h, --help show this help message and exit + -o OUTPUT_FILE, --output-file OUTPUT_FILE + Path to the output file + -c CONFIG, --config CONFIG + Path to the YAML config file + --sudo Run as sudo +``` + +The YAML config contains a list of actions to perform. A single action is described as follows: + +```yaml +report_item_name: + run: script + summary: + - title: summary_title + run: summary_script + output: script_output_file + superuser: required | preferred + on-fail: ... +``` + +* `run` - command to be run +* `summary` – a list of summary generators, each one with fields: + * `title` – summary title + * `run` – command that generates the summary. This command gets the output of the original command as stdin. This field is optional; if not specified, the output is placed in the report as-is. +* `output` - output file for the output of `run`. +* `superuser` – optional, should be specified if the command requires elevated privileges to run. Possible values: + * `required` – `protoplaster-system-report` will terminate if the privilege requirement is not met + * `preferred` – if the privilege requirement is not met, a warning will be issued and this particular item won't be included in the report +* `on-fail` – optional description of an item to run in case of failure. It can be used to run an alternative command when the original one fails or is not available. + +Example config file: + +```yaml +uname: + run: uname -a + summary: + - title: os info + run: cat + output: uname.out +dmesg: + run: dmesg + summary: + - title: usb + run: grep usb + - title: v4l + run: grep v4l + output: dmesg.out + superuser: required +ip: + run: ip a + summary: + - title: Network interfaces state + run: python3 $PROTOPLASTER_SCRIPTS/generate_ip_table.py "$(cat)" + output: ip.out + on-fail: + run: ifconfig -a + summary: + - title: Network interfaces state + run: python3 $PROTOPLASTER_SCRIPTS/generate_ifconfig_table.py "$(cat)" + output: ifconfig.out +``` + +### Running as root +By default, `sudo` doesn't preserve `PATH`. +To run `protoplaster-system-report` installed by a non-root user as root, invoke `protoplaster-system-report --sudo` \ No newline at end of file diff --git a/_sources/report.md.txt b/_sources/report.md.txt new file mode 100644 index 0000000..0be3284 --- /dev/null +++ b/_sources/report.md.txt @@ -0,0 +1,13 @@ +Protoplaster tests report +================== +|device name|test name|module|duration|message|status| +|---|---|---|---|---|---| +|/dev/i2c-0|addresses|test.py::TestI2C::test_addresses|9ms 238us||passed| +|/dev/i2c-0|addresses|test.py::TestI2C::test_addresses|8ms 561us||passed| +|/dev/video0|frame|test.py::TestCamera::test_frame|232ms 469us||passed| +|/dev/video0|device_name|test.py::TestCamera::test_device_name|206ms 263us||passed| +|/dev/video0|driver_name|test.py::TestCamera::test_driver_name|221ms 888us||passed| +|/dev/video2|frame|test.py::TestCamera::test_frame|254ms 4us||passed| +|/dev/video2|device_name|test.py::TestCamera::test_device_name|205ms 782us||passed| +|/dev/video2|driver_name|test.py::TestCamera::test_driver_name|204ms 726us||passed| +|/sys/class/gpio/20|read_write|test.py::TestGPIO::test_read_write|12ms 390us||passed| \ No newline at end of file diff --git a/_sources/system_report.md.txt b/_sources/system_report.md.txt new file mode 100644 index 0000000..6ca1c0e --- /dev/null +++ b/_sources/system_report.md.txt @@ -0,0 +1,7 @@ +Protoplaster system report +================== +Protoplaster provides `protoplaster-system-report`, a tool to obtain information about system state and configuration. It executes a list of commands and saves their outputs. The outputs are stored in a single zip archive together with an HTML summary. An example summary can be found here. + +The following config was used to generate the example: +```{include} system-report-example.yml +``` \ No newline at end of file diff --git a/_static/dmesg.out b/_static/dmesg.out new file mode 100644 index 0000000..008ba3c --- /dev/null +++ b/_static/dmesg.out @@ -0,0 +1,594 @@ +[ 0.000000] Linux version 6.5.0-1023-azure (buildd@lcy02-amd64-041) (x86_64-linux-gnu-gcc-11 (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #24~22.04.1-Ubuntu SMP Wed Jun 12 19:55:26 UTC 2024 (Ubuntu 6.5.0-1023.24~22.04.1-azure 6.5.13) +[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.5.0-1023-azure root=PARTUUID=59f54ef5-0f68-4431-ae8c-21fd77494b37 ro console=tty1 console=ttyS0 earlyprintk=ttyS0 nvme_core.io_timeout=240 panic=-1 +[ 0.000000] KERNEL supported cpus: +[ 0.000000] Intel GenuineIntel +[ 0.000000] AMD AuthenticAMD +[ 0.000000] Hygon HygonGenuine +[ 0.000000] Centaur CentaurHauls +[ 0.000000] zhaoxin Shanghai +[ 0.000000] BIOS-provided physical RAM map: +[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable +[ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved +[ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved +[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000003ffeffff] usable +[ 0.000000] BIOS-e820: [mem 0x000000003fff0000-0x000000003fffefff] ACPI data +[ 0.000000] BIOS-e820: [mem 0x000000003ffff000-0x000000003fffffff] ACPI NVS +[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x00000004bfffffff] usable +[ 0.000000] printk: bootconsole [earlyser0] enabled +[ 0.000000] NX (Execute Disable) protection: active +[ 0.000000] SMBIOS 2.3 present. +[ 0.000000] DMI: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090008 12/07/2018 +[ 0.000000] Hypervisor detected: Microsoft Hyper-V +[ 0.000000] Hyper-V: privilege flags low 0xae7f, high 0x388030, hints 0x140c2c, misc 0xc0bed7b2 +[ 0.000000] Hyper-V: Host Build 10.0.20348.2867-2-0 +[ 0.000000] Hyper-V: Nested features: 0x4a0000 +[ 0.000000] Hyper-V: LAPIC Timer Frequency: 0xc3500 +[ 0.000000] Hyper-V: Using hypercall for remote TLB flush +[ 0.000000] clocksource: hyperv_clocksource_tsc_page: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns +[ 0.000000] clocksource: hyperv_clocksource_msr: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns +[ 0.000000] tsc: Detected 2445.433 MHz processor +[ 0.000418] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved +[ 0.000422] e820: remove [mem 0x000a0000-0x000fffff] usable +[ 0.000426] last_pfn = 0x4c0000 max_arch_pfn = 0x400000000 +[ 0.003278] MTRR map: 3 entries (1 fixed + 2 variable; max 17), built from 8 variable MTRRs +[ 0.006879] x86/PAT: Configuration [0-7]: WB WC UC- UC WB WP UC- WT +[ 0.009874] e820: update [mem 0x40000000-0xffffffff] usable ==> reserved +[ 0.011274] last_pfn = 0x3fff0 max_arch_pfn = 0x400000000 +[ 0.017262] found SMP MP-table at [mem 0x000ff780-0x000ff78f] +[ 0.020141] Using GB pages for direct mapping +[ 0.022134] ACPI: Early table checksum verification disabled +[ 0.024569] ACPI: RSDP 0x00000000000F5C00 000014 (v00 ACPIAM) +[ 0.027028] ACPI: RSDT 0x000000003FFF0000 000040 (v01 VRTUAL MICROSFT 12001807 MSFT 00000097) +[ 0.030772] ACPI: FACP 0x000000003FFF0200 000081 (v02 VRTUAL MICROSFT 12001807 MSFT 00000097) +[ 0.034595] ACPI: DSDT 0x000000003FFF1D24 003CD5 (v01 MSFTVM MSFTVM02 00000002 INTL 02002026) +[ 0.038456] ACPI: FACS 0x000000003FFFF000 000040 +[ 0.040442] ACPI: WAET 0x000000003FFF1A80 000028 (v01 VRTUAL MICROSFT 12001807 MSFT 00000097) +[ 0.044262] ACPI: SLIC 0x000000003FFF1AC0 000176 (v01 VRTUAL MICROSFT 12001807 MSFT 00000097) +[ 0.048030] ACPI: OEM0 0x000000003FFF1CC0 000064 (v01 VRTUAL MICROSFT 12001807 MSFT 00000097) +[ 0.054467] ACPI: SRAT 0x000000003FFF0800 000160 (v02 VRTUAL MICROSFT 00000001 MSFT 00000001) +[ 0.058193] ACPI: APIC 0x000000003FFF0300 000072 (v01 VRTUAL MICROSFT 12001807 MSFT 00000097) +[ 0.062185] ACPI: OEMB 0x000000003FFFF040 000064 (v01 VRTUAL MICROSFT 12001807 MSFT 00000097) +[ 0.066153] ACPI: Reserving FACP table memory at [mem 0x3fff0200-0x3fff0280] +[ 0.069239] ACPI: Reserving DSDT table memory at [mem 0x3fff1d24-0x3fff59f8] +[ 0.072285] ACPI: Reserving FACS table memory at [mem 0x3ffff000-0x3ffff03f] +[ 0.075326] ACPI: Reserving WAET table memory at [mem 0x3fff1a80-0x3fff1aa7] +[ 0.078384] ACPI: Reserving SLIC table memory at [mem 0x3fff1ac0-0x3fff1c35] +[ 0.081883] ACPI: Reserving OEM0 table memory at [mem 0x3fff1cc0-0x3fff1d23] +[ 0.085066] ACPI: Reserving SRAT table memory at [mem 0x3fff0800-0x3fff095f] +[ 0.088092] ACPI: Reserving APIC table memory at [mem 0x3fff0300-0x3fff0371] +[ 0.091317] ACPI: Reserving OEMB table memory at [mem 0x3ffff040-0x3ffff0a3] +[ 0.094707] SRAT: PXM 0 -> APIC 0x00 -> Node 0 +[ 0.096952] SRAT: PXM 0 -> APIC 0x01 -> Node 0 +[ 0.098886] SRAT: PXM 0 -> APIC 0x02 -> Node 0 +[ 0.100806] SRAT: PXM 0 -> APIC 0x03 -> Node 0 +[ 0.102751] ACPI: SRAT: Node 0 PXM 0 [mem 0x00000000-0x3fffffff] hotplug +[ 0.105640] ACPI: SRAT: Node 0 PXM 0 [mem 0x100000000-0x4bfffffff] hotplug +[ 0.108587] ACPI: SRAT: Node 0 PXM 0 [mem 0x4c0000000-0xfbfffffff] hotplug +[ 0.111600] ACPI: SRAT: Node 0 PXM 0 [mem 0x1000000000-0xfcffffffff] hotplug +[ 0.115093] ACPI: SRAT: Node 0 PXM 0 [mem 0x10000000000-0x1ffffffffff] hotplug +[ 0.118186] ACPI: SRAT: Node 0 PXM 0 [mem 0x20000000000-0x3ffffffffff] hotplug +[ 0.121283] NUMA: Node 0 [mem 0x00000000-0x3fffffff] + [mem 0x100000000-0x4bfffffff] -> [mem 0x00000000-0x4bfffffff] +[ 0.125869] NODE_DATA(0) allocated [mem 0x4bffd5000-0x4bfffffff] +[ 0.128568] Zone ranges: +[ 0.129877] DMA [mem 0x0000000000001000-0x0000000000ffffff] +[ 0.132562] DMA32 [mem 0x0000000001000000-0x00000000ffffffff] +[ 0.135204] Normal [mem 0x0000000100000000-0x00000004bfffffff] +[ 0.137849] Device empty +[ 0.139085] Movable zone start for each node +[ 0.140913] Early memory node ranges +[ 0.142464] node 0: [mem 0x0000000000001000-0x000000000009efff] +[ 0.145435] node 0: [mem 0x0000000000100000-0x000000003ffeffff] +[ 0.148139] node 0: [mem 0x0000000100000000-0x00000004bfffffff] +[ 0.150834] Initmem setup node 0 [mem 0x0000000000001000-0x00000004bfffffff] +[ 0.153883] On node 0, zone DMA: 1 pages in unavailable ranges +[ 0.153897] On node 0, zone DMA: 97 pages in unavailable ranges +[ 0.170716] On node 0, zone Normal: 16 pages in unavailable ranges +[ 0.174938] ACPI: PM-Timer IO Port: 0x408 +[ 0.180182] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1]) +[ 0.182972] IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23 +[ 0.185948] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) +[ 0.188887] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) +[ 0.191727] ACPI: Using ACPI (MADT) for SMP configuration information +[ 0.195109] smpboot: Allowing 4 CPUs, 0 hotplug CPUs +[ 0.197300] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff] +[ 0.200555] PM: hibernation: Registered nosave memory: [mem 0x0009f000-0x0009ffff] +[ 0.203872] PM: hibernation: Registered nosave memory: [mem 0x000a0000-0x000dffff] +[ 0.207239] PM: hibernation: Registered nosave memory: [mem 0x000e0000-0x000fffff] +[ 0.210925] PM: hibernation: Registered nosave memory: [mem 0x3fff0000-0x3fffefff] +[ 0.214212] PM: hibernation: Registered nosave memory: [mem 0x3ffff000-0x3fffffff] +[ 0.217509] PM: hibernation: Registered nosave memory: [mem 0x40000000-0xffffffff] +[ 0.220762] [mem 0x40000000-0xffffffff] available for PCI devices +[ 0.223448] Booting paravirtualized kernel on Hyper-V +[ 0.225839] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns +[ 0.230333] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1 +[ 0.233869] percpu: Embedded 62 pages/cpu s217088 r8192 d28672 u524288 +[ 0.236769] pcpu-alloc: s217088 r8192 d28672 u524288 alloc=1*2097152 +[ 0.236771] pcpu-alloc: [0] 0 1 2 3 +[ 0.236782] Hyper-V: PV spinlocks enabled +[ 0.238516] PV qspinlock hash table entries: 256 (order: 0, 4096 bytes, linear) +[ 0.242082] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-6.5.0-1023-azure root=PARTUUID=59f54ef5-0f68-4431-ae8c-21fd77494b37 ro console=tty1 console=ttyS0 earlyprintk=ttyS0 nvme_core.io_timeout=240 panic=-1 +[ 0.250276] Unknown kernel command line parameters "BOOT_IMAGE=/boot/vmlinuz-6.5.0-1023-azure", will be passed to user space. +[ 0.255222] random: crng init done +[ 0.258044] Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear) +[ 0.262462] Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear) +[ 0.266012] Fallback order for Node 0: 0 +[ 0.266015] Built 1 zonelists, mobility grouping on. Total pages: 4128496 +[ 0.270696] Policy zone: Normal +[ 0.272045] mem auto-init: stack:off, heap alloc:on, heap free:off +[ 0.279692] software IO TLB: area num 4. +[ 0.305662] Memory: 16358032K/16776760K available (18432K kernel code, 4136K rwdata, 12664K rodata, 4584K init, 20480K bss, 418468K reserved, 0K cma-reserved) +[ 0.311984] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 +[ 0.316168] ftrace: allocating 53700 entries in 210 pages +[ 0.329207] ftrace: allocated 210 pages with 4 groups +[ 0.331631] rcu: Hierarchical RCU implementation. +[ 0.333668] rcu: RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=4. +[ 0.336562] Rude variant of Tasks RCU enabled. +[ 0.339053] Tracing variant of Tasks RCU enabled. +[ 0.341105] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies. +[ 0.344395] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4 +[ 0.349417] NR_IRQS: 524544, nr_irqs: 456, preallocated irqs: 16 +[ 0.352375] rcu: srcu_init: Setting srcu_struct sizes based on contention. +[ 0.360588] Console: colour VGA+ 80x25 +[ 0.362250] printk: console [tty1] enabled +[ 0.414046] printk: console [ttyS0] enabled +[ 0.418237] printk: bootconsole [earlyser0] disabled +[ 0.422938] ACPI: Core revision 20230331 +[ 0.425200] APIC: Switch to symmetric I/O mode setup +[ 0.430918] Hyper-V: enabling crash_kexec_post_notifiers +[ 0.434003] Hyper-V: Using IPI hypercalls +[ 0.436170] Hyper-V: Using enlightened APIC (xapic mode) +[ 0.447638] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 +[ 0.453962] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x233fde66930, max_idle_ns: 440795269764 ns +[ 0.459056] Calibrating delay loop (skipped), value calculated using timer frequency.. 4890.86 BogoMIPS (lpj=9781732) +[ 0.463534] x86/cpu: User Mode Instruction Prevention (UMIP) activated +[ 0.467443] Last level iTLB entries: 4KB 512, 2MB 512, 4MB 256 +[ 0.471417] Last level dTLB entries: 4KB 2048, 2MB 2048, 4MB 1024, 1GB 0 +[ 0.475451] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization +[ 0.479455] Spectre V2 : Mitigation: Retpolines +[ 0.481864] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch +[ 0.487053] Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT +[ 0.490417] Speculative Store Bypass: Vulnerable +[ 0.491420] Speculative Return Stack Overflow: IBPB-extending microcode not applied! +[ 0.495455] Speculative Return Stack Overflow: WARNING: See https://kernel.org/doc/html/latest/admin-guide/hw-vuln/srso.html for mitigation options. +[ 0.495455] Speculative Return Stack Overflow: Vulnerable: Safe RET, no microcode +[ 0.503494] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers' +[ 0.507821] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' +[ 0.511419] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' +[ 0.514614] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256 +[ 0.515420] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'compacted' format. +[ 0.547060] Freeing SMP alternatives memory: 44K +[ 0.549601] pid_max: default: 32768 minimum: 301 +[ 0.551474] LSM: initializing lsm=lockdown,capability,landlock,yama,apparmor,integrity +[ 0.555638] landlock: Up and running. +[ 0.557712] Yama: becoming mindful. +[ 0.559448] AppArmor: AppArmor initialized +[ 0.561719] Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear) +[ 0.563465] Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear) +[ 0.567888] smpboot: CPU0: AMD EPYC 7763 64-Core Processor (family: 0x19, model: 0x1, stepping: 0x1) +[ 0.571640] RCU Tasks Rude: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1. +[ 0.575079] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1. +[ 0.578994] Performance Events: PMU not available due to virtualization, using software events only. +[ 0.579663] signal: max sigframe size: 1776 +[ 0.582051] rcu: Hierarchical SRCU implementation. +[ 0.583439] rcu: Max phase no-delay instances is 1000. +[ 0.587328] NMI watchdog: Perf NMI watchdog permanently disabled +[ 0.590472] smp: Bringing up secondary CPUs ... +[ 0.591576] smpboot: x86: Booting SMP configuration: +[ 0.595430] .... node #0, CPUs: #2 #1 #3 +[ 0.595645] smp: Brought up 1 node, 4 CPUs +[ 0.601706] smpboot: Max logical packages: 1 +[ 0.603421] smpboot: Total of 4 processors activated (19563.46 BogoMIPS) +[ 0.607480] devtmpfs: initialized +[ 0.609002] x86/mm: Memory block size: 128MB +[ 0.613887] ACPI: PM: Registering ACPI NVS region [mem 0x3ffff000-0x3fffffff] (4096 bytes) +[ 0.615537] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns +[ 0.619467] futex hash table entries: 1024 (order: 4, 65536 bytes, linear) +[ 0.622997] pinctrl core: initialized pinctrl subsystem +[ 0.623870] PM: RTC time: 00:15:35, date: 2024-07-24 +[ 0.626924] NET: Registered PF_NETLINK/PF_ROUTE protocol family +[ 0.627717] DMA: preallocated 2048 KiB GFP_KERNEL pool for atomic allocations +[ 0.631157] DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations +[ 0.635092] DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations +[ 0.639070] audit: initializing netlink subsys (disabled) +[ 0.641817] audit: type=2000 audit(1721780135.192:1): state=initialized audit_enabled=0 res=1 +[ 0.641817] thermal_sys: Registered thermal governor 'fair_share' +[ 0.643486] thermal_sys: Registered thermal governor 'bang_bang' +[ 0.646586] thermal_sys: Registered thermal governor 'step_wise' +[ 0.647435] thermal_sys: Registered thermal governor 'user_space' +[ 0.650464] thermal_sys: Registered thermal governor 'power_allocator' +[ 0.651441] EISA bus registered +[ 0.655435] cpuidle: using governor ladder +[ 0.657695] cpuidle: using governor menu +[ 0.661919] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5 +[ 0.663805] PCI: Using configuration type 1 for base access +[ 0.666801] PCI: Using configuration type 1 for extended access +[ 0.667796] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible. +[ 0.671462] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages +[ 0.674537] HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page +[ 0.675428] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages +[ 0.683430] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page +[ 0.696482] ACPI: Added _OSI(Module Device) +[ 0.699429] ACPI: Added _OSI(Processor Device) +[ 0.701793] ACPI: Added _OSI(3.0 _SCP Extensions) +[ 0.703428] ACPI: Added _OSI(Processor Aggregator Device) +[ 0.711074] ACPI: 1 ACPI AML tables successfully acquired and loaded +[ 0.719786] ACPI: Interpreter enabled +[ 0.723442] ACPI: PM: (supports S0 S5) +[ 0.725505] ACPI: Using IOAPIC for interrupt routing +[ 0.727989] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug +[ 0.731460] PCI: Using E820 reservations for host bridge windows +[ 0.735582] ACPI: Enabled 1 GPEs in block 00 to 0F +[ 0.767136] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) +[ 0.770439] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3] +[ 0.771864] PCI host bridge to bus 0000:00 +[ 0.774083] pci_bus 0000:00: root bus resource [mem 0xfc0000000-0xfffffffff window] +[ 0.775484] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window] +[ 0.779014] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window] +[ 0.779421] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window] +[ 0.783465] pci_bus 0000:00: root bus resource [mem 0x40000000-0xfffbffff window] +[ 0.787056] pci_bus 0000:00: root bus resource [bus 00-ff] +[ 0.790598] pci 0000:00:00.0: [8086:7192] type 00 class 0x060000 +[ 0.794477] pci 0000:00:07.0: [8086:7110] type 00 class 0x060100 +[ 0.797827] pci 0000:00:07.1: [8086:7111] type 00 class 0x010180 +[ 0.801247] pci 0000:00:07.1: reg 0x20: [io 0xffa0-0xffaf] +[ 0.804132] pci 0000:00:07.1: legacy IDE quirk: reg 0x10: [io 0x01f0-0x01f7] +[ 0.807526] pci 0000:00:07.1: legacy IDE quirk: reg 0x14: [io 0x03f6] +[ 0.810841] pci 0000:00:07.1: legacy IDE quirk: reg 0x18: [io 0x0170-0x0177] +[ 0.811423] pci 0000:00:07.1: legacy IDE quirk: reg 0x1c: [io 0x0376] +[ 0.815591] * Found PM-Timer Bug on the chipset. Due to workarounds for a bug, + * this clock source is slow. Consider trying other clock sources +[ 0.819488] pci 0000:00:07.3: [8086:7113] type 00 class 0x068000 +[ 0.824385] pci 0000:00:07.3: quirk: [io 0x0400-0x043f] claimed by PIIX4 ACPI +[ 0.828410] pci 0000:00:08.0: [1414:5353] type 00 class 0x030000 +[ 0.831857] pci 0000:00:08.0: reg 0x10: [mem 0xf8000000-0xfbffffff] +[ 0.836606] pci 0000:00:08.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff] +[ 0.860892] ACPI: PCI: Interrupt link LNKA configured for IRQ 11 +[ 0.863714] ACPI: PCI: Interrupt link LNKB configured for IRQ 0 +[ 0.866733] ACPI: PCI: Interrupt link LNKB disabled +[ 0.867687] ACPI: PCI: Interrupt link LNKC configured for IRQ 0 +[ 0.870948] ACPI: PCI: Interrupt link LNKC disabled +[ 0.871740] ACPI: PCI: Interrupt link LNKD configured for IRQ 0 +[ 0.874749] ACPI: PCI: Interrupt link LNKD disabled +[ 0.875728] iommu: Default domain type: Translated +[ 0.877672] iommu: DMA domain TLB invalidation policy: lazy mode +[ 0.879598] SCSI subsystem initialized +[ 0.883072] libata version 3.00 loaded. +[ 0.883097] ACPI: bus type USB registered +[ 0.885297] usbcore: registered new interface driver usbfs +[ 0.887438] usbcore: registered new interface driver hub +[ 0.890196] usbcore: registered new device driver usb +[ 0.891453] pps_core: LinuxPPS API ver. 1 registered +[ 0.894144] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti +[ 0.895462] PTP clock support registered +[ 0.897630] EDAC MC: Ver: 3.0.0 +[ 0.899871] hv_vmbus: Vmbus version:5.3 +[ 0.903816] NetLabel: Initializing +[ 0.905715] NetLabel: domain hash size = 128 +[ 0.907424] NetLabel: protocols = UNLABELED CIPSOv4 CALIPSO +[ 0.910546] NetLabel: unlabeled traffic allowed by default +[ 0.911452] mctp: management component transport protocol core +[ 0.914070] NET: Registered PF_MCTP protocol family +[ 0.915467] PCI: Using ACPI for IRQ routing +[ 0.918079] PCI: pci_cache_line_size set to 64 bytes +[ 0.918447] e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff] +[ 0.918450] e820: reserve RAM buffer [mem 0x3fff0000-0x3fffffff] +[ 0.918476] pci 0000:00:08.0: vgaarb: setting as boot VGA device +[ 0.918476] pci 0000:00:08.0: vgaarb: bridge control possible +[ 0.919052] pci 0000:00:08.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none +[ 0.919058] vgaarb: loaded +[ 0.920720] clocksource: Switched to clocksource tsc-early +[ 0.941737] VFS: Disk quotas dquot_6.6.0 +[ 0.944168] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) +[ 0.947929] AppArmor: AppArmor Filesystem Enabled +[ 0.950505] pnp: PnP ACPI init +[ 0.953303] pnp 00:03: [dma 0 disabled] +[ 0.959228] pnp 00:04: [dma 0 disabled] +[ 0.960077] pnp 00:05: [dma 2] +[ 0.960186] system 00:06: [io 0x01e0-0x01ef] has been reserved +[ 0.963312] system 00:06: [io 0x0160-0x016f] has been reserved +[ 0.966556] system 00:06: [io 0x0278-0x027f] has been reserved +[ 0.969645] system 00:06: [io 0x0378-0x037f] has been reserved +[ 0.973185] system 00:06: [io 0x0678-0x067f] has been reserved +[ 0.976324] system 00:06: [io 0x0778-0x077f] has been reserved +[ 0.979537] system 00:06: [io 0x04d0-0x04d1] has been reserved +[ 0.983057] system 00:07: [io 0x0400-0x043f] has been reserved +[ 0.986336] system 00:07: [io 0x0370-0x0371] has been reserved +[ 0.989606] system 00:07: [io 0x0440-0x044f] has been reserved +[ 0.992621] system 00:07: [mem 0xfec00000-0xfec00fff] could not be reserved +[ 0.996350] system 00:07: [mem 0xfee00000-0xfee00fff] has been reserved +[ 1.000047] system 00:08: [mem 0x00000000-0x0009ffff] could not be reserved +[ 1.003925] system 00:08: [mem 0x000c0000-0x000dffff] could not be reserved +[ 1.007412] system 00:08: [mem 0x000e0000-0x000fffff] could not be reserved +[ 1.011085] system 00:08: [mem 0x00100000-0x3fffffff] could not be reserved +[ 1.014688] system 00:08: [mem 0xfffc0000-0xffffffff] has been reserved +[ 1.018723] pnp: PnP ACPI: found 9 devices +[ 1.028945] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns +[ 1.033861] NET: Registered PF_INET protocol family +[ 1.037085] IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear) +[ 1.043706] tcp_listen_portaddr_hash hash table entries: 8192 (order: 5, 131072 bytes, linear) +[ 1.048056] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear) +[ 1.052293] TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear) +[ 1.056554] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear) +[ 1.060410] TCP: Hash tables configured (established 131072 bind 65536) +[ 1.063956] MPTCP token hash table entries: 16384 (order: 6, 393216 bytes, linear) +[ 1.070341] UDP hash table entries: 8192 (order: 6, 262144 bytes, linear) +[ 1.073796] UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes, linear) +[ 1.077508] NET: Registered PF_UNIX/PF_LOCAL protocol family +[ 1.080543] NET: Registered PF_XDP protocol family +[ 1.083295] pci_bus 0000:00: resource 4 [mem 0xfc0000000-0xfffffffff window] +[ 1.086953] pci_bus 0000:00: resource 5 [io 0x0000-0x0cf7 window] +[ 1.090126] pci_bus 0000:00: resource 6 [io 0x0d00-0xffff window] +[ 1.093268] pci_bus 0000:00: resource 7 [mem 0x000a0000-0x000bffff window] +[ 1.096744] pci_bus 0000:00: resource 8 [mem 0x40000000-0xfffbffff window] +[ 1.100538] pci 0000:00:00.0: Limiting direct PCI/PCI transfers +[ 1.103767] PCI: CLS 0 bytes, default 64 +[ 1.105958] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) +[ 1.109267] software IO TLB: mapped [mem 0x000000003bff0000-0x000000003fff0000] (64MB) +[ 1.113936] Initialise system trusted keyrings +[ 1.116538] Key type blacklist registered +[ 1.118869] workingset: timestamp_bits=36 max_order=22 bucket_order=0 +[ 1.122132] zbud: loaded +[ 1.123964] squashfs: version 4.0 (2009/01/31) Phillip Lougher +[ 1.127233] fuse: init (API version 7.38) +[ 1.129634] integrity: Platform Keyring initialized +[ 1.132472] integrity: Machine keyring initialized +[ 1.144198] Key type asymmetric registered +[ 1.146744] Asymmetric key parser 'x509' registered +[ 1.149349] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244) +[ 1.153196] io scheduler mq-deadline registered +[ 1.155927] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 +[ 1.159334] hv_vmbus: registering driver hv_pci +[ 1.161865] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0 +[ 1.165924] ACPI: button: Power Button [PWRF] +[ 1.168779] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled +[ 1.197944] 00:03: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A +[ 1.227421] 00:04: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A +[ 1.234149] Linux agpgart interface v0.103 +[ 1.238814] loop: module loaded +[ 1.240889] hv_vmbus: registering driver hv_storvsc +[ 1.244243] ata_piix 0000:00:07.1: version 2.13 +[ 1.244482] ata_piix 0000:00:07.1: Hyper-V Virtual Machine detected, ATA device ignore set +[ 1.244620] scsi host1: storvsc_host_t +[ 1.248322] scsi host3: storvsc_host_t +[ 1.248328] scsi host0: storvsc_host_t +[ 1.250293] scsi 0:0:0:0: Direct-Access Msft Virtual Disk 1.0 PQ: 0 ANSI: 5 +[ 1.251172] scsi host2: storvsc_host_t +[ 1.251719] scsi host4: ata_piix +[ 1.251987] scsi host5: ata_piix +[ 1.252051] ata1: PATA max UDMA/33 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14 +[ 1.252064] scsi 1:0:1:0: Direct-Access Msft Virtual Disk 1.0 PQ: 0 ANSI: 5 +[ 1.253036] sd 1:0:1:0: Attached scsi generic sg0 type 0 +[ 1.253216] sd 1:0:1:0: [sda] 157286400 512-byte logical blocks: (80.5 GB/75.0 GiB) +[ 1.253271] sd 1:0:1:0: [sda] Write Protect is off +[ 1.253273] sd 1:0:1:0: [sda] Mode Sense: 0f 00 10 00 +[ 1.253367] sd 1:0:1:0: [sda] Write cache: disabled, read cache: enabled, supports DPO and FUA +[ 1.254409] sda: sda1 +[ 1.257556] ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15 +[ 1.257741] tun: Universal TUN/TAP device driver, 1.6 +[ 1.260142] sd 1:0:1:0: [sda] Attached SCSI disk +[ 1.261604] PPP generic driver version 2.4.2 +[ 1.261715] scsi 0:0:0:0: Attached scsi generic sg1 type 0 +[ 1.263146] sd 0:0:0:0: [sdb] 157286400 512-byte logical blocks: (80.5 GB/75.0 GiB) +[ 1.266312] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12 +[ 1.269786] sd 0:0:0:0: [sdb] 4096-byte physical blocks +[ 1.277767] serio: i8042 KBD port at 0x60,0x64 irq 1 +[ 1.278754] sd 0:0:0:0: [sdb] Write Protect is off +[ 1.279075] serio: i8042 AUX port at 0x60,0x64 irq 12 +[ 1.282876] sd 0:0:0:0: [sdb] Mode Sense: 0f 00 10 00 +[ 1.283009] sd 0:0:0:0: [sdb] Write cache: disabled, read cache: enabled, supports DPO and FUA +[ 1.284182] mousedev: PS/2 mouse device common for all mice +[ 1.288713] sdb: sdb1 sdb14 sdb15 +[ 1.289598] rtc_cmos 00:00: RTC can wake from S4 +[ 1.294107] sd 0:0:0:0: [sdb] Attached SCSI disk +[ 1.298670] rtc_cmos 00:00: registered as rtc0 +[ 1.340958] rtc_cmos 00:00: setting system clock to 2024-07-24T00:15:36 UTC (1721780136) +[ 1.341242] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input1 +[ 1.345082] rtc_cmos 00:00: alarms up to one month, 114 bytes nvram +[ 1.352869] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log. +[ 1.358829] device-mapper: uevent: version 1.0.3 +[ 1.361384] device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@redhat.com +[ 1.365570] platform eisa.0: Probing EISA bus 0 +[ 1.367989] platform eisa.0: EISA: Cannot allocate resource for mainboard +[ 1.371514] platform eisa.0: Cannot allocate resource for EISA slot 1 +[ 1.374799] platform eisa.0: Cannot allocate resource for EISA slot 2 +[ 1.378225] platform eisa.0: Cannot allocate resource for EISA slot 3 +[ 1.381452] platform eisa.0: Cannot allocate resource for EISA slot 4 +[ 1.384761] platform eisa.0: Cannot allocate resource for EISA slot 5 +[ 1.388313] platform eisa.0: Cannot allocate resource for EISA slot 6 +[ 1.391560] platform eisa.0: Cannot allocate resource for EISA slot 7 +[ 1.394779] platform eisa.0: Cannot allocate resource for EISA slot 8 +[ 1.398015] platform eisa.0: EISA: Detected 0 cards +[ 1.400563] amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled +[ 1.406703] hv_utils: Registering HyperV Utility Driver +[ 1.409420] hv_vmbus: registering driver hv_utils +[ 1.411930] hv_vmbus: registering driver hv_balloon +[ 1.414806] hv_utils: Heartbeat IC version 3.0 +[ 1.414815] hv_utils: Shutdown IC version 3.2 +[ 1.414820] hv_utils: TimeSync IC version 4.0 +[ 1.422536] drop_monitor: Initializing network drop monitor service +[ 1.425796] hv_balloon: Using Dynamic Memory protocol version 2.0 +[ 1.439465] NET: Registered PF_INET6 protocol family +[ 1.443229] Segment Routing with IPv6 +[ 1.445345] In-situ OAM (IOAM) with IPv6 +[ 1.447613] NET: Registered PF_PACKET protocol family +[ 1.450284] Key type dns_resolver registered +[ 1.453143] IPI shorthand broadcast: enabled +[ 1.458222] sched_clock: Marking stable (1368008219, 89876776)->(1563100987, -105215992) +[ 1.462419] registered taskstats version 1 +[ 1.464971] Loading compiled-in X.509 certificates +[ 1.468279] Loaded X.509 cert 'Build time autogenerated kernel key: 21ddb14f35168714d8e229f4f20ccb5314eee728' +[ 1.473856] Loaded X.509 cert 'Canonical Ltd. Live Patch Signing: 14df34d1a87cf37625abec039ef2bf521249b969' +[ 1.479252] Loaded X.509 cert 'Canonical Ltd. Kernel Module Signing: 88f752e560a1e0737e31163a466ad7b70a850c19' +[ 1.484408] blacklist: Loading compiled-in revocation X.509 certificates +[ 1.487982] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing: 61482aa2830d0ab2ad5af10b7250da9033ddcef0' +[ 1.492722] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing (2017): 242ade75ac4a15e50d50c84b0d45ff3eae707a03' +[ 1.497824] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing (ESM 2018): 365188c1d374d6b07c3c8f240f8ef722433d6a8b' +[ 1.503443] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing (2019): c0746fd6c5da3ae827864651ad66ae47fe24b3e8' +[ 1.508466] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing (2021 v1): a8d54bbb3825cfb94fa13c9f8a594a195c107b8d' +[ 1.513665] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing (2021 v2): 4cf046892d6fd3c9a5b03f98d845f90851dc6a8c' +[ 1.524048] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing (2021 v3): 100437bb6de6e469b581e61cd66bce3ef4ed53af' +[ 1.529233] Loaded X.509 cert 'Canonical Ltd. Secure Boot Signing (Ubuntu Core 2019): c1d57b8f6b743f23ee41f4f7ee292f06eecadfb9' +[ 1.538031] Key type .fscrypt registered +[ 1.540364] Key type fscrypt-provisioning registered +[ 1.543289] Key type encrypted registered +[ 1.545436] AppArmor: AppArmor sha1 policy hashing enabled +[ 1.548511] ima: No TPM chip found, activating TPM-bypass! +[ 1.551452] Loading compiled-in module X.509 certificates +[ 1.554756] Loaded X.509 cert 'Build time autogenerated kernel key: 21ddb14f35168714d8e229f4f20ccb5314eee728' +[ 1.559576] ima: Allocated hash algorithm: sha1 +[ 1.561953] ima: No architecture policies found +[ 1.564550] evm: Initialising EVM extended attributes: +[ 1.567161] evm: security.selinux +[ 1.569039] evm: security.SMACK64 +[ 1.570871] evm: security.SMACK64EXEC +[ 1.572876] evm: security.SMACK64TRANSMUTE +[ 1.575147] evm: security.SMACK64MMAP +[ 1.577147] evm: security.apparmor +[ 1.579104] evm: security.ima +[ 1.581039] evm: security.capability +[ 1.583019] evm: HMAC attrs: 0x1 +[ 1.585218] PM: Magic number: 0:526:254 +[ 1.587483] memory memory128: hash matches +[ 1.596323] RAS: Correctable Errors collector initialized. +[ 1.599284] clk: Disabling unused clocks +[ 1.602430] md: Waiting for all devices to be available before autodetect +[ 1.604615] md: If you don't use raid, use raid=noautodetect +[ 1.606570] md: Autodetecting RAID arrays. +[ 1.608042] md: autorun ... +[ 1.609208] md: ... autorun DONE. +[ 1.614126] EXT4-fs (sdb1): mounted filesystem 0e72b1bc-1051-449a-a6a1-620989380c19 ro with ordered data mode. Quota mode: none. +[ 1.617680] VFS: Mounted root (ext4 filesystem) readonly on device 8:17. +[ 1.620010] devtmpfs: mounted +[ 1.622834] Freeing unused kernel image (initmem) memory: 4584K +[ 1.633892] Write protecting the kernel read-only data: 32768k +[ 1.636351] Freeing unused kernel image (rodata/data gap) memory: 1672K +[ 1.691850] x86/mm: Checked W+X mappings: passed, no W+X pages found. +[ 1.695408] Run /sbin/init as init process +[ 1.696920] with arguments: +[ 1.696923] /sbin/init +[ 1.696924] with environment: +[ 1.696926] HOME=/ +[ 1.696927] TERM=linux +[ 1.696929] BOOT_IMAGE=/boot/vmlinuz-6.5.0-1023-azure +[ 2.048828] systemd[1]: Inserted module 'autofs4' +[ 2.097261] systemd[1]: systemd 249.11-0ubuntu3.12 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified) +[ 2.107102] systemd[1]: Detected virtualization microsoft. +[ 2.109857] systemd[1]: Detected architecture x86-64. +[ 2.119789] systemd[1]: Hostname set to . +[ 2.141925] tsc: Refined TSC clocksource calibration: 2445.434 MHz +[ 2.144083] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x233fdf4f8c5, max_idle_ns: 440795226840 ns +[ 2.147225] clocksource: Switched to clocksource tsc +[ 2.160306] systemd[1]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set +[ 2.214841] block sdb: the capability attribute has been deprecated. +[ 2.702805] systemd[1]: Configuration file /run/systemd/system/netplan-ovs-cleanup.service is marked world-inaccessible. This has no effect as configuration data is accessible via APIs without restrictions. Proceeding anyway. +[ 2.833429] systemd[1]: /etc/systemd/system/runner-provisioner.service:3: Invalid URL, ignoring: None +[ 2.967383] systemd[1]: Queued start job for default target Graphical Interface. +[ 2.970046] systemd[1]: Unnecessary job was removed for /sys/devices/virtual/misc/vmbus!hv_fcopy. +[ 2.972961] systemd[1]: Unnecessary job was removed for /sys/devices/virtual/misc/vmbus!hv_vss. +[ 2.990840] systemd[1]: Created slice Slice for Azure VM Agent and Extensions. +[ 2.996758] systemd[1]: Created slice Slice /system/modprobe. +[ 3.001397] systemd[1]: Created slice Slice /system/serial-getty. +[ 3.005960] systemd[1]: Created slice Slice /system/systemd-fsck. +[ 3.010519] systemd[1]: Created slice User and Session Slice. +[ 3.014697] systemd[1]: Started Forward Password Requests to Wall Directory Watch. +[ 3.020223] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point. +[ 3.026328] systemd[1]: Reached target Slice Units. +[ 3.030097] systemd[1]: Reached target Mounting snaps. +[ 3.033694] systemd[1]: Reached target Swaps. +[ 3.037016] systemd[1]: Reached target System Time Set. +[ 3.041216] systemd[1]: Reached target Local Verity Protected Volumes. +[ 3.045846] systemd[1]: Listening on Device-mapper event daemon FIFOs. +[ 3.051064] systemd[1]: Listening on LVM2 poll daemon socket. +[ 3.055121] systemd[1]: Listening on multipathd control socket. +[ 3.059668] systemd[1]: Listening on Syslog Socket. +[ 3.063211] systemd[1]: Listening on fsck to fsckd communication Socket. +[ 3.067852] systemd[1]: Listening on initctl Compatibility Named Pipe. +[ 3.072659] systemd[1]: Listening on Journal Audit Socket. +[ 3.076477] systemd[1]: Listening on Journal Socket (/dev/log). +[ 3.080583] systemd[1]: Listening on Journal Socket. +[ 3.084342] systemd[1]: Listening on Network Service Netlink Socket. +[ 3.091526] systemd[1]: Listening on udev Control Socket. +[ 3.095370] systemd[1]: Listening on udev Kernel Socket. +[ 3.118040] systemd[1]: Mounting Huge Pages File System... +[ 3.123238] systemd[1]: Mounting POSIX Message Queue File System... +[ 3.128544] systemd[1]: Mounting Kernel Debug File System... +[ 3.133409] systemd[1]: Mounting Kernel Trace File System... +[ 3.139031] systemd[1]: Starting Journal Service... +[ 3.143494] systemd[1]: Starting Set the console keyboard layout... +[ 3.148702] systemd[1]: Starting Create List of Static Device Nodes... +[ 3.154551] systemd[1]: Starting Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling... +[ 3.160036] systemd[1]: Condition check resulted in LXD - agent being skipped. +[ 3.163683] systemd[1]: Starting Load Kernel Module configfs... +[ 3.169171] systemd[1]: Starting Load Kernel Module drm... +[ 3.173833] systemd[1]: Starting Load Kernel Module efi_pstore... +[ 3.178968] systemd[1]: Starting Load Kernel Module fuse... +[ 3.182950] systemd[1]: Condition check resulted in OpenVSwitch configuration for cleanup being skipped. +[ 3.188011] systemd[1]: Starting File System Check on Root Device... +[ 3.193925] systemd[1]: Starting Load Kernel Modules... +[ 3.198749] systemd[1]: Starting Coldplug All udev Devices... +[ 3.209394] systemd[1]: Starting Setup network rules for WALinuxAgent... +[ 3.215427] systemd[1]: Started Journal Service. +[ 3.234711] ACPI: bus type drm_connector registered +[ 4.010605] EXT4-fs (sdb1): re-mounted 0e72b1bc-1051-449a-a6a1-620989380c19 r/w. Quota mode: none. +[ 4.045763] alua: device handler registered +[ 4.055916] emc: device handler registered +[ 4.062388] rdac: device handler registered +[ 4.066989] systemd-journald[154]: Received client request to flush runtime journal. +[ 4.343446] hv_vmbus: registering driver hyperv_keyboard +[ 4.347138] input: AT Translated Set 2 keyboard as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A03:00/device:07/VMBUS:01/d34b2567-b9b6-42b9-8778-0a4ec0b955bf/serio2/input/input3 +[ 4.371514] cryptd: max_cpu_qlen set to 1000 +[ 4.403909] hv_vmbus: registering driver hyperv_drm +[ 4.404314] hyperv_drm 5620e0c7-8062-4dce-aeb7-520c7ef76171: [drm] Synthvid Version major 3, minor 5 +[ 4.405261] hv_vmbus: registering driver hv_netvsc +[ 4.413596] [drm] Initialized hyperv_drm 1.0.0 2020 for 5620e0c7-8062-4dce-aeb7-520c7ef76171 on minor 0 +[ 4.448795] AVX2 version of gcm_enc/dec engaged. +[ 4.448918] AES CTR mode by8 optimization enabled +[ 4.679293] Console: switching to colour frame buffer device 128x48 +[ 4.762219] hyperv_drm 5620e0c7-8062-4dce-aeb7-520c7ef76171: [drm] fb0: hyperv_drmdrmfb frame buffer device +[ 5.073970] hid: raw HID events driver (C) Jiri Kosina +[ 5.077861] hv_vmbus: registering driver hid_hyperv +[ 5.079048] input: Microsoft Vmbus HID-compliant Mouse as /devices/0006:045E:0621.0001/input/input4 +[ 5.079309] hid 0006:045E:0621.0001: input: VIRTUAL HID v0.01 Mouse [Microsoft Vmbus HID-compliant Mouse] on +[ 5.128104] hv_utils: KVP IC version 4.0 +[ 5.226608] kvm_amd: TSC scaling supported +[ 5.226614] kvm_amd: Nested Virtualization enabled +[ 5.226615] kvm_amd: Nested Paging enabled +[ 5.226618] kvm_amd: kvm_amd: Hyper-V enlightened NPT TLB flush enabled +[ 5.226619] kvm_amd: kvm_amd: Hyper-V Direct TLB Flush enabled +[ 5.226621] kvm_amd: Virtual VMLOAD VMSAVE supported +[ 5.226622] kvm_amd: PMU virtualization is disabled +[ 5.277894] workqueue: drm_fb_helper_damage_work [drm_kms_helper] hogged CPU for >10000us 4 times, consider switching to WQ_UNBOUND +[ 5.596669] loop0: detected capacity change from 0 to 130960 +[ 5.599770] loop1: detected capacity change from 0 to 178240 +[ 5.602880] loop2: detected capacity change from 0 to 79520 +[ 5.683734] audit: type=1400 audit(1721780141.050:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=372 comm="apparmor_parser" +[ 5.683743] audit: type=1400 audit(1721780141.050:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=372 comm="apparmor_parser" +[ 5.684911] audit: type=1400 audit(1721780141.050:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="lsb_release" pid=371 comm="apparmor_parser" +[ 5.690962] audit: type=1400 audit(1721780141.058:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/man" pid=381 comm="apparmor_parser" +[ 5.690969] audit: type=1400 audit(1721780141.058:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_filter" pid=381 comm="apparmor_parser" +[ 5.690974] audit: type=1400 audit(1721780141.058:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_groff" pid=381 comm="apparmor_parser" +[ 5.693522] audit: type=1400 audit(1721780141.058:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="ubuntu_pro_apt_news" pid=374 comm="apparmor_parser" +[ 5.697193] audit: type=1400 audit(1721780141.062:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=373 comm="apparmor_parser" +[ 5.697199] audit: type=1400 audit(1721780141.062:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=373 comm="apparmor_parser" +[ 5.697204] audit: type=1400 audit(1721780141.062:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/connman/scripts/dhclient-script" pid=373 comm="apparmor_parser" +[ 6.951627] /dev/sr0: Can't open blockdev +[ 10.233289] sda: sda1 +[ 12.489100] EXT4-fs (sda1): mounted filesystem fe39e5e1-3924-465f-a191-98ef56bc702f r/w with ordered data mode. Quota mode: none. +[ 14.430806] Adding 4194300k swap on /mnt/swapfile. Priority:-2 extents:9 across:4505596k FS +[ 18.619006] loop3: detected capacity change from 0 to 8 +[ 18.938284] kauditd_printk_skb: 34 callbacks suppressed +[ 18.938288] audit: type=1400 audit(1721780154.308:46): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/snapd/snap-confine" pid=916 comm="apparmor_parser" +[ 18.962425] audit: type=1400 audit(1721780154.332:47): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/lib/snapd/snap-confine//mount-namespace-capture-helper" pid=916 comm="apparmor_parser" +[ 20.303743] overlayfs: fs on '/home/runner/.local/share/containers/storage/overlay/compat2551884418/lower1' does not support file handles, falling back to xino=off. +[ 20.331469] overlayfs: fs on '/home/runner/.local/share/containers/storage/overlay/metacopy-check676508299/l1' does not support file handles, falling back to xino=off. +[ 20.334899] overlayfs: fs on '/home/runner/.local/share/containers/storage/overlay/opaque-bug-check1542246542/l2' does not support file handles, falling back to xino=off. +[ 26.748451] audit: type=1400 audit(1721780162.116:48): apparmor="STATUS" operation="profile_load" profile="unconfined" name="docker-default" pid=1259 comm="apparmor_parser" +[ 28.947837] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. +[ 29.029441] Bridge firewalling registered +[ 30.160871] Initializing XFRM netlink socket +[ 49.513540] hv_balloon: Max. dynamic memory size: 16384 MB +[ 434.754421] overlayfs: lowerdir is in-use as upperdir/workdir of another mount, accessing files from both mounts will result in undefined behavior. +[ 528.426035] overlayfs: lowerdir is in-use as upperdir/workdir of another mount, accessing files from both mounts will result in undefined behavior. +[ 1762.222174] loop3: detected capacity change from 0 to 1543429 +[ 1762.253332] EXT4-fs (loop3): recovery complete +[ 1762.253567] EXT4-fs (loop3): mounted filesystem 65f865c9-e338-46c1-91d1-6819561d21ea r/w with ordered data mode. Quota mode: none. diff --git a/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 b/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 new file mode 100644 index 0000000..ab30100 Binary files /dev/null and b/_static/fonts/0053ba6958e79f26751eabb555bd73d0.woff2 differ diff --git a/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 b/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 new file mode 100644 index 0000000..09e03c9 Binary files /dev/null and b/_static/fonts/029e176ad602329b4434892101db9cf3.woff2 differ diff --git a/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 b/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 new file mode 100644 index 0000000..d338178 Binary files /dev/null and b/_static/fonts/07ff82964967feebb9c96288e0e0df05.woff2 differ diff --git a/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 b/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 new file mode 100644 index 0000000..6b0b4af Binary files /dev/null and b/_static/fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2 differ diff --git a/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 b/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 new file mode 100644 index 0000000..f477fda Binary files /dev/null and b/_static/fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2 differ diff --git a/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 b/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 new file mode 100644 index 0000000..9a378af Binary files /dev/null and b/_static/fonts/0b68e8634c96265eb32a0c769416b5b0.woff2 differ diff --git a/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 b/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 new file mode 100644 index 0000000..48a8c10 Binary files /dev/null and b/_static/fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2 differ diff --git a/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 b/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 new file mode 100644 index 0000000..6aa2845 Binary files /dev/null and b/_static/fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2 differ diff --git a/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf b/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf new file mode 100644 index 0000000..fbb5625 Binary files /dev/null and b/_static/fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf differ diff --git a/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 b/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 new file mode 100644 index 0000000..5b0171c Binary files /dev/null and b/_static/fonts/0ec3cc19652785204ea2e322330f0f1b.woff2 differ diff --git a/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 b/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 new file mode 100644 index 0000000..71c9bb7 Binary files /dev/null and b/_static/fonts/0f303f31706d39866cced9dcc17b61fb.woff2 differ diff --git a/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 b/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 new file mode 100644 index 0000000..186d998 Binary files /dev/null and b/_static/fonts/101522bafe9c61c68698ecc784607772.woff2 differ diff --git a/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 b/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 new file mode 100644 index 0000000..02a27ea Binary files /dev/null and b/_static/fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2 differ diff --git a/_static/fonts/1181a8e619707033241139715eca64c6.woff2 b/_static/fonts/1181a8e619707033241139715eca64c6.woff2 new file mode 100644 index 0000000..59ed385 Binary files /dev/null and b/_static/fonts/1181a8e619707033241139715eca64c6.woff2 differ diff --git a/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 b/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 new file mode 100644 index 0000000..40b9fda Binary files /dev/null and b/_static/fonts/122802d03aed4bf8cd6a03997a97aca4.woff2 differ diff --git a/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 b/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 new file mode 100644 index 0000000..d953103 Binary files /dev/null and b/_static/fonts/1383417807f7965daaf94e7c497dcddb.woff2 differ diff --git a/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 b/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 new file mode 100644 index 0000000..508baef Binary files /dev/null and b/_static/fonts/144860ed1e48e186f08997e6388a9c3f.woff2 differ diff --git a/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 b/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 new file mode 100644 index 0000000..bdad3df Binary files /dev/null and b/_static/fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2 differ diff --git a/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf b/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf new file mode 100644 index 0000000..1a6895d Binary files /dev/null and b/_static/fonts/1512b579343c6b61c7523cdd838d8328.ttf differ diff --git a/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 b/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 new file mode 100644 index 0000000..cb9bfa7 Binary files /dev/null and b/_static/fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2 differ diff --git a/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 b/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 new file mode 100644 index 0000000..6d458ad Binary files /dev/null and b/_static/fonts/1f1481679a64a39f3427547aa1b13f0f.woff2 differ diff --git a/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf b/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf new file mode 100644 index 0000000..2cf147e Binary files /dev/null and b/_static/fonts/2096d27efc16cbdd79183bf295c8ebde.ttf differ diff --git a/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 b/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 new file mode 100644 index 0000000..87711c0 Binary files /dev/null and b/_static/fonts/20dc200cc43ab904876fb0c1697ebe39.woff2 differ diff --git a/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 b/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 new file mode 100644 index 0000000..bc7e1b2 Binary files /dev/null and b/_static/fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2 differ diff --git a/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 b/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 new file mode 100644 index 0000000..d4ec189 Binary files /dev/null and b/_static/fonts/21953b998bab09c1f60c599caee56378.woff2 differ diff --git a/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 b/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 new file mode 100644 index 0000000..2950a77 Binary files /dev/null and b/_static/fonts/22aadc77cafa07b2db9ed560d0320616.woff2 differ diff --git a/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 b/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 new file mode 100644 index 0000000..51c88fd Binary files /dev/null and b/_static/fonts/2325b97b584755067ea4f7f56ee05430.woff2 differ diff --git a/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 b/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 new file mode 100644 index 0000000..81848e2 Binary files /dev/null and b/_static/fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2 differ diff --git a/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 b/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 new file mode 100644 index 0000000..7e93187 Binary files /dev/null and b/_static/fonts/255cf41e0317d95e3992683a76ef28a8.woff2 differ diff --git a/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 b/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 new file mode 100644 index 0000000..544eddc Binary files /dev/null and b/_static/fonts/25c52b9af13f0d1b10719f5289e8c803.woff2 differ diff --git a/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 b/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 new file mode 100644 index 0000000..cf61b88 Binary files /dev/null and b/_static/fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2 differ diff --git a/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf b/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf new file mode 100644 index 0000000..d745504 Binary files /dev/null and b/_static/fonts/28e6b81b1bc1964707edd4179e4268f5.ttf differ diff --git a/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 b/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 new file mode 100644 index 0000000..c8091bc Binary files /dev/null and b/_static/fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2 differ diff --git a/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf b/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf new file mode 100644 index 0000000..64fca94 Binary files /dev/null and b/_static/fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf differ diff --git a/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 b/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 new file mode 100644 index 0000000..8c63b51 Binary files /dev/null and b/_static/fonts/2c0f74be498d2da814c0a84dd6833f70.woff2 differ diff --git a/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 b/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 new file mode 100644 index 0000000..1f579aa Binary files /dev/null and b/_static/fonts/2e10480d4154762bc7c8fbb40877e104.woff2 differ diff --git a/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 b/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 new file mode 100644 index 0000000..e0d3c43 Binary files /dev/null and b/_static/fonts/2ea7a97b7c976b121112a088eb398561.woff2 differ diff --git a/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf b/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf new file mode 100644 index 0000000..ea5c8fe Binary files /dev/null and b/_static/fonts/2f5c32f094829c0278bce28fe2bbe074.ttf differ diff --git a/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 b/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 new file mode 100644 index 0000000..4b7a373 Binary files /dev/null and b/_static/fonts/2f7c3c315334a99574ee4ceb21af654d.woff2 differ diff --git a/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf b/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf new file mode 100644 index 0000000..d25425d Binary files /dev/null and b/_static/fonts/302b0425bf5ea66f37a822a61d723adc.ttf differ diff --git a/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 b/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 new file mode 100644 index 0000000..c5776a5 Binary files /dev/null and b/_static/fonts/3177dacffeac1eb4102852811ae4a2c7.woff2 differ diff --git a/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf b/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf new file mode 100644 index 0000000..9c48d22 Binary files /dev/null and b/_static/fonts/3254c528e2ab56454a9f22191035c5fe.ttf differ diff --git a/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 b/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 new file mode 100644 index 0000000..53d081f Binary files /dev/null and b/_static/fonts/32c8a74ac0816253d69a7cc68a60986d.woff2 differ diff --git a/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 b/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 new file mode 100644 index 0000000..45eae25 Binary files /dev/null and b/_static/fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2 differ diff --git a/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 b/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 new file mode 100644 index 0000000..f3c5f6a Binary files /dev/null and b/_static/fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2 differ diff --git a/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 b/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 new file mode 100644 index 0000000..cb5834f Binary files /dev/null and b/_static/fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2 differ diff --git a/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf b/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf new file mode 100644 index 0000000..7c38f72 Binary files /dev/null and b/_static/fonts/38f3ee1f96b758f95672c632d8759594.ttf differ diff --git a/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 b/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 new file mode 100644 index 0000000..b1dc168 Binary files /dev/null and b/_static/fonts/392ff374142585f7b886ee1fe66e686e.woff2 differ diff --git a/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 b/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 new file mode 100644 index 0000000..53b8d0d Binary files /dev/null and b/_static/fonts/3a38c967413f7bce36d3baefc321aade.woff2 differ diff --git a/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 b/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 new file mode 100644 index 0000000..8a8de61 Binary files /dev/null and b/_static/fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2 differ diff --git a/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 b/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 new file mode 100644 index 0000000..6399552 Binary files /dev/null and b/_static/fonts/3c505383d37d2078648e37868bbd1fad.woff2 differ diff --git a/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 b/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 new file mode 100644 index 0000000..59cab0f Binary files /dev/null and b/_static/fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2 differ diff --git a/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 b/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 new file mode 100644 index 0000000..99b1da1 Binary files /dev/null and b/_static/fonts/3f1918538864f9681d47a4538d48289c.woff2 differ diff --git a/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 b/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 new file mode 100644 index 0000000..45f222c Binary files /dev/null and b/_static/fonts/4039566f251699c4b421ed1a38a59b24.woff2 differ diff --git a/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 b/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 new file mode 100644 index 0000000..8ab9171 Binary files /dev/null and b/_static/fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2 differ diff --git a/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 b/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 new file mode 100644 index 0000000..1f38418 Binary files /dev/null and b/_static/fonts/43358c04243de546caddd0898dbf0757.woff2 differ diff --git a/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 b/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 new file mode 100644 index 0000000..0f6e60b Binary files /dev/null and b/_static/fonts/435e4b7f9f250d9d9243d4754799fc96.woff2 differ diff --git a/_static/fonts/437939342255944b82a49f916404c5fc.woff2 b/_static/fonts/437939342255944b82a49f916404c5fc.woff2 new file mode 100644 index 0000000..0bb2706 Binary files /dev/null and b/_static/fonts/437939342255944b82a49f916404c5fc.woff2 differ diff --git a/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 b/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 new file mode 100644 index 0000000..b289f00 Binary files /dev/null and b/_static/fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2 differ diff --git a/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 b/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 new file mode 100644 index 0000000..9d7fb7f Binary files /dev/null and b/_static/fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2 differ diff --git a/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 b/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 new file mode 100644 index 0000000..47da362 Binary files /dev/null and b/_static/fonts/495d38d4b9741e8aa4204002414069e2.woff2 differ diff --git a/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 b/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 new file mode 100644 index 0000000..997a45c Binary files /dev/null and b/_static/fonts/4c815fdc869f885520f7c8eae6730edf.woff2 differ diff --git a/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 b/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 new file mode 100644 index 0000000..3c45011 Binary files /dev/null and b/_static/fonts/4ec57f2a80b91090971b83970230ca09.woff2 differ diff --git a/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 b/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 new file mode 100644 index 0000000..fb22fec Binary files /dev/null and b/_static/fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2 differ diff --git a/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 b/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 new file mode 100644 index 0000000..de10a3c Binary files /dev/null and b/_static/fonts/4f93c2808e3b69e525c118074e5de31f.woff2 differ diff --git a/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 b/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 new file mode 100644 index 0000000..2e71425 Binary files /dev/null and b/_static/fonts/50aacf068f685be0dd903a91d5bab7d8.woff2 differ diff --git a/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 b/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 new file mode 100644 index 0000000..c009987 Binary files /dev/null and b/_static/fonts/51f3f41805329fb8341beb56ded833ea.woff2 differ diff --git a/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 b/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 new file mode 100644 index 0000000..a0f4418 Binary files /dev/null and b/_static/fonts/52f28cb4d065b4adfa78df4f9559c639.woff2 differ diff --git a/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 b/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 new file mode 100644 index 0000000..3df1d8a Binary files /dev/null and b/_static/fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2 differ diff --git a/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 b/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 new file mode 100644 index 0000000..100e81a Binary files /dev/null and b/_static/fonts/5989ef3a21d7f252337ab3326f78bde7.woff2 differ diff --git a/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 b/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 new file mode 100644 index 0000000..a0d68e2 Binary files /dev/null and b/_static/fonts/5b6377da4c959db6d4b22738a27f1bee.woff2 differ diff --git a/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 b/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 new file mode 100644 index 0000000..f496f9e Binary files /dev/null and b/_static/fonts/5ce47d5195e59af38114d0b70217baf2.woff2 differ diff --git a/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 b/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 new file mode 100644 index 0000000..dd5a4a2 Binary files /dev/null and b/_static/fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2 differ diff --git a/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 b/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 new file mode 100644 index 0000000..c2862d7 Binary files /dev/null and b/_static/fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2 differ diff --git a/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 b/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 new file mode 100644 index 0000000..6a258ac Binary files /dev/null and b/_static/fonts/60eb682678bbea5e8ad71f66f2f65536.woff2 differ diff --git a/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 b/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 new file mode 100644 index 0000000..fecc185 Binary files /dev/null and b/_static/fonts/63111d307c01b52ffccf7b0319cb7917.woff2 differ diff --git a/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 b/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 new file mode 100644 index 0000000..122ac2c Binary files /dev/null and b/_static/fonts/638764dc2513deb09c55fc025f6dd36c.woff2 differ diff --git a/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 b/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 new file mode 100644 index 0000000..00a4a4b Binary files /dev/null and b/_static/fonts/63f4b74ebf127dbeb033126ea988f54e.woff2 differ diff --git a/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 b/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 new file mode 100644 index 0000000..edfc6cd Binary files /dev/null and b/_static/fonts/64a6b4e954cf84685cbf8de77eb47344.woff2 differ diff --git a/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 b/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 new file mode 100644 index 0000000..ae1933f Binary files /dev/null and b/_static/fonts/661d4b208656c006e7aab58acf778485.woff2 differ diff --git a/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 b/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 new file mode 100644 index 0000000..ece005f Binary files /dev/null and b/_static/fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2 differ diff --git a/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 b/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 new file mode 100644 index 0000000..1bb7737 Binary files /dev/null and b/_static/fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2 differ diff --git a/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf b/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf new file mode 100644 index 0000000..3e69acb Binary files /dev/null and b/_static/fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf differ diff --git a/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf b/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf new file mode 100644 index 0000000..563f449 Binary files /dev/null and b/_static/fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf differ diff --git a/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 b/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 new file mode 100644 index 0000000..a56a6ed Binary files /dev/null and b/_static/fonts/6be97ca17228a69c406231d89c003194.woff2 differ diff --git a/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf b/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf new file mode 100644 index 0000000..604934a Binary files /dev/null and b/_static/fonts/6de03a64aa8100032abc6e836b3ed803.ttf differ diff --git a/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 b/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 new file mode 100644 index 0000000..cbe564b Binary files /dev/null and b/_static/fonts/6deb20301c65a96db17c433ad0cf8158.woff2 differ diff --git a/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 b/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 new file mode 100644 index 0000000..92fe38d Binary files /dev/null and b/_static/fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2 differ diff --git a/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 b/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 new file mode 100644 index 0000000..0933dfe Binary files /dev/null and b/_static/fonts/713780d8b30bda5583052ea847cdcb4f.woff2 differ diff --git a/_static/fonts/71e06579279fba7436d58a1c49288909.ttf b/_static/fonts/71e06579279fba7436d58a1c49288909.ttf new file mode 100644 index 0000000..454e5d0 Binary files /dev/null and b/_static/fonts/71e06579279fba7436d58a1c49288909.ttf differ diff --git a/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf b/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf new file mode 100644 index 0000000..10f8720 Binary files /dev/null and b/_static/fonts/765bd4a97597a4d7781193793477a6cd.ttf differ diff --git a/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 b/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 new file mode 100644 index 0000000..943c5a0 Binary files /dev/null and b/_static/fonts/76945c7494c20515bb45d1dedab8f706.woff2 differ diff --git a/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 b/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 new file mode 100644 index 0000000..9eda94a Binary files /dev/null and b/_static/fonts/76da333ab59c6d625cabfb0768f82b4a.woff2 differ diff --git a/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 b/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 new file mode 100644 index 0000000..c0f0f73 Binary files /dev/null and b/_static/fonts/770518db51bed1e082feecc532cfcbf8.woff2 differ diff --git a/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 b/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 new file mode 100644 index 0000000..6284d2e Binary files /dev/null and b/_static/fonts/77b24796a3d4ab521f66765651875338.woff2 differ diff --git a/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 b/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 new file mode 100644 index 0000000..dd0851d Binary files /dev/null and b/_static/fonts/77ff81100e5a1db3d925f713660700ad.woff2 differ diff --git a/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 b/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 new file mode 100644 index 0000000..be81ddf Binary files /dev/null and b/_static/fonts/78a9265759e7b861a1639a36f4c01d04.woff2 differ diff --git a/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 b/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 new file mode 100644 index 0000000..e0d4123 Binary files /dev/null and b/_static/fonts/7af61b2367eba2b1852e837c46a75696.woff2 differ diff --git a/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 b/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 new file mode 100644 index 0000000..ff1f96d Binary files /dev/null and b/_static/fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2 differ diff --git a/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 b/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 new file mode 100644 index 0000000..66efc25 Binary files /dev/null and b/_static/fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2 differ diff --git a/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 b/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 new file mode 100644 index 0000000..067cb32 Binary files /dev/null and b/_static/fonts/7e262106f82cc52663e403f5b73795bb.woff2 differ diff --git a/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 b/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 new file mode 100644 index 0000000..68f094c Binary files /dev/null and b/_static/fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2 differ diff --git a/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf b/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf new file mode 100644 index 0000000..13a7f42 Binary files /dev/null and b/_static/fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf differ diff --git a/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 b/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 new file mode 100644 index 0000000..11c7018 Binary files /dev/null and b/_static/fonts/8007dfe835cfb201b8caaa9651098588.woff2 differ diff --git a/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 b/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 new file mode 100644 index 0000000..e836b51 Binary files /dev/null and b/_static/fonts/83614c36460a4a9734968789cb535de7.woff2 differ diff --git a/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf b/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf new file mode 100644 index 0000000..99c5795 Binary files /dev/null and b/_static/fonts/84e959dd07f302392f0ffd86f87db888.ttf differ diff --git a/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 b/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 new file mode 100644 index 0000000..8a81a2f Binary files /dev/null and b/_static/fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2 differ diff --git a/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 b/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 new file mode 100644 index 0000000..ef9a2bd Binary files /dev/null and b/_static/fonts/870e5928dd14fcfe0ce9386107666774.woff2 differ diff --git a/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 b/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 new file mode 100644 index 0000000..6b05020 Binary files /dev/null and b/_static/fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2 differ diff --git a/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf b/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf new file mode 100644 index 0000000..57a6dc3 Binary files /dev/null and b/_static/fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf differ diff --git a/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 b/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 new file mode 100644 index 0000000..9756ba7 Binary files /dev/null and b/_static/fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2 differ diff --git a/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf b/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf new file mode 100644 index 0000000..68ff2a4 Binary files /dev/null and b/_static/fonts/8aa562790559d61dd5178a88a296d70f.ttf differ diff --git a/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 b/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 new file mode 100644 index 0000000..72fc021 Binary files /dev/null and b/_static/fonts/8c3798e37724f71bc0c63c44a5307413.woff2 differ diff --git a/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf b/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf new file mode 100644 index 0000000..9c039d6 Binary files /dev/null and b/_static/fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf differ diff --git a/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 b/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 new file mode 100644 index 0000000..f8d7a0d Binary files /dev/null and b/_static/fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2 differ diff --git a/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 b/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 new file mode 100644 index 0000000..472bf5a Binary files /dev/null and b/_static/fonts/9095d663e4d450059bcc2260bb75cd62.woff2 differ diff --git a/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 b/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 new file mode 100644 index 0000000..5fd1029 Binary files /dev/null and b/_static/fonts/90ebb29b5cffa197b184773983ba7e91.woff2 differ diff --git a/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 b/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 new file mode 100644 index 0000000..cb00b8b Binary files /dev/null and b/_static/fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2 differ diff --git a/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 b/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 new file mode 100644 index 0000000..ef920e5 Binary files /dev/null and b/_static/fonts/9582ced8a675bf267cc7ac392a86413e.woff2 differ diff --git a/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 b/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 new file mode 100644 index 0000000..3f7f93a Binary files /dev/null and b/_static/fonts/99be4d68845d66c27c7f7d3a48687b66.woff2 differ diff --git a/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 b/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 new file mode 100644 index 0000000..663ec4c Binary files /dev/null and b/_static/fonts/99cf36e763be9cce7b4c59b91841af58.woff2 differ diff --git a/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 b/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 new file mode 100644 index 0000000..d0c5aa5 Binary files /dev/null and b/_static/fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2 differ diff --git a/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 b/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 new file mode 100644 index 0000000..3f060b3 Binary files /dev/null and b/_static/fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2 differ diff --git a/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 b/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 new file mode 100644 index 0000000..2f2cacd Binary files /dev/null and b/_static/fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2 differ diff --git a/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 b/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 new file mode 100644 index 0000000..1d173f2 Binary files /dev/null and b/_static/fonts/9fdb12ceee3a402d3a54afe354552459.woff2 differ diff --git a/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 b/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 new file mode 100644 index 0000000..dd587a2 Binary files /dev/null and b/_static/fonts/a6933e678530b263486fa7b185a449ca.woff2 differ diff --git a/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 b/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 new file mode 100644 index 0000000..9213da0 Binary files /dev/null and b/_static/fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2 differ diff --git a/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 b/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 new file mode 100644 index 0000000..c932cd4 Binary files /dev/null and b/_static/fonts/a70ff2592da5e3453943f727633aff54.woff2 differ diff --git a/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 b/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 new file mode 100644 index 0000000..cce41ce Binary files /dev/null and b/_static/fonts/aa28d99c7db60ad23f96a5c317615c42.woff2 differ diff --git a/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 b/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 new file mode 100644 index 0000000..c8ab3b2 Binary files /dev/null and b/_static/fonts/aab05142e0e2dadf7df633e061e612ad.woff2 differ diff --git a/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 b/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 new file mode 100644 index 0000000..477887e Binary files /dev/null and b/_static/fonts/ab03beb9091fa15ce4e783199e076bc6.woff2 differ diff --git a/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf b/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf new file mode 100644 index 0000000..aa6a46d Binary files /dev/null and b/_static/fonts/ac848474638236e67a64bc654fb18de0.ttf differ diff --git a/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 b/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 new file mode 100644 index 0000000..c88b8ae Binary files /dev/null and b/_static/fonts/acaac043ca238f0e56e61864456777fa.woff2 differ diff --git a/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 b/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 new file mode 100644 index 0000000..8571683 Binary files /dev/null and b/_static/fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2 differ diff --git a/_static/fonts/b019538234514166ec7665359d097403.woff2 b/_static/fonts/b019538234514166ec7665359d097403.woff2 new file mode 100644 index 0000000..29342a8 Binary files /dev/null and b/_static/fonts/b019538234514166ec7665359d097403.woff2 differ diff --git a/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 b/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 new file mode 100644 index 0000000..91231c9 Binary files /dev/null and b/_static/fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2 differ diff --git a/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 b/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 new file mode 100644 index 0000000..4ccadd1 Binary files /dev/null and b/_static/fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2 differ diff --git a/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 b/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 new file mode 100644 index 0000000..38d4c74 Binary files /dev/null and b/_static/fonts/b4d3c40a77fd9e35a881a79077957055.woff2 differ diff --git a/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 b/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 new file mode 100644 index 0000000..ee64c93 Binary files /dev/null and b/_static/fonts/b4e42731e8d667ae87c3450c345754ae.woff2 differ diff --git a/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 b/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 new file mode 100644 index 0000000..18c3f12 Binary files /dev/null and b/_static/fonts/b57a5ada789f195d5d42f4073a6cf313.woff2 differ diff --git a/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 b/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 new file mode 100644 index 0000000..a4699c7 Binary files /dev/null and b/_static/fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2 differ diff --git a/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 b/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 new file mode 100644 index 0000000..22ddee9 Binary files /dev/null and b/_static/fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2 differ diff --git a/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 b/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 new file mode 100644 index 0000000..fa67bec Binary files /dev/null and b/_static/fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2 differ diff --git a/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 b/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 new file mode 100644 index 0000000..22c57b0 Binary files /dev/null and b/_static/fonts/bb8007225d94a099cddbade7ea904667.woff2 differ diff --git a/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf b/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf new file mode 100644 index 0000000..ce5a525 Binary files /dev/null and b/_static/fonts/bc67bba106323289ea3eda0826de1912.ttf differ diff --git a/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 b/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 new file mode 100644 index 0000000..20eb7ec Binary files /dev/null and b/_static/fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2 differ diff --git a/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 b/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 new file mode 100644 index 0000000..2900346 Binary files /dev/null and b/_static/fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2 differ diff --git a/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 b/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 new file mode 100644 index 0000000..0f11176 Binary files /dev/null and b/_static/fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2 differ diff --git a/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 b/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 new file mode 100644 index 0000000..6363b1c Binary files /dev/null and b/_static/fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2 differ diff --git a/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf b/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf new file mode 100644 index 0000000..99e1e89 Binary files /dev/null and b/_static/fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf differ diff --git a/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 b/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 new file mode 100644 index 0000000..27773c9 Binary files /dev/null and b/_static/fonts/bfd1a0c9c783e84595589f33e1828a57.woff2 differ diff --git a/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 b/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 new file mode 100644 index 0000000..b2ffb56 Binary files /dev/null and b/_static/fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2 differ diff --git a/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 b/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 new file mode 100644 index 0000000..7148fac Binary files /dev/null and b/_static/fonts/c22066c14662d6c80415ae04c5dd9d51.woff2 differ diff --git a/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 b/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 new file mode 100644 index 0000000..fcadc91 Binary files /dev/null and b/_static/fonts/c28a41f656599f6694528b5463c6a445.woff2 differ diff --git a/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf b/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf new file mode 100644 index 0000000..7a8b630 Binary files /dev/null and b/_static/fonts/c6dc61b627bbc5af9130518297bd4f17.ttf differ diff --git a/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 b/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 new file mode 100644 index 0000000..d2f30b5 Binary files /dev/null and b/_static/fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2 differ diff --git a/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 b/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 new file mode 100644 index 0000000..24a1bfd Binary files /dev/null and b/_static/fonts/ca7eea0cf248d6e8442c01074765bd33.woff2 differ diff --git a/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf b/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf new file mode 100644 index 0000000..4242da4 Binary files /dev/null and b/_static/fonts/cadfb311297a9362b07fab73934b432a.ttf differ diff --git a/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 b/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 new file mode 100644 index 0000000..65687e7 Binary files /dev/null and b/_static/fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2 differ diff --git a/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 b/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 new file mode 100644 index 0000000..6abf54d Binary files /dev/null and b/_static/fonts/ccdebed88064e470c15f37c432922e57.woff2 differ diff --git a/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 b/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 new file mode 100644 index 0000000..b8dff97 Binary files /dev/null and b/_static/fonts/cce2217cc8323fe49789adefb3596291.woff2 differ diff --git a/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 b/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 new file mode 100644 index 0000000..93cd525 Binary files /dev/null and b/_static/fonts/cd3d1f17e048e2116f438bd7157baccf.woff2 differ diff --git a/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 b/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 new file mode 100644 index 0000000..bfa05a0 Binary files /dev/null and b/_static/fonts/d07f561ba87d93460742b060727d9e0d.woff2 differ diff --git a/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 b/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 new file mode 100644 index 0000000..72ce0e9 Binary files /dev/null and b/_static/fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2 differ diff --git a/_static/fonts/d422317033deb87342a5e56c7be67458.ttf b/_static/fonts/d422317033deb87342a5e56c7be67458.ttf new file mode 100644 index 0000000..6a9fc93 Binary files /dev/null and b/_static/fonts/d422317033deb87342a5e56c7be67458.ttf differ diff --git a/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 b/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 new file mode 100644 index 0000000..b9cee29 Binary files /dev/null and b/_static/fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2 differ diff --git a/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf b/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf new file mode 100644 index 0000000..11a1e9f Binary files /dev/null and b/_static/fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf differ diff --git a/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 b/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 new file mode 100644 index 0000000..0b792b0 Binary files /dev/null and b/_static/fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2 differ diff --git a/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 b/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 new file mode 100644 index 0000000..fe8fcec Binary files /dev/null and b/_static/fonts/da6cd48e6dad1888fccc91735e7522f7.woff2 differ diff --git a/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 b/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 new file mode 100644 index 0000000..3d0f604 Binary files /dev/null and b/_static/fonts/daf12b5f1889502004bba85ad71f9fa4.woff2 differ diff --git a/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 b/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 new file mode 100644 index 0000000..fc71d94 Binary files /dev/null and b/_static/fonts/daf51ab540602b2d0b87646621637bac.woff2 differ diff --git a/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 b/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 new file mode 100644 index 0000000..e1b7a79 Binary files /dev/null and b/_static/fonts/db0424fb67fb52e7e538490240cc7fb9.woff2 differ diff --git a/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 b/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 new file mode 100644 index 0000000..75d29cf Binary files /dev/null and b/_static/fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2 differ diff --git a/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 b/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 new file mode 100644 index 0000000..4481927 Binary files /dev/null and b/_static/fonts/dd719f1662079ce6a61260f9af972379.woff2 differ diff --git a/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 b/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 new file mode 100644 index 0000000..a181dfe Binary files /dev/null and b/_static/fonts/de018865c95896bb57265fc97c48ebd7.woff2 differ diff --git a/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 b/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 new file mode 100644 index 0000000..b2391b9 Binary files /dev/null and b/_static/fonts/e33716333704ab19fdf9989e072ad49a.woff2 differ diff --git a/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 b/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 new file mode 100644 index 0000000..9997e98 Binary files /dev/null and b/_static/fonts/e56cc9fb5272752b78f144b4be43175d.woff2 differ diff --git a/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 b/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 new file mode 100644 index 0000000..bfcc76f Binary files /dev/null and b/_static/fonts/e704ef18719c08839bc99a32437ef0f8.woff2 differ diff --git a/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 b/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 new file mode 100644 index 0000000..677de8b Binary files /dev/null and b/_static/fonts/e99627cd27de169d23ece4573006af2a.woff2 differ diff --git a/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 b/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 new file mode 100644 index 0000000..064e94b Binary files /dev/null and b/_static/fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2 differ diff --git a/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 b/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 new file mode 100644 index 0000000..074504d Binary files /dev/null and b/_static/fonts/f154d62b4879af7a22895af7a4ef03f0.woff2 differ diff --git a/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 b/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 new file mode 100644 index 0000000..0bfb07d Binary files /dev/null and b/_static/fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2 differ diff --git a/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 b/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 new file mode 100644 index 0000000..f041fde Binary files /dev/null and b/_static/fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2 differ diff --git a/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 b/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 new file mode 100644 index 0000000..5b19d60 Binary files /dev/null and b/_static/fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2 differ diff --git a/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 b/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 new file mode 100644 index 0000000..23fcdf3 Binary files /dev/null and b/_static/fonts/f534242dea2255c25b9d05c2371986e3.woff2 differ diff --git a/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 b/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 new file mode 100644 index 0000000..2bfc2ce Binary files /dev/null and b/_static/fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2 differ diff --git a/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 b/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 new file mode 100644 index 0000000..481279c Binary files /dev/null and b/_static/fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2 differ diff --git a/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 b/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 new file mode 100644 index 0000000..771fbec Binary files /dev/null and b/_static/fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2 differ diff --git a/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 b/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 new file mode 100644 index 0000000..d87fe26 Binary files /dev/null and b/_static/fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2 differ diff --git a/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 b/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 new file mode 100644 index 0000000..020729e Binary files /dev/null and b/_static/fonts/f6734f8177112c0839b961f96d813fcb.woff2 differ diff --git a/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 b/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 new file mode 100644 index 0000000..6068138 Binary files /dev/null and b/_static/fonts/f75911313e1c7802c23345ab57e754d8.woff2 differ diff --git a/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 b/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 new file mode 100644 index 0000000..4487ab7 Binary files /dev/null and b/_static/fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2 differ diff --git a/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 b/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 new file mode 100644 index 0000000..1351aad Binary files /dev/null and b/_static/fonts/fb1aaa90783b8cb9375265abeb91b153.woff2 differ diff --git a/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 b/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 new file mode 100644 index 0000000..94ab5fb Binary files /dev/null and b/_static/fonts/fc66f942651a9fe1a598770d3d896529.woff2 differ diff --git a/_static/ip.out b/_static/ip.out new file mode 100644 index 0000000..2bce24d --- /dev/null +++ b/_static/ip.out @@ -0,0 +1,22 @@ +1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever +2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 + link/ether 7c:1e:52:25:ba:8b brd ff:ff:ff:ff:ff:ff + inet 10.1.0.163/16 metric 100 brd 10.1.255.255 scope global eth0 + valid_lft forever preferred_lft forever + inet6 fe80::7e1e:52ff:fe25:ba8b/64 scope link + valid_lft forever preferred_lft forever +3: docker0: mtu 1500 qdisc noqueue state DOWN group default + link/ether 02:42:0a:a4:c2:5d brd ff:ff:ff:ff:ff:ff + inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 + valid_lft forever preferred_lft forever +4: tap0: mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000 + link/ether a2:df:12:7a:1a:c0 brd ff:ff:ff:ff:ff:ff + inet 172.16.0.1/16 scope global tap0 + valid_lft forever preferred_lft forever + inet6 fe80::a0df:12ff:fe7a:1ac0/64 scope link + valid_lft forever preferred_lft forever diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..250f566 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/sphinx_immaterial_theme.1b5b7a2d5891aec19.min.js b/_static/sphinx_immaterial_theme.1b5b7a2d5891aec19.min.js new file mode 100644 index 0000000..ec77f5d --- /dev/null +++ b/_static/sphinx_immaterial_theme.1b5b7a2d5891aec19.min.js @@ -0,0 +1,27 @@ +"use strict";(()=>{var aa=Object.create;var wr=Object.defineProperty;var sa=Object.getOwnPropertyDescriptor;var ca=Object.getOwnPropertyNames,Rt=Object.getOwnPropertySymbols,fa=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable;var mn=(e,t,r)=>t in e?wr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,V=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&mn(e,r,t[r]);if(Rt)for(var r of Rt(t))dn.call(t,r)&&mn(e,r,t[r]);return e};var hn=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Rt)for(var n of Rt(e))t.indexOf(n)<0&&dn.call(e,n)&&(r[n]=e[n]);return r};var vt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var la=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ca(t))!Er.call(e,o)&&o!==r&&wr(e,o,{get:()=>t[o],enumerable:!(n=sa(t,o))||n.enumerable});return e};var Je=(e,t,r)=>(r=e!=null?aa(fa(e)):{},la(t||!e||!e.__esModule?wr(r,"default",{value:e,enumerable:!0}):r,e));var ze=(e,t,r)=>new Promise((n,o)=>{var i=s=>{try{c(r.next(s))}catch(f){o(f)}},a=s=>{try{c(r.throw(s))}catch(f){o(f)}},c=s=>s.done?n(s.value):Promise.resolve(s.value).then(i,a);c((r=r.apply(e,t)).next())});var vn=vt((Sr,bn)=>{(function(e,t){typeof Sr=="object"&&typeof bn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(Sr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function c(y){return!!(y&&y!==document&&y.nodeName!=="HTML"&&y.nodeName!=="BODY"&&"classList"in y&&"contains"in y.classList)}function s(y){var Te=y.type,Le=y.tagName;return!!(Le==="INPUT"&&a[Te]&&!y.readOnly||Le==="TEXTAREA"&&!y.readOnly||y.isContentEditable)}function f(y){y.classList.contains("focus-visible")||(y.classList.add("focus-visible"),y.setAttribute("data-focus-visible-added",""))}function u(y){!y.hasAttribute("data-focus-visible-added")||(y.classList.remove("focus-visible"),y.removeAttribute("data-focus-visible-added"))}function l(y){y.metaKey||y.altKey||y.ctrlKey||(c(r.activeElement)&&f(r.activeElement),n=!0)}function p(y){n=!1}function m(y){!c(y.target)||(n||s(y.target))&&f(y.target)}function h(y){!c(y.target)||(y.target.classList.contains("focus-visible")||y.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(y.target))}function b(y){document.visibilityState==="hidden"&&(o&&(n=!0),w())}function w(){document.addEventListener("mousemove",$),document.addEventListener("mousedown",$),document.addEventListener("mouseup",$),document.addEventListener("pointermove",$),document.addEventListener("pointerdown",$),document.addEventListener("pointerup",$),document.addEventListener("touchmove",$),document.addEventListener("touchstart",$),document.addEventListener("touchend",$)}function q(){document.removeEventListener("mousemove",$),document.removeEventListener("mousedown",$),document.removeEventListener("mouseup",$),document.removeEventListener("pointermove",$),document.removeEventListener("pointerdown",$),document.removeEventListener("pointerup",$),document.removeEventListener("touchmove",$),document.removeEventListener("touchstart",$),document.removeEventListener("touchend",$)}function $(y){y.target.nodeName&&y.target.nodeName.toLowerCase()==="html"||(n=!1,q())}document.addEventListener("keydown",l,!0),document.addEventListener("mousedown",p,!0),document.addEventListener("pointerdown",p,!0),document.addEventListener("touchstart",p,!0),document.addEventListener("visibilitychange",b,!0),w(),r.addEventListener("focus",m,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var gn=vt(Or=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(f){return!1}},r=t(),n=function(f){var u={next:function(){var l=f.shift();return{done:l===void 0,value:l}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(f){return encodeURIComponent(f).replace(/%20/g,"+")},i=function(f){return decodeURIComponent(String(f).replace(/\+/g," "))},a=function(){var f=function(l){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var p=typeof l;if(p!=="undefined")if(p==="string")l!==""&&this._fromString(l);else if(l instanceof f){var m=this;l.forEach(function(q,$){m.append($,q)})}else if(l!==null&&p==="object")if(Object.prototype.toString.call(l)==="[object Array]")for(var h=0;hm[0]?1:0}),f._entries&&(f._entries={});for(var l=0;l1?i(m[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(s,f){typeof s!="string"&&(s=String(s)),f&&typeof f!="string"&&(f=String(f));var u=document,l;if(f&&(e.location===void 0||f!==e.location.href)){f=f.toLowerCase(),u=document.implementation.createHTMLDocument(""),l=u.createElement("base"),l.href=f,u.head.appendChild(l);try{if(l.href.indexOf(f)!==0)throw new Error(l.href)}catch(y){throw new Error("URL unable to set base "+f+" due to "+y)}}var p=u.createElement("a");p.href=s,l&&(u.body.appendChild(p),p.href=p.href);var m=u.createElement("input");if(m.type="url",m.value=s,p.protocol===":"||!/:/.test(p.href)||!m.checkValidity()&&!f)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:p});var h=new e.URLSearchParams(this.search),b=!0,w=!0,q=this;["append","delete","set"].forEach(function(y){var Te=h[y];h[y]=function(){Te.apply(h,arguments),b&&(w=!1,q.search=h.toString(),w=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var $=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==$&&($=this.search,w&&(b=!1,this.searchParams._fromString(this.search),b=!0))}})},a=i.prototype,c=function(s){Object.defineProperty(a,s,{get:function(){return this._anchorElement[s]},set:function(f){this._anchorElement[s]=f},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(s){c(s)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(s){this._anchorElement.search=s,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var s=this;return function(){return s.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(s){this._anchorElement.href=s,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(s){this._anchorElement.pathname=s},enumerable:!0},origin:{get:function(){var s={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],f=this._anchorElement.port!=s&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(f?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(s){},enumerable:!0},username:{get:function(){return""},set:function(s){},enumerable:!0}}),i.createObjectURL=function(s){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(s){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Or)});var Un=vt((tc,Pt)=>{/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */var yn,xn,wn,En,Sn,On,_n,Tn,Ln,Ht,_r,Mn,An,Cn,it,Rn,Hn,kn,Pn,$n,In,jn,Fn,kt;(function(e){var t=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof Pt=="object"&&typeof Pt.exports=="object"?e(r(t,r(Pt.exports))):e(r(t));function r(n,o){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(i,a){return n[i]=o?o(i,a):a}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[i]=o[i])};yn=function(n,o){if(typeof o!="function"&&o!==null)throw new TypeError("Class extends value "+String(o)+" is not a constructor or null");t(n,o);function i(){this.constructor=n}n.prototype=o===null?Object.create(o):(i.prototype=o.prototype,new i)},xn=Object.assign||function(n){for(var o,i=1,a=arguments.length;i=0;u--)(f=n[u])&&(s=(c<3?f(s):c>3?f(o,i,s):f(o,i))||s);return c>3&&s&&Object.defineProperty(o,i,s),s},Sn=function(n,o){return function(i,a){o(i,a,n)}},On=function(n,o){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,o)},_n=function(n,o,i,a){function c(s){return s instanceof i?s:new i(function(f){f(s)})}return new(i||(i=Promise))(function(s,f){function u(m){try{p(a.next(m))}catch(h){f(h)}}function l(m){try{p(a.throw(m))}catch(h){f(h)}}function p(m){m.done?s(m.value):c(m.value).then(u,l)}p((a=a.apply(n,o||[])).next())})},Tn=function(n,o){var i={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},a,c,s,f;return f={next:u(0),throw:u(1),return:u(2)},typeof Symbol=="function"&&(f[Symbol.iterator]=function(){return this}),f;function u(p){return function(m){return l([p,m])}}function l(p){if(a)throw new TypeError("Generator is already executing.");for(;i;)try{if(a=1,c&&(s=p[0]&2?c.return:p[0]?c.throw||((s=c.return)&&s.call(c),0):c.next)&&!(s=s.call(c,p[1])).done)return s;switch(c=0,s&&(p=[p[0]&2,s.value]),p[0]){case 0:case 1:s=p;break;case 4:return i.label++,{value:p[1],done:!1};case 5:i.label++,c=p[1],p=[0];continue;case 7:p=i.ops.pop(),i.trys.pop();continue;default:if(s=i.trys,!(s=s.length>0&&s[s.length-1])&&(p[0]===6||p[0]===2)){i=0;continue}if(p[0]===3&&(!s||p[1]>s[0]&&p[1]=n.length&&(n=void 0),{value:n&&n[a++],done:!n}}};throw new TypeError(o?"Object is not iterable.":"Symbol.iterator is not defined.")},_r=function(n,o){var i=typeof Symbol=="function"&&n[Symbol.iterator];if(!i)return n;var a=i.call(n),c,s=[],f;try{for(;(o===void 0||o-- >0)&&!(c=a.next()).done;)s.push(c.value)}catch(u){f={error:u}}finally{try{c&&!c.done&&(i=a.return)&&i.call(a)}finally{if(f)throw f.error}}return s},Mn=function(){for(var n=[],o=0;o1||u(b,w)})})}function u(b,w){try{l(a[b](w))}catch(q){h(s[0][3],q)}}function l(b){b.value instanceof it?Promise.resolve(b.value.v).then(p,m):h(s[0][2],b)}function p(b){u("next",b)}function m(b){u("throw",b)}function h(b,w){b(w),s.shift(),s.length&&u(s[0][0],s[0][1])}},Hn=function(n){var o,i;return o={},a("next"),a("throw",function(c){throw c}),a("return"),o[Symbol.iterator]=function(){return this},o;function a(c,s){o[c]=n[c]?function(f){return(i=!i)?{value:it(n[c](f)),done:c==="return"}:s?s(f):f}:s}},kn=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o=n[Symbol.asyncIterator],i;return o?o.call(n):(n=typeof Ht=="function"?Ht(n):n[Symbol.iterator](),i={},a("next"),a("throw"),a("return"),i[Symbol.asyncIterator]=function(){return this},i);function a(s){i[s]=n[s]&&function(f){return new Promise(function(u,l){f=n[s](f),c(u,l,f.done,f.value)})}}function c(s,f,u,l){Promise.resolve(l).then(function(p){s({value:p,done:u})},f)}},Pn=function(n,o){return Object.defineProperty?Object.defineProperty(n,"raw",{value:o}):n.raw=o,n};var r=Object.create?function(n,o){Object.defineProperty(n,"default",{enumerable:!0,value:o})}:function(n,o){n.default=o};$n=function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i in n)i!=="default"&&Object.prototype.hasOwnProperty.call(n,i)&&kt(o,n,i);return r(o,n),o},In=function(n){return n&&n.__esModule?n:{default:n}},jn=function(n,o){if(!o.has(n))throw new TypeError("attempted to get private field on non-instance");return o.get(n)},Fn=function(n,o,i){if(!o.has(n))throw new TypeError("attempted to set private field on non-instance");return o.set(n,i),i},e("__extends",yn),e("__assign",xn),e("__rest",wn),e("__decorate",En),e("__param",Sn),e("__metadata",On),e("__awaiter",_n),e("__generator",Tn),e("__exportStar",Ln),e("__createBinding",kt),e("__values",Ht),e("__read",_r),e("__spread",Mn),e("__spreadArrays",An),e("__spreadArray",Cn),e("__await",it),e("__asyncGenerator",Rn),e("__asyncDelegator",Hn),e("__asyncValues",kn),e("__makeTemplateObject",Pn),e("__importStar",$n),e("__importDefault",In),e("__classPrivateFieldGet",jn),e("__classPrivateFieldSet",Fn)})});var Qr=vt((Lt,Jr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Lt=="object"&&typeof Jr=="object"?Jr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ia}});var a=i(279),c=i.n(a),s=i(370),f=i.n(s),u=i(817),l=i.n(u);function p(F){try{return document.execCommand(F)}catch(S){return!1}}var m=function(S){var E=l()(S);return p("cut"),E},h=m;function b(F){var S=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[S?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=F,E}var w=function(S,E){var H=b(S);E.container.appendChild(H);var j=l()(H);return p("copy"),H.remove(),j},q=function(S){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof S=="string"?H=w(S,E):S instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(S==null?void 0:S.type)?H=w(S.value,E):(H=l()(S),p("copy")),H},$=q;function y(F){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?y=function(E){return typeof E}:y=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},y(F)}var Te=function(){var S=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=S.action,H=E===void 0?"copy":E,j=S.container,K=S.target,Me=S.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(K!==void 0)if(K&&y(K)==="object"&&K.nodeType===1){if(H==="copy"&&K.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(K.hasAttribute("readonly")||K.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return $(Me,{container:j});if(K)return H==="cut"?h(K):$(K,{container:j})},Le=Te;function we(F){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?we=function(E){return typeof E}:we=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},we(F)}function Mt(F,S){if(!(F instanceof S))throw new TypeError("Cannot call a class as a function")}function ot(F,S){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof j.action=="function"?j.action:this.defaultAction,this.target=typeof j.target=="function"?j.target:this.defaultTarget,this.text=typeof j.text=="function"?j.text:this.defaultText,this.container=we(j.container)==="object"?j.container:document.body}},{key:"listenClick",value:function(j){var K=this;this.listener=f()(j,"click",function(Me){return K.onClick(Me)})}},{key:"onClick",value:function(j){var K=j.delegateTarget||j.currentTarget,Me=this.action(K)||"copy",Ct=Le({action:Me,container:this.container,target:this.target(K),text:this.text(K)});this.emit(Ct?"success":"error",{action:Me,text:Ct,trigger:K,clearSelection:function(){K&&K.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(j){return xr("action",j)}},{key:"defaultTarget",value:function(j){var K=xr("target",j);if(K)return document.querySelector(K)}},{key:"defaultText",value:function(j){return xr("text",j)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(j){var K=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return $(j,K)}},{key:"cut",value:function(j){return h(j)}},{key:"isSupported",value:function(){var j=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],K=typeof j=="string"?[j]:j,Me=!!document.queryCommandSupported;return K.forEach(function(Ct){Me=Me&&!!document.queryCommandSupported(Ct)}),Me}}]),E}(c()),ia=oa},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(c,s){for(;c&&c.nodeType!==o;){if(typeof c.matches=="function"&&c.matches(s))return c;c=c.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function c(u,l,p,m,h){var b=f.apply(this,arguments);return u.addEventListener(p,b,h),{destroy:function(){u.removeEventListener(p,b,h)}}}function s(u,l,p,m,h){return typeof u.addEventListener=="function"?c.apply(null,arguments):typeof p=="function"?c.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(b){return c(b,l,p,m,h)}))}function f(u,l,p,m){return function(h){h.delegateTarget=a(h.target,l),h.delegateTarget&&m.call(u,h)}}n.exports=s},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),c=i(438);function s(p,m,h){if(!p&&!m&&!h)throw new Error("Missing required arguments");if(!a.string(m))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(p))return f(p,m,h);if(a.nodeList(p))return u(p,m,h);if(a.string(p))return l(p,m,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function f(p,m,h){return p.addEventListener(m,h),{destroy:function(){p.removeEventListener(m,h)}}}function u(p,m,h){return Array.prototype.forEach.call(p,function(b){b.addEventListener(m,h)}),{destroy:function(){Array.prototype.forEach.call(p,function(b){b.removeEventListener(m,h)})}}}function l(p,m,h){return c(document.body,p,m,h)}n.exports=s},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var c=i.hasAttribute("readonly");c||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),c||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var s=window.getSelection(),f=document.createRange();f.selectNodeContents(i),s.removeAllRanges(),s.addRange(f),a=s.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,c){var s=this.e||(this.e={});return(s[i]||(s[i]=[])).push({fn:a,ctx:c}),this},once:function(i,a,c){var s=this;function f(){s.off(i,f),a.apply(c,arguments)}return f._=a,this.on(i,f,c)},emit:function(i){var a=[].slice.call(arguments,1),c=((this.e||(this.e={}))[i]||[]).slice(),s=0,f=c.length;for(s;s{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var Ls=/["'&<>]/;Ti.exports=Ms;function Ms(e){var t=""+e,r=Ls.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,c=o.observers;return i||a?Tr:(this.currentObservers=null,c.push(r),new $e(function(){n.currentObservers=null,Ve(c,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new Xn(r,n)},t}(U);var Xn=function(e){re(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Tr},t}(L);var yt={now:function(){return(yt.delegate||Date).now()},delegate:void 0};var xt=function(e){re(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=yt);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,c=n._timestampProvider,s=n._windowTime;o||(i.push(r),!a&&i.push(c.now()+s)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,c=a.slice(),s=0;s0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ft.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var a=r.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(ft.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Dt);var to=function(e){re(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Wt);var fe=new to(eo);var k=new U(function(e){return e.complete()});function zt(e){return e&&T(e.schedule)}function kr(e){return e[e.length-1]}function qe(e){return T(kr(e))?e.pop():void 0}function Ee(e){return zt(kr(e))?e.pop():void 0}function qt(e,t){return typeof kr(e)=="number"?e.pop():t}var lt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Kt(e){return T(e==null?void 0:e.then)}function Bt(e){return T(e[ct])}function Yt(e){return Symbol.asyncIterator&&T(e==null?void 0:e[Symbol.asyncIterator])}function Gt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function ya(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Jt=ya();function Qt(e){return T(e==null?void 0:e[Jt])}function Xt(e){return Dn(this,arguments,function(){var r,n,o,i;return $t(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,It(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,It(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,It(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Zt(e){return T(e==null?void 0:e.getReader)}function N(e){if(e instanceof U)return e;if(e!=null){if(Bt(e))return xa(e);if(lt(e))return wa(e);if(Kt(e))return Ea(e);if(Yt(e))return ro(e);if(Qt(e))return Sa(e);if(Zt(e))return Oa(e)}throw Gt(e)}function xa(e){return new U(function(t){var r=e[ct]();if(T(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function wa(e){return new U(function(t){for(var r=0;r=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new L}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,c=e.resetOnRefCountZero,s=c===void 0?!0:c;return function(f){var u,l,p,m=0,h=!1,b=!1,w=function(){l==null||l.unsubscribe(),l=void 0},q=function(){w(),u=p=void 0,h=b=!1},$=function(){var y=u;q(),y==null||y.unsubscribe()};return g(function(y,Te){m++,!b&&!h&&w();var Le=p=p!=null?p:r();Te.add(function(){m--,m===0&&!b&&!h&&(l=Dr($,s))}),Le.subscribe(Te),!u&&m>0&&(u=new Xe({next:function(we){return Le.next(we)},error:function(we){b=!0,w(),l=Dr(q,o,we),Le.error(we)},complete:function(){h=!0,w(),l=Dr(q,a),Le.complete()}}),N(y).subscribe(u))})(f)}}function Dr(e,t){for(var r=[],n=2;ne.next(document)),e}function D(e,t=document){return Array.from(t.querySelectorAll(e))}function B(e,t=document){let r=ie(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ie(e,t=document){return t.querySelector(e)||void 0}function Fe(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function nr(e){return P(x(document.body,"focusin"),x(document.body,"focusout")).pipe(He(1),d(()=>{let t=Fe();return typeof t!="undefined"?e.contains(t):!1}),z(e===Fe()),Q())}function Be(e){return{x:e.offsetLeft,y:e.offsetTop}}function Oo(e){return P(x(window,"load"),x(window,"resize")).pipe(Re(0,fe),d(()=>Be(e)),z(Be(e)))}function or(e){return{x:e.scrollLeft,y:e.scrollTop}}function _t(e){return P(x(e,"scroll"),x(window,"resize")).pipe(Re(0,fe),d(()=>or(e)),z(or(e)))}var To=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Br||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Ka?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Br||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=qa.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Lo=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Ao=typeof WeakMap!="undefined"?new WeakMap:new To,Co=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ba.getInstance(),n=new ns(t,r,this);Ao.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Co.prototype[e]=function(){var t;return(t=Ao.get(this))[e].apply(t,arguments)}});var os=function(){return typeof ir.ResizeObserver!="undefined"?ir.ResizeObserver:Co}(),Ro=os;var Ho=new L,is=I(()=>C(new Ro(e=>{for(let t of e)Ho.next(t)}))).pipe(_(e=>P(je,C(e)).pipe(R(()=>e.disconnect()))),X(1));function Se(e){return{width:e.offsetWidth,height:e.offsetHeight}}function de(e){return is.pipe(M(t=>t.observe(e)),_(t=>Ho.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),d(()=>Se(e)))),z(Se(e)))}function Tt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ko(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var Po=new L,as=I(()=>C(new IntersectionObserver(e=>{for(let t of e)Po.next(t)},{threshold:0}))).pipe(_(e=>P(je,C(e)).pipe(R(()=>e.disconnect()))),X(1));function cr(e){return as.pipe(M(t=>t.observe(e)),_(t=>Po.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),d(({isIntersecting:r})=>r))))}var fr={drawer:B("[data-md-toggle=drawer]"),search:B("[data-md-toggle=search]")};function $o(e){return fr[e].checked}function Ye(e,t){fr[e].checked!==t&&fr[e].click()}function ht(e){let t=fr[e];return x(t,"change").pipe(d(()=>t.checked),z(t.checked))}function ss(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Io(){return x(window,"keydown").pipe(A(e=>!(e.metaKey||e.ctrlKey)),d(e=>({mode:$o("search")?"search":"global",type:e.key,claim(){e.preventDefault(),e.stopPropagation()}})),A(({mode:e,type:t})=>{if(e==="global"){let r=Fe();if(typeof r!="undefined")return!ss(r,t)}return!0}),pe())}function Oe(){return new URL(location.href)}function lr(e){location.href=e.href}function jo(){return new L}function Fo(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)Fo(e,r)}function O(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)Fo(n,o);return n}function Uo(e,t){let r=t;if(e.length>r){for(;e[r]!==" "&&--r>0;);return`${e.substring(0,r)}...`}return e}function ur(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function Vo(){return location.hash.substring(1)}function No(e){let t=O("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function cs(){return x(window,"hashchange").pipe(d(Vo),z(Vo()),A(e=>e.length>0),X(1))}function Do(){return cs().pipe(d(e=>ie(`[id="${e}"]`)),A(e=>typeof e!="undefined"))}function Yr(e){let t=matchMedia(e);return tr(r=>t.addListener(()=>r(t.matches))).pipe(z(t.matches))}function Wo(){let e=matchMedia("print");return P(x(window,"beforeprint").pipe(d(()=>!0)),x(window,"afterprint").pipe(d(()=>!1))).pipe(z(e.matches))}function Gr(e,t){return e.pipe(_(r=>r?t():k))}function pr(e,t={credentials:"same-origin"}){return be(fetch(`${e}`,t)).pipe(le(()=>k),_(r=>r.status!==200?Et(()=>new Error(r.statusText)):C(r)))}function Ge(e,t){return pr(e,t).pipe(_(r=>r.json()),X(1))}function zo(e,t){let r=new DOMParser;return pr(e,t).pipe(_(n=>n.text()),d(n=>r.parseFromString(n,"text/xml")),X(1))}function qo(e){let t=O("script",{src:e});return I(()=>(document.head.appendChild(t),P(x(t,"load"),x(t,"error").pipe(_(()=>Et(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(d(()=>{}),R(()=>document.head.removeChild(t)),ve(1))))}function Ko(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function Bo(){return P(x(window,"scroll",{passive:!0}),x(window,"resize",{passive:!0})).pipe(d(Ko),z(Ko()))}function Yo(){return{width:innerWidth,height:innerHeight}}function Go(){return x(window,"resize",{passive:!0}).pipe(d(Yo),z(Yo()))}function Jo(){return G([Bo(),Go()]).pipe(d(([e,t])=>({offset:e,size:t})),X(1))}function mr(e,{viewport$:t,header$:r}){let n=t.pipe(J("size")),o=G([n,r]).pipe(d(()=>Be(e)));return G([r,t,o]).pipe(d(([{height:i},{offset:a,size:c},{x:s,y:f}])=>({offset:{x:a.x-s,y:a.y-f+i},size:c})))}var fs=B("#__config"),bt=JSON.parse(fs.textContent);bt.base=`${new URL(bt.base,Oe())}`;function ce(){return bt}function Z(e){return bt.features.includes(e)}function ae(e,t){return typeof t!="undefined"?bt.translations[e].replace("#",t.toString()):bt.translations[e]}function _e(e,t=document){return B(`[data-md-component=${e}]`,t)}function ee(e,t=document){return D(`[data-md-component=${e}]`,t)}function ls(e){let t=B(".md-typeset > :first-child",e);return x(t,"click",{once:!0}).pipe(d(()=>B(".md-typeset",e)),d(r=>({hash:__md_hash(r.innerHTML)})))}function Qo(e){return!Z("announce.dismiss")||!e.childElementCount?k:I(()=>{let t=new L;return t.pipe(z({hash:__md_get("__announce")})).subscribe(({hash:r})=>{var n;r&&r===((n=__md_get("__announce"))!=null?n:r)&&(e.hidden=!0,__md_set("__announce",r))}),ls(e).pipe(M(r=>t.next(r)),R(()=>t.complete()),d(r=>V({ref:e},r)))})}function us(e,{target$:t}){return t.pipe(d(r=>({hidden:r!==e})))}function Xo(e,t){let r=new L;return r.subscribe(({hidden:n})=>{e.hidden=n}),us(e,t).pipe(M(n=>r.next(n)),R(()=>r.complete()),d(n=>V({ref:e},n)))}var fi=Je(Qr());function Xr(e){return O("div",{class:"md-tooltip",id:e},O("div",{class:"md-tooltip__inner md-typeset"}))}function Zo(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return O("aside",{class:"md-annotation",tabIndex:0},Xr(t),O("a",{href:r,class:"md-annotation__index",tabIndex:-1},O("span",{"data-md-annotation-id":e})))}else return O("aside",{class:"md-annotation",tabIndex:0},Xr(t),O("span",{class:"md-annotation__index",tabIndex:-1},O("span",{"data-md-annotation-id":e})))}function ei(e){return O("button",{class:"md-clipboard md-icon",title:ae("clipboard.copy"),"data-clipboard-target":`#${e} > code`})}function Zr(e,t){let r=t&2,n=t&1,o=Object.keys(e.terms).filter(c=>!e.terms[c]).reduce((c,s)=>[...c,O("del",null,s)," "],[]).slice(0,-1),i=new URL(e.location);Z("search.highlight")&&i.searchParams.set("h",Object.entries(e.terms).filter(([,c])=>c).reduce((c,[s])=>`${c} ${s}`.trim(),""));let{tags:a}=ce();return O("a",{href:`${i}`,class:"md-search-result__link",tabIndex:-1},O("article",{class:["md-search-result__article",...r?["md-search-result__article--document"]:[]].join(" "),"data-md-score":e.score.toFixed(2)},r>0&&O("div",{class:"md-search-result__icon md-icon"}),O("h1",{class:"md-search-result__title"},e.title),n>0&&e.text.length>0&&O("p",{class:"md-search-result__teaser"},Uo(e.text,320)),e.tags&&O("div",{class:"md-typeset"},e.tags.map(c=>{let s=c.replace(/<[^>]+>/g,""),f=a?s in a?`md-tag-icon md-tag-icon--${a[s]}`:"md-tag-icon":"";return O("span",{class:`md-tag ${f}`},c)})),n>0&&o.length>0&&O("p",{class:"md-search-result__terms"},ae("search.result.term.missing"),": ",...o)))}function ti(e){let t=e[0].score,r=[...e],n=r.findIndex(f=>!f.location.includes("#")),[o]=r.splice(n===-1?0:n,1),i=r.findIndex(f=>f.scoreZr(f,1)),...c.length?[O("details",{class:"md-search-result__more"},O("summary",{tabIndex:-1},c.length>0&&c.length===1?ae("search.result.more.one"):ae("search.result.more.other",c.length)),...c.map(f=>Zr(f,1)))]:[]];return O("li",{class:"md-search-result__item"},s)}function ri(e){return O("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>O("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?ur(r):r)))}function en(e){let t=`tabbed-control tabbed-control--${e}`;return O("div",{class:t,hidden:!0},O("button",{class:"tabbed-button",tabIndex:-1}))}function ni(e){return O("div",{class:"md-typeset__scrollwrap"},O("div",{class:"md-typeset__table"},e))}function ps(e){let t=ce(),r=new URL(`${e.version}/`,new URL("../",t.base));return O("li",{class:"md-version__item"},O("a",{href:`${r}`,class:"md-version__link"},e.title))}function oi(e,t){return O("div",{class:"md-version"},O("button",{class:"md-version__current","aria-label":ae("select.version.title")},t.title),O("ul",{class:"md-version__list"},e.map(ps)))}function ms(e,t){let r=I(()=>G([Oo(e),_t(t)])).pipe(d(([{x:n,y:o},i])=>{let{width:a,height:c}=Se(e);return{x:n-i.x+a/2,y:o-i.y+c/2}}));return nr(e).pipe(_(n=>r.pipe(d(o=>({active:n,offset:o})),ve(+!n||1/0))))}function ii(e,t,{target$:r}){let[n,o]=Array.from(e.children);return I(()=>{let i=new L,a=i.pipe(ue(1));return i.subscribe({next({offset:c}){e.style.setProperty("--md-tooltip-x",`${c.x}px`),e.style.setProperty("--md-tooltip-y",`${c.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),cr(e).pipe(te(a)).subscribe(c=>{e.toggleAttribute("data-md-visible",c)}),P(i.pipe(A(({active:c})=>c)),i.pipe(He(250),A(({active:c})=>!c))).subscribe({next({active:c}){c?e.prepend(n):n.remove()},complete(){e.prepend(n)}}),i.pipe(Re(16,fe)).subscribe(({active:c})=>{n.classList.toggle("md-tooltip--active",c)}),i.pipe(Kr(125,fe),A(()=>!!e.offsetParent),d(()=>e.offsetParent.getBoundingClientRect()),d(({x:c})=>c)).subscribe({next(c){c?e.style.setProperty("--md-tooltip-0",`${-c}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),x(o,"click").pipe(te(a),A(c=>!(c.metaKey||c.ctrlKey))).subscribe(c=>c.preventDefault()),x(o,"mousedown").pipe(te(a),me(i)).subscribe(([c,{active:s}])=>{var f;if(c.button!==0||c.metaKey||c.ctrlKey)c.preventDefault();else if(s){c.preventDefault();let u=e.parentElement.closest(".md-annotation");u instanceof HTMLElement?u.focus():(f=Fe())==null||f.blur()}}),r.pipe(te(a),A(c=>c===n),ke(125)).subscribe(()=>e.focus()),ms(e,t).pipe(M(c=>i.next(c)),R(()=>i.complete()),d(c=>V({ref:e},c)))})}function ds(e){let t=[];for(let r of D(".c, .c1, .cm",e)){let n=[],o=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=o.nextNode();i;i=o.nextNode())n.push(i);for(let i of n){let a;for(;a=/(\(\d+\))(!)?/.exec(i.textContent);){let[,c,s]=a;if(typeof s=="undefined"){let f=i.splitText(a.index);i=f.splitText(c.length),t.push(f)}else{i.textContent=c,t.push(i);break}}}}return t}function ai(e,t){t.append(...Array.from(e.childNodes))}function si(e,t,{target$:r,print$:n}){let o=t.closest("[id]"),i=o==null?void 0:o.id,a=new Map;for(let c of ds(t)){let[,s]=c.textContent.match(/\((\d+)\)/);ie(`li:nth-child(${s})`,e)&&(a.set(s,Zo(s,i)),c.replaceWith(a.get(s)))}return a.size===0?k:I(()=>{let c=new L,s=[];for(let[f,u]of a)s.push([B(".md-typeset",u),B(`li:nth-child(${f})`,e)]);return n.pipe(te(c.pipe(ue(1)))).subscribe(f=>{e.hidden=!f;for(let[u,l]of s)f?ai(u,l):ai(l,u)}),P(...[...a].map(([,f])=>ii(f,t,{target$:r}))).pipe(R(()=>c.complete()),pe())})}var hs=0;function li(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return li(t)}}function ci(e){return de(e).pipe(d(({width:t})=>({scrollable:Tt(e).width>t})),J("scrollable"))}function ui(e,t){let{matches:r}=matchMedia("(hover)"),n=I(()=>{let o=new L;if(o.subscribe(({scrollable:a})=>{a&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}),fi.default.isSupported()){let a=e.closest("pre");a.id=`__code_${++hs}`,a.insertBefore(ei(a.id),e)}let i=e.closest(".highlight");if(i instanceof HTMLElement){let a=li(i);if(typeof a!="undefined"&&(i.classList.contains("annotate")||Z("content.code.annotate"))){let c=si(a,e,t);return ci(e).pipe(M(s=>o.next(s)),R(()=>o.complete()),d(s=>V({ref:e},s)),tt(de(i).pipe(d(({width:s,height:f})=>s&&f),Q(),_(s=>s?c:k))))}}return ci(e).pipe(M(a=>o.next(a)),R(()=>o.complete()),d(a=>V({ref:e},a)))});return Z("content.lazy")?cr(e).pipe(A(o=>o),ve(1),_(()=>n)):n}var pi=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:transparent}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel rect,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel rect{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color)}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}defs #flowchart-circleEnd,defs #flowchart-circleStart,defs #flowchart-crossEnd,defs #flowchart-crossStart,defs #flowchart-pointEnd,defs #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}.actor,defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{stroke:var(--md-mermaid-node-fg-color)}text.actor>tspan{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-default-fg-color--lighter)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-edge-color)}.loopText>tspan,.messageText,.noteText>tspan{font-family:var(--md-mermaid-font-family)!important}#arrowhead path,.loopText>tspan,.messageText,.noteText>tspan{fill:var(--md-mermaid-edge-color);stroke:none}.loopLine{stroke:var(--md-mermaid-node-fg-color)}.labelBox,.loopLine{fill:var(--md-mermaid-node-bg-color)}.labelBox{stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-node-fg-color);font-family:var(--md-mermaid-font-family)}";var tn,vs=0,gs=ce();function ys(){return typeof mermaid=="undefined"||mermaid instanceof Element?qo(`${gs.base}_static/mermaid/mermaid.min.js`):C(void 0)}function mi(e){return e.classList.remove("mermaid"),tn||(tn=ys().pipe(M(()=>mermaid.initialize({startOnLoad:!1,themeCSS:pi,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),d(()=>{}),X(1))),tn.subscribe(()=>{e.classList.add("mermaid");let t=`__mermaid_${vs++}`,r=O("div",{class:"mermaid"});mermaid.mermaidAPI.render(t,e.textContent,n=>{let o=r.attachShadow({mode:"closed"});o.innerHTML=n,e.replaceWith(r)})}),tn.pipe(d(()=>({ref:e})))}function xs(e,{target$:t,print$:r}){let n=!0;return P(t.pipe(d(o=>o.closest("details:not([open])")),A(o=>e===o),d(()=>({action:"open",reveal:!0}))),r.pipe(A(o=>o||!n),M(()=>n=e.open),d(o=>({action:o?"open":"close"}))))}function di(e,t){return I(()=>{let r=new L;return r.subscribe(({action:n,reveal:o})=>{e.toggleAttribute("open",n==="open"),o&&e.scrollIntoView()}),xs(e,t).pipe(M(n=>r.next(n)),R(()=>r.complete()),d(n=>V({ref:e},n)))})}var hi=O("table");function bi(e){return e.replaceWith(hi),hi.replaceWith(ni(e)),C({ref:e})}function ws(e){let t=D(":scope > input",e),r=t.find(n=>n.checked)||t[0];return P(...t.map(n=>x(n,"change").pipe(d(()=>B(`label[for="${n.id}"]`))))).pipe(z(B(`label[for="${r.id}"]`)),d(n=>({active:n})))}function vi(e,{viewport$:t}){let r=en("prev");e.append(r);let n=en("next");e.append(n);let o=B(".tabbed-labels",e);return I(()=>{let i=new L,a=i.pipe(ue(1));return G([i,de(e)]).pipe(Re(1,fe),te(a)).subscribe({next([{active:c},s]){let f=Be(c),{width:u}=Se(c);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let l=or(o);(f.xl.x+s.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),G([_t(o),de(o)]).pipe(te(a)).subscribe(([c,s])=>{let f=Tt(o);r.hidden=c.x<16,n.hidden=c.x>f.width-s.width-16}),P(x(r,"click").pipe(d(()=>-1)),x(n,"click").pipe(d(()=>1))).pipe(te(a)).subscribe(c=>{let{width:s}=Se(o);o.scrollBy({left:s*c,behavior:"smooth"})}),Z("content.tabs.link")&&i.pipe(Pe(1),me(t)).subscribe(([{active:c},{offset:s}])=>{let f=c.innerText.trim();if(c.hasAttribute("data-md-switching"))c.removeAttribute("data-md-switching");else{let u=e.offsetTop-s.y;for(let p of D("[data-tabs]"))for(let m of D(":scope > input",p)){let h=B(`label[for="${m.id}"]`);if(h!==c&&h.innerText.trim()===f){h.setAttribute("data-md-switching",""),m.click();break}}window.scrollTo({top:e.offsetTop-u});let l=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...l])])}}),ws(e).pipe(M(c=>i.next(c)),R(()=>i.complete()),d(c=>V({ref:e},c)))}).pipe(Ze(se))}function gi(e,{viewport$:t,target$:r,print$:n}){return P(...D("pre:not(.mermaid) > code",e).map(o=>ui(o,{target$:r,print$:n})),...D("pre.mermaid",e).map(o=>mi(o)),...D("table:not([class])",e).map(o=>bi(o)),...D("details",e).map(o=>di(o,{target$:r,print$:n})),...D("[data-tabs]",e).map(o=>vi(o,{viewport$:t})))}function Es(e,{alert$:t}){return t.pipe(_(r=>P(C(!0),C(!1).pipe(ke(2e3))).pipe(d(n=>({message:r,active:n})))))}function yi(e,t){let r=B(".md-typeset",e);return I(()=>{let n=new L;return n.subscribe(({message:o,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=o}),Es(e,t).pipe(M(o=>n.next(o)),R(()=>n.complete()),d(o=>V({ref:e},o)))})}function Ss({viewport$:e}){if(!Z("header.autohide"))return C(!1);let t=e.pipe(d(({offset:{y:o}})=>o),Ne(2,1),d(([o,i])=>[oMath.abs(i-o.y)>100),d(([,[o]])=>o),Q()),n=ht("search");return G([e,n]).pipe(d(([{offset:o},i])=>o.y>400&&!i),Q(),_(o=>o?r:C(!1)),z(!1))}function xi(e,t){return I(()=>G([de(e),Ss(t)])).pipe(d(([{height:r},n])=>({height:r,hidden:n})),Q((r,n)=>r.height===n.height&&r.hidden===n.hidden),X(1))}function wi(e,{header$:t,main$:r}){return I(()=>{let n=new L,o=n.pipe(ue(1));return n.pipe(J("active"),St(t)).subscribe(([{active:i},{hidden:a}])=>{e.classList.toggle("md-header--shadow",i&&!a),e.hidden=a}),r.subscribe(n),t.pipe(te(o),d(i=>V({ref:e},i)))})}function Os(e,{viewport$:t,header$:r}){return mr(e,{viewport$:t,header$:r}).pipe(d(({offset:{y:n}})=>{let{height:o}=Se(e);return{active:n>=o}}),J("active"))}function Ei(e,t){return I(()=>{let r=new L;r.subscribe(({active:o})=>{e.classList.toggle("md-header__title--active",o)});let n=ie("article h1, .objdesc > dt .descname");return typeof n=="undefined"?k:Os(n,t).pipe(M(o=>r.next(o)),R(()=>r.complete()),d(o=>V({ref:e},o)))})}function Si(e,{viewport$:t,header$:r}){let n=r.pipe(d(({height:i})=>i),Q()),o=n.pipe(_(()=>de(e).pipe(d(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),J("bottom"))));return G([n,o,t]).pipe(d(([i,{top:a,bottom:c},{offset:{y:s},size:{height:f}}])=>(f=Math.max(0,f-Math.max(0,a-s,i)-Math.max(0,f+s-c)),{offset:a-i,height:f,active:a-i<=s})),Q((i,a)=>i.offset===a.offset&&i.height===a.height&&i.active===a.active))}function _s(e){let t=__md_get("__palette")||{index:e.findIndex(r=>matchMedia(r.getAttribute("data-md-color-media")).matches)};return C(...e).pipe(oe(r=>x(r,"change").pipe(d(()=>r))),z(e[Math.max(0,t.index)]),d(r=>({index:e.indexOf(r),color:{scheme:r.getAttribute("data-md-color-scheme"),primary:r.getAttribute("data-md-color-primary"),accent:r.getAttribute("data-md-color-accent")}})),X(1))}function Oi(e){return I(()=>{let t=new L;t.subscribe(n=>{document.body.setAttribute("data-md-color-switching","");for(let[o,i]of Object.entries(n.color))document.body.setAttribute(`data-md-color-${o}`,i);for(let o=0;o{document.body.removeAttribute("data-md-color-switching")});let r=D("input",e);return _s(r).pipe(M(n=>t.next(n)),R(()=>t.complete()),d(n=>V({ref:e},n)))})}function Ts(e){let t=a=>a.trim(),{searchParams:r}=Oe(),n;if(r.has("q")){Ye("search",!0);let a=r.get("q");n=C(a)}else n=C();ht("search").pipe(A(a=>!a),ve(1)).subscribe(()=>{let a=new URL(location.href);a.searchParams.delete("q"),history.replaceState({},"",`${a}`)}),n.subscribe(a=>{a&&(e.value=a,e.focus())});let o=nr(e),i=P(x(e,"keyup"),x(e,"focus").pipe(ke(1)),n).pipe(d(()=>t(e.value)),z(""),Q());return G([i,o]).pipe(d(([a,c])=>({value:a,focus:c})),X(1))}function _i(e){let t=new L,r=t.pipe(ue(1));return t.pipe(J("focus")).subscribe(({focus:n})=>{n?(Ye("search",n),e.placeholder=""):e.placeholder=ae("search.placeholder")}),x(e.form,"reset").pipe(te(r)).subscribe(()=>e.focus()),Ts(e).pipe(M(n=>t.next(n)),R(()=>t.complete()),d(n=>V({ref:e},n)),pe())}var on=Je(rn());var As=ce();function nn(e){return`${As.base}${e}`}var dr;function Li(e){return new Promise((t,r)=>{let n=document.createElement("script"),o=nn(e);n.src=o,n.addEventListener("load",()=>t()),n.addEventListener("error",()=>{console.error(`Failed to load search data: ${o}`),r()}),document.body.appendChild(n)})}function Cs(){return dr!==void 0||(dr=Promise.all([Li("_static/language_data.js"),Li("searchindex.js")]).then(()=>{})),dr}var Ue={objNameMatch:11,objPartialMatch:6,objPrio:{0:15,1:5,2:-5},objPrioDefault:0,title:15,partialTitle:7,term:5,partialTerm:2},an;window.Search={setIndex:e=>{an=e}};var Rs=!1;function Hs(e,t){let{docurls:r,objects:n,objnames:o,titles:i}=an,a=[];function c(s,f,u,l,p,m,h){var q;let b=(s?`${s}.`:"")+m,w=b.toLowerCase();if(w.indexOf(e)>-1){let $=0,y=w.split(".");w===e||y[y.length-1]===e?$+=Ue.objNameMatch:y[y.length-1].indexOf(e)>-1&&($+=Ue.objPartialMatch);let Te=o[u][2],Le=i[f];if(t.length>0){let we=`${s} ${m} ${Te} ${Le} ${h!=null?h:""}`.toLowerCase(),Mt=!0;for(let ot=0;ot2){let m=sn(u);if(!o[u])for(let h in o)h.match(m)&&p.push({files:o[h],score:Ue.partialTerm});if(!i[u])for(let h in i)h.match(m)&&p.push({files:i[h],score:Ue.partialTitle})}if(p.every(m=>m.files===void 0))break;p.forEach(m=>{let h=m.files;if(h!==void 0){Array.isArray(h)||(h=[h]),l.push(...h);for(let b=0;bm.length>2).length;if(!(a[u].length!==e.length&&a[u].length!==p)){for(let m=0;mc[f][h]));s.push({docurl:r[f],title:n[f],anchor:"",objectLabel:null,synopsis:null,score:m})}}}return s}function $s(e){let t=new DOMParser().parseFromString(e,"text/html");t.querySelectorAll(".headerlink").forEach(s=>{var f;(f=s.parentNode)==null||f.removeChild(s)});let r=t.querySelector("[role=main]");if(r===null)return console.warn("Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."),[];let n=r.querySelectorAll("h1, h2, h3, h4, h5, h6"),o,i=[],a=t.createRange(),c=(s,f)=>{var m;s!==void 0?a.setStartAfter(s):a.setStartBefore(r),f!==void 0?a.setEndBefore(f):a.setEndAfter(r);let u=a.toString().trim(),l=(m=s==null?void 0:s.textContent)==null?void 0:m.trim();if(!l&&!u)return;let p=s!==void 0?`#${s.id}`:"";i.push({title:l!=null?l:"",anchor:p,text:u})};return n.forEach(s=>{if(!s.id)return;let u=o;o=s,c(u,s)}),c(o,void 0),i}function Is(e,t){let r=$s(e),n=t.map(i=>new RegExp(sn(i),"im")),o=[];for(let i=0;ii.score!==a.score?a.score-i.score:i.sectionIndex-a.sectionIndex),o.length!==0)return o.map(i=>{let c=r[i.sectionIndex],s=Math.max(i.snippetIndex-240/2,0);return{snippet:(s>0?"\u2026":"")+c.text.substr(s,240).trim()+(s+240${(0,on.default)(e.objectLabel)}`,text:r(e.synopsis)}];let a=nn(e.docurl),c;if(window.location.protocol!=="file:")try{let l=yield(yield fetch(a)).text();c=Is(l,t)}catch(u){console.warn("Failed to retrieve search result document: ",u)}c===void 0&&(c=[{score:-1,title:"",anchor:"",snippet:"",terms:i}]);let s=[];c[0].score!==-1&&s.push({location:n,score:e.score,terms:i,title:r(o),text:""});let f;for(let u of c)f===void 0&&(f=u.score),s.push({location:n+u.anchor,score:u.score===f?e.score:0,terms:u.terms,title:r(u.title||o),text:r(u.snippet)});return s})}function Fs(e){return new DOMParser().parseFromString(e,"text/html").body.textContent||""}function Mi(e){return ze(this,null,function*(){yield Cs();let t=new Stemmer,r=[],n=[],o=[],i=[];for(let u of ks(e)){let l=u.toLowerCase();if(l.length===0||(i.push(l),stopwords.indexOf(l)!==-1))continue;let p=t.stemWord(l);p.length<3&&l.length>=3&&(p=l);let m;p[0]==="-"?(m=n,p=p.substr(1)):(m=r,o.push(l)),m.indexOf(p)===-1&&m.push(p)}let a=[];for(let u=0;u{let p=u.score,m=l.score;if(p!==m)return m-p;let h=u.title.toLowerCase(),b=l.title.toLowerCase();return h>b?1:h`${u}`,f=u=>(0,on.default)(u).replace(c,s).replace(/<\/mark>(\s+)]*>/gim,"$1");return{count:a.length,get:u=>js(a[u],o,f)}})}function Ai(e,{query$:t}){let r=B(":scope > :first-child",e),n=B(":scope > :last-child",e),o,i,a=e.parentElement,c=16,s=()=>a.scrollTop+a.clientHeight+c>a.scrollHeight,f=()=>{i!==void 0&&s()&&(i(),i=void 0)};a.addEventListener("scroll",f,{passive:!0}),window.addEventListener("resize",f,{passive:!0});let u=l=>ze(this,null,function*(){o=l;let p=4,m=p;for(let h=0;h{i=()=>w(void 0)})),m+=p),o!==l)return;let b=yield l.get(h);if(o!==l)return;n.appendChild(ti(b))}});return t.pipe(J("value"),Fr(()=>$r(250)),mt(l=>ze(this,null,function*(){if(!!l.value)return Mi(l.value)})),Ce(fe)).subscribe(l=>{if(n.innerHTML="",l){switch(l.count){case 0:r.textContent=ae("search.result.none");break;case 1:r.textContent=ae("search.result.one");break;default:r.textContent=ae("search.result.other",ur(l.count))}u(l)}else r.textContent=ae("search.result.placeholder")}),C()}function Us(e,{query$:t}){return t.pipe(d(({value:r})=>{let n=Oe();return n.hash="",n.searchParams.delete("h"),n.searchParams.set("q",r),{url:n}}))}function Ci(e,t){let r=new L;return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),x(e,"click").subscribe(n=>n.preventDefault()),Us(e,t).pipe(M(n=>r.next(n)),R(()=>r.complete()),d(n=>V({ref:e},n)))}function Ri(e,{keyboard$:t}){let r=_e("search-query");return t.pipe(A(({mode:n})=>n==="search")).subscribe(n=>{switch(n.type){case"ArrowRight":e.innerText.length&&r.selectionStart===r.value.length&&(r.value=e.innerText);break}}),C()}function Hi(e,{keyboard$:t}){try{let r=_e("search-query",e),n=_e("search-result",e);t.pipe(A(({mode:a})=>a==="search")).subscribe(a=>{let c=Fe();switch(a.type){case"Enter":if(c===r){let s=new Map;for(let f of D(":first-child [href]",n)){let u=f.firstElementChild;s.set(f,parseFloat(u.getAttribute("data-md-score")))}if(s.size){let[[f]]=[...s].sort(([,u],[,l])=>l-u);f.click()}a.claim()}break;case"Escape":case"Tab":Ye("search",!1),r.blur();break;case"ArrowUp":case"ArrowDown":if(typeof c=="undefined")r.focus();else{let s=[r,...D(":not(details) > [href], summary, details[open] [href]",n)],f=Math.max(0,(Math.max(0,s.indexOf(c))+s.length+(a.type==="ArrowUp"?-1:1))%s.length);s[f].focus()}a.claim();break;default:r!==Fe()&&r.focus()}}),t.pipe(A(({mode:a})=>a==="global")).subscribe(a=>{switch(a.type){case"f":case"s":case"/":r.focus(),r.select(),a.claim();break}});let o=_i(r),i=Ai(n,{query$:o});return P(o,i).pipe(tt(...ee("search-share",e).map(a=>Ci(a,{query$:o})),...ee("search-suggest",e).map(a=>Ri(a,{keyboard$:t}))))}catch(r){return e.hidden=!0,je}}var cn=Je(Qr());function Vs(e){e.setAttribute("data-md-copying","");let t=e.innerText;return e.removeAttribute("data-md-copying"),t}function ki({alert$:e}){cn.default.isSupported()&&new U(t=>{new cn.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||Vs(B(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(M(t=>{t.trigger.focus()}),d(()=>ae("clipboard.copied"))).subscribe(e)}function Ns(e){if(e.length<2)return[""];let[t,r]=[...e].sort((o,i)=>o.length-i.length).map(o=>o.replace(/[^/]+$/,"")),n=0;if(t===r)n=t.length;else for(;t.charCodeAt(n)===r.charCodeAt(n);)n++;return e.map(o=>o.replace(t.slice(0,n),""))}function hr(e){let t=__md_get("__sitemap",sessionStorage,e);if(t)return C(t);{let r=ce();return zo(new URL("sitemap.xml",e||r.base)).pipe(d(n=>Ns(D("loc",n).map(o=>o.textContent))),le(()=>k),De([]),M(n=>__md_set("__sitemap",n,sessionStorage,e)))}}function Pi({document$:e,location$:t,viewport$:r}){let n=ce();if(location.protocol==="file:")return;"scrollRestoration"in history&&(history.scrollRestoration="manual",x(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}));let o=ie("link[rel=icon]");typeof o!="undefined"&&(o.href=o.href);let i=hr().pipe(d(l=>l.map(p=>`${new URL(p,n.base)}`)),_(l=>x(document.body,"click").pipe(A(p=>!p.metaKey&&!p.ctrlKey),_(p=>{if(p.target instanceof Element){let m=p.target.closest("a");if(m&&!m.target){let h=new URL(m.href);if(h.search="",h.hash="",h.pathname!==location.pathname&&l.includes(h.toString()))return p.preventDefault(),C({url:new URL(m.href)})}}return je}))),pe()),a=x(window,"popstate").pipe(A(l=>l.state!==null),d(l=>({url:new URL(location.href),offset:l.state})),pe());P(i,a).pipe(Q((l,p)=>l.url.href===p.url.href),d(({url:l})=>l)).subscribe(t);let c=t.pipe(J("pathname"),_(l=>pr(l.href).pipe(le(()=>(lr(l),je)))),pe());i.pipe(rr(c)).subscribe(({url:l})=>{history.pushState({},"",`${l}`)});let s=new DOMParser;c.pipe(_(l=>l.text()),d(l=>s.parseFromString(l,"text/html"))).subscribe(e);let f=new Set,u=new Set;for(let l of D("script",document))l.src?f.add(new URL(l.src,document.baseURI).toString()):u.add(l.outerHTML);e.pipe(Pe(1),mt(l=>ze(this,null,function*(){var p;for(let m of["title","link[rel=canonical]","meta[name=author]","meta[name=description]","[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...Z("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let h=ie(m),b=ie(m,l);typeof h!="undefined"&&typeof b!="undefined"&&h.replaceWith(b)}((p=window.MathJax)==null?void 0:p.typesetPromise)!==void 0&&(yield window.MathJax.typesetPromise());for(let m of D("script",l))if(m.src){let h=new URL(m.src,document.baseURI).toString();if(!f.has(h)){let b=document.createElement("script");for(let q of m.getAttributeNames())b.setAttribute(q,m.getAttribute(q));let w;b.src=h,b.async||(w=new Promise(q=>b.addEventListener("load",()=>q()))),document.body.appendChild(b),f.add(h),w!==void 0&&(yield w)}}else{let h=m.outerHTML;if(!u.has(h)){let b=document.createElement("script");for(let w of m.getAttributeNames())b.setAttribute(w,m.getAttribute(w));b.textContent=m.textContent,document.body.appendChild(b),u.add(h)}}}))).subscribe(),e.pipe(Pe(1),d(()=>_e("container")),_(l=>D("script",l)),mt(l=>{let p=O("script");if(l.src){for(let m of l.getAttributeNames())p.setAttribute(m,l.getAttribute(m));return l.replaceWith(p),new U(m=>{p.onload=()=>m.complete()})}else return p.textContent=l.textContent,l.replaceWith(p),k})).subscribe(),P(i,a).pipe(rr(e)).subscribe(({url:l,offset:p})=>{l.hash&&!p?No(l.hash):window.scrollTo(0,(p==null?void 0:p.y)||0)}),r.pipe(Wr(i),He(250),J("offset")).subscribe(({offset:l})=>{history.replaceState(l,"")}),P(i,a).pipe(Ne(2,1),A(([l,p])=>l.url.pathname===p.url.pathname),d(([,l])=>l)).subscribe(({offset:l})=>{window.scrollTo(0,(l==null?void 0:l.y)||0)})}var $i=Je(rn());function Ii(e,t){let r=new RegExp(e.separator,"img"),n=(o,i,a)=>`${i}${a}`;return o=>{o=o.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator})(${o.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return a=>(t?(0,$i.default)(a):a).replace(i,n).replace(/<\/mark>(\s+)]*>/img,"$1")}}function ji({document$:e}){var a;let t=ce(),r=t.version.staticVersions?C(t.version.staticVersions):Ge(new URL((a=t.version.versionPath)!=null?a:"../versions.json",t.base)),n=new URL("..",t.base),o=c=>new URL(c,n).toString().replace(/\/*$/,""),i=r.pipe(d(c=>{let s=t.base.toString().replace(/\/*$/,"");return c.find(({version:f,aliases:u})=>o(f)===s||u.find(l=>o(l)===s))||c[0]}));r.pipe(d(c=>new Map(c.map(s=>[`${new URL(`../${s.version}/`,t.base)}`,s]))),_(c=>x(document.body,"click").pipe(A(s=>!s.metaKey&&!s.ctrlKey),me(i),_(([s,f])=>{if(s.target instanceof Element){let u=s.target.closest("a");if(u&&!u.target&&c.has(u.href)){let l=u.href;return!s.target.closest(".md-version")&&c.get(l)===f?k:(s.preventDefault(),C(l))}}return k}),_(s=>{let{version:f}=c.get(s);return hr(new URL(s)).pipe(d(u=>{let p=Oe().href.replace(t.base,"");return u.includes(p.split("#")[0])?new URL(`../${f}/${p}`,t.base):new URL(s)}))})))).subscribe(c=>lr(c)),G([r,i]).subscribe(([c,s])=>{B(".md-header__topic").appendChild(oi(c,s))}),e.pipe(_(()=>i)).subscribe(c=>{var f;let s=__md_get("__outdated",sessionStorage);if(s===null){let u=((f=t.version)==null?void 0:f.default)||"latest";s=!c.aliases.includes(u),__md_set("__outdated",s,sessionStorage)}if(s)for(let u of ee("outdated"))u.hidden=!1})}function Fi(e,{location$:t}){let r={lang:[],separator:"\\s+"};return G([t.pipe(z(Oe()),A(n=>!!n.searchParams.get("h")))]).pipe(d(([n])=>Ii(r,!0)(n.searchParams.get("h"))),d(n=>{var a;let o=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let c=i.nextNode();c;c=i.nextNode())if((a=c.parentElement)!=null&&a.offsetHeight){let s=c.textContent,f=n(s);f.length>s.length&&o.set(c,f)}for(let[c,s]of o){let{childNodes:f}=O("span",null,s);c.replaceWith(...Array.from(f))}return{ref:e,nodes:o}}))}function Ds(e,{viewport$:t,main$:r}){let n=e.parentElement,o=n.offsetTop-n.parentElement.offsetTop;return G([r,t]).pipe(d(([{offset:i,height:a},{offset:{y:c}}])=>(a=a+Math.min(o,Math.max(0,c-i))-o,{height:a,locked:c>=i+o})),Q((i,a)=>i.height===a.height&&i.locked===a.locked))}function fn(e,n){var o=n,{header$:t}=o,r=hn(o,["header$"]);let i=B(".md-sidebar__scrollwrap",e),{y:a}=Be(i);return I(()=>{let c=new L;return c.pipe(Re(0,fe),me(t)).subscribe({next([{height:s},{height:f}]){i.style.height=`${s-2*a}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),c.pipe(Ce(fe),ve(1)).subscribe(()=>{for(let s of D(".md-nav__link--active[href]",e)){let f=ko(s);if(typeof f!="undefined"){let u=s.offsetTop-f.offsetTop,{height:l}=Se(f);f.scrollTo({top:u-l/2})}}}),Ds(e,r).pipe(M(s=>c.next(s)),R(()=>c.complete()),d(s=>V({ref:e},s)))})}function Ui(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return Ir(Ge(`${r}/releases/latest`).pipe(le(()=>k),d(n=>({version:n.tag_name})),De({})),Ge(r).pipe(le(()=>k),d(n=>({stars:n.stargazers_count,forks:n.forks_count})),De({}))).pipe(d(([n,o])=>V(V({},n),o)))}else{let r=`https://api.github.com/users/${e}`;return Ge(r).pipe(d(n=>({repositories:n.public_repos})),De({}))}}function Vi(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return Ge(r).pipe(le(()=>k),d(({star_count:n,forks_count:o})=>({stars:n,forks:o})),De({}))}function Ni(e){let[t]=e.match(/(git(?:hub|lab))/i)||[];switch(t.toLowerCase()){case"github":let[,r,n]=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);return Ui(r,n);case"gitlab":let[,o,i]=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i);return Vi(o,i);default:return k}}var Ws;function zs(e){return Ws||(Ws=I(()=>{let t=__md_get("__source",sessionStorage);if(t)return C(t);if(ee("consent").length){let n=__md_get("__consent");if(!(n&&n.github))return k}return Ni(e.href).pipe(M(n=>__md_set("__source",n,sessionStorage)))}).pipe(le(()=>k),A(t=>Object.keys(t).length>0),d(t=>({facts:t})),X(1)))}function Di(e){let t=B(":scope > :last-child",e);return I(()=>{let r=new L;return r.subscribe(({facts:n})=>{t.appendChild(ri(n)),t.classList.add("md-source__repository--active")}),zs(e).pipe(M(n=>r.next(n)),R(()=>r.complete()),d(n=>V({ref:e},n)))})}function qs(e,{viewport$:t,header$:r}){return de(document.body).pipe(_(()=>mr(e,{header$:r,viewport$:t})),d(({offset:{y:n}})=>({hidden:n>=10})),J("hidden"))}function Wi(e,t){return I(()=>{let r=new L;return r.subscribe({next({hidden:n}){e.hidden=n},complete(){e.hidden=!1}}),(Z("navigation.tabs.sticky")?C({hidden:!1}):qs(e,t)).pipe(M(n=>r.next(n)),R(()=>r.complete()),d(n=>V({ref:e},n)))})}function Ks(e,{viewport$:t,header$:r,excludedLinks:n}){let o=new Map,i=D("a[href]",e);for(let s of i){if(n!=null&&n.has(s))continue;let f=s.getAttribute("href"),u;if(f.startsWith("#")){let l=decodeURIComponent(s.hash.substring(1));u=ie(`[id="${l}"]`)}else u=ie(`a.pseudo-toc-entry[href=${CSS.escape(f)}]`);if(typeof u!="undefined"){let l=s.closest(".md-nav__link");l!==null&&o.set(l,u)}}let a=r.pipe(J("height"),d(({height:s})=>{let f=_e("main"),u=B(":scope > :first-child",f);return s+.8*(u.offsetTop-f.offsetTop)}),pe());return de(document.body).pipe(J("height"),_(s=>I(()=>{let f=[];return C([...o].reduce((u,[l,p])=>{for(;f.length&&o.get(f[f.length-1]).tagName>=p.tagName;)f.pop();let m=p.offsetTop;for(;!m&&p.parentElement;)p=p.parentElement,m=p.offsetTop;return u.set([...f=[...f,l]].reverse(),m)},new Map))}).pipe(d(f=>new Map([...f].sort(([,u],[,l])=>u-l))),St(a),_(([f,u])=>t.pipe(Nr(([l,p],{offset:{y:m},size:h})=>{let b=m+h.height>=Math.floor(s.height);for(;p.length;){let[,w]=p[0];if(w-u=m&&!b)p=[l.pop(),...p];else break}return[l,p]},[[],[...f]]),Q((l,p)=>l[0]===p[0]&&l[1]===p[1])))))).pipe(d(([s,f])=>({prev:s.map(([u])=>u),next:f.map(([u])=>u)})),z({prev:[],next:[]}),Ne(2,1),d(([s,f])=>s.prev.length{let i=new L,a=o?"md-nav__link--active":"md-nav__link--in-viewport";if(i.subscribe(({prev:s,next:f})=>{for(let[u]of f)u.classList.remove("md-nav__link--passed"),u.classList.remove(a);for(let[u,[l]]of s.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle(a,u===s.length-1)}),Z("toc.follow")&&(o||!Z("toc.integrate"))){let s=!o||Z("toc.integrate");i.pipe(He(1)).subscribe(({prev:f})=>{var m;let u;if(f.length===0&&s&&(u=(m=e.querySelector("a[href='#']"))!=null?m:e),s=!1,f.length!==0&&(u=f[f.length-1][0]),u===void 0||!u.offsetHeight)return;let l=u.parentElement,p=5;for(;l!==null&&l.scrollHeight-p<=l.clientHeight;)l=l.parentElement;if(l!==null&&l!==document.body&&l!==document.documentElement){let h=u.getBoundingClientRect(),b=l.getBoundingClientRect();l.scrollTo({top:l.scrollTop+(h.y-b.height/2-b.y)})}})}o&&Z("navigation.tracking")&&t.pipe(te(i.pipe(ue(1))),J("offset"),He(250),Pe(1),te(n.pipe(Pe(1))),Ot({delay:250}),me(i)).subscribe(([,{prev:s}])=>{let f=Oe(),u=s[s.length-1];if(u&&u.length){let[l]=u,{hash:p}=new URL(l.href);f.hash!==p&&(f.hash=p,history.replaceState({},"",`${f}`))}else f.hash="",history.replaceState({},"",`${f}`)}),Z("toc.sticky")&&de(document.body).pipe(J("width"),He(0)).subscribe(()=>{let s=new Map,f="--md-nav__header-height";for(let u of D(".md-nav__link",e)){let l=u.nextElementSibling;if(!(l instanceof HTMLElement)||l.tagName!=="NAV")continue;let p="",m=NaN,h=l.parentElement.closest("nav");if(h!==null){let b=s.get(h);b!==void 0&&(p=`${b.height} + `,m=b.zindex-1)}isNaN(m)&&(m=100),p+=`${u.offsetHeight}px + 0.625em`,u.classList.add("md-nav__sticky"),u.style.setProperty("--md-nav__sticky-zindex",m.toString()),l.style.setProperty(f,`calc(${p})`),s.set(l,{height:p,zindex:m})}});let c=o?void 0:new Set(D("[data-md-component='toc'] a[href]",e));return Ks(e,{viewport$:t,header$:r,excludedLinks:c}).pipe(M(s=>i.next(s)),R(()=>i.complete()),d(s=>V({ref:e},s)))})}function Bs(e,{viewport$:t,main$:r,target$:n}){let o=t.pipe(d(({offset:{y:a}})=>a),Ne(2,1),d(([a,c])=>a>c&&c>0),Q()),i=r.pipe(d(({active:a})=>a));return G([i,o]).pipe(d(([a,c])=>!(a&&c)),Q(),te(n.pipe(Pe(1))),Vr(!0),Ot({delay:250}),d(a=>({hidden:a})))}function zi(e,{viewport$:t,header$:r,main$:n,target$:o}){let i=new L,a=i.pipe(ue(1));return i.subscribe({next({hidden:c}){e.hidden=c,c?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(te(a),J("height")).subscribe(({height:c})=>{e.style.top=`${c+16}px`}),Bs(e,{viewport$:t,main$:n,target$:o}).pipe(M(c=>i.next(c)),R(()=>i.complete()),d(c=>V({ref:e},c)))}function qi({document$:e,tablet$:t}){e.pipe(_(()=>D(".md-toggle--indeterminate, [data-md-state=indeterminate]")),M(r=>{r.indeterminate=!0,r.checked=!1}),oe(r=>x(r,"change").pipe(zr(()=>r.classList.contains("md-toggle--indeterminate")),d(()=>r))),me(t)).subscribe(([r,n])=>{r.classList.remove("md-toggle--indeterminate"),n&&(r.checked=!1)})}function Ys(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Ki({document$:e}){e.pipe(_(()=>D("[data-md-scrollfix]")),M(t=>t.removeAttribute("data-md-scrollfix")),A(Ys),oe(t=>x(t,"touchstart").pipe(d(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function Bi({viewport$:e,tablet$:t}){G([ht("search"),t]).pipe(d(([r,n])=>r&&!n),_(r=>C(r).pipe(ke(r?400:100))),me(e)).subscribe(([r,{offset:{y:n}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${n}px`;else{let o=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",o&&window.scrollTo(0,o)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let n=e[r];typeof n!="object"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?t.insertBefore(this.previousSibling,n):t.replaceChild(n,this)}}}));document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var nt=So(),vr=jo(),rt=Do(),un=Io(),ge=Jo(),gr=Yr("(min-width: 960px)"),Gi=Yr("(min-width: 1220px)"),Ji=Wo(),Gs=ce(),pn=new L;ki({alert$:pn});Z("navigation.instant")&&Pi({document$:nt,location$:vr,viewport$:ge});var Yi;((Yi=Gs.version)==null?void 0:Yi.provider)==="mike"&&ji({document$:nt});P(vr,rt).pipe(ke(125)).subscribe(()=>{Ye("drawer",!1),Ye("search",!1)});un.pipe(A(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=ie("[href][rel=prev]");typeof t!="undefined"&&t.click();break;case"n":case".":let r=ie("[href][rel=next]");typeof r!="undefined"&&r.click();break}});qi({document$:nt,tablet$:gr});Ki({document$:nt});Bi({viewport$:ge,tablet$:gr});var We=xi(_e("header"),{viewport$:ge}),br=nt.pipe(d(()=>_e("main")),_(e=>Si(e,{viewport$:ge,header$:We})),X(1)),Js=P(...ee("consent").map(e=>Xo(e,{target$:rt})),...ee("dialog").map(e=>yi(e,{alert$:pn})),...ee("header").map(e=>wi(e,{viewport$:ge,header$:We,main$:br})),...ee("palette").map(e=>Oi(e)),...ee("search").map(e=>Hi(e,{keyboard$:un})),...ee("source").map(e=>Di(e))),Qs=I(()=>P(...ee("announce").map(e=>Qo(e)),...ee("content").map(e=>gi(e,{viewport$:ge,target$:rt,print$:Ji})),...ee("content").map(e=>Z("search.highlight")?Fi(e,{location$:vr}):k),...ee("header-title").map(e=>Ei(e,{viewport$:ge,header$:We})),...ee("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?Gr(Gi,()=>fn(e,{viewport$:ge,header$:We,main$:br})):Gr(gr,()=>fn(e,{viewport$:ge,header$:We,main$:br}))),...ee("tabs").map(e=>Wi(e,{viewport$:ge,header$:We})),...ee("toc").map(e=>ln(e,{viewport$:ge,header$:We,target$:rt,localToc:!0})),...ee("sidebar").filter(e=>e.getAttribute("data-md-type")==="navigation").map(e=>ln(e,{viewport$:ge,header$:We,target$:rt,localToc:!1})),...ee("top").map(e=>zi(e,{viewport$:ge,header$:We,main$:br,target$:rt})))),Qi=nt.pipe(_(()=>Qs),tt(Js),X(1));Qi.subscribe();window.document$=nt;window.location$=vr;window.target$=rt;window.keyboard$=un;window.viewport$=ge;window.tablet$=gr;window.screen$=Gi;window.print$=Ji;window.alert$=pn;window.component$=Qi;})(); diff --git a/_static/sphinx_immaterial_theme.af531f03affe68837.min.css b/_static/sphinx_immaterial_theme.af531f03affe68837.min.css new file mode 100644 index 0000000..abac097 --- /dev/null +++ b/_static/sphinx_immaterial_theme.af531f03affe68837.min.css @@ -0,0 +1,4 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:content-box;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:separate;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:transparent;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root,[data-md-color-scheme=default]{--md-default-fg-color:rgba(0,0,0,.87);--md-default-fg-color--light:rgba(0,0,0,.54);--md-default-fg-color--lighter:rgba(0,0,0,.32);--md-default-fg-color--lightest:rgba(0,0,0,.07);--md-default-bg-color:#fff;--md-default-bg-color--light:hsla(0,0%,100%,.7);--md-default-bg-color--lighter:hsla(0,0%,100%,.3);--md-default-bg-color--lightest:hsla(0,0%,100%,.12);--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7);--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-hl-color:rgba(255,255,0,.5);--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(255,255,0,.5);--md-typeset-del-color:rgba(245,80,61,.15);--md-typeset-ins-color:rgba(11,213,112,.15);--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-table-color:rgba(0,0,0,.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-fg-color:#fff;--md-footer-fg-color--light:hsla(0,0%,100%,.7);--md-footer-fg-color--lighter:hsla(0,0%,100%,.3);--md-footer-bg-color:rgba(0,0,0,.87);--md-footer-bg-color--dark:rgba(0,0,0,.32);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.05),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.1),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.35)}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}.si-icon-inline:before{background-color:var(--md-default-fg-color);content:"";display:inline-flex;height:1.125em;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;vertical-align:text-top;width:1.125em}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}body,input{font-feature-settings:"kern","liga";font-family:var(--md-text-font-family)}body,code,input,kbd,pre{color:var(--md-typeset-color)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent)}.md-typeset a code{color:currentcolor;transition:background-color 125ms}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset .code-block-caption+.notranslate .highlighttable,.md-typeset .code-block-caption+.notranslate pre{margin-top:0}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light);cursor:help;text-decoration:none}@media (hover:none){.md-typeset abbr{position:relative}.md-typeset abbr[title]:-webkit-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}.md-typeset abbr[title]:-moz-any(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}[dir=ltr] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{left:0}[dir=ltr] .md-typeset abbr[title]:is(:focus,:hover):after{left:0}[dir=rtl] .md-typeset abbr[title]:-webkit-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:-moz-any(:focus,:hover):after{right:0}[dir=rtl] .md-typeset abbr[title]:is(:focus,:hover):after{right:0}.md-typeset abbr[title]:is(:focus,:hover):after{background-color:var(--md-default-fg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z3);color:var(--md-default-bg-color);content:attr(title);display:inline-block;font-size:.7rem;margin-top:2em;max-width:80%;min-width:-moz-max-content;min-width:max-content;padding:.2rem .3rem;position:absolute;width:auto}}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li :-webkit-any(ul,ol),.md-typeset ul li :-webkit-any(ul,ol){margin-bottom:.5em;margin-top:.5em}.md-typeset ol li :-moz-any(ul,ol),.md-typeset ul li :-moz-any(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset ol li :-webkit-any(ul,ol),[dir=ltr] .md-typeset ul li :-webkit-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :-moz-any(ul,ol),[dir=ltr] .md-typeset ul li :-moz-any(ul,ol){margin-left:.625em}[dir=ltr] .md-typeset ol li :is(ul,ol),[dir=ltr] .md-typeset ul li :is(ul,ol){margin-left:.625em}[dir=rtl] .md-typeset ol li :-webkit-any(ul,ol),[dir=rtl] .md-typeset ul li :-webkit-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :-moz-any(ul,ol),[dir=rtl] .md-typeset ul li :-moz-any(ul,ol){margin-right:.625em}[dir=rtl] .md-typeset ol li :is(ul,ol),[dir=rtl] .md-typeset ul li :is(ul,ol){margin-right:.625em}.md-typeset ol li :is(ul,ol),.md-typeset ul li :is(ul,ol){margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset img[src$="#gh-dark-mode-only"],.md-typeset img[src$="#only-dark"]{display:none}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table.data:not(.plain){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto;width:-moz-max-content;width:max-content}@media print{.md-typeset table.data:not(.plain){display:table}}.md-typeset table.data:not(.plain)+*{margin-top:1.5em}.md-typeset table.data:not(.plain) :-webkit-any(th,td)>:first-child{margin-top:0}.md-typeset table.data:not(.plain) :-moz-any(th,td)>:first-child{margin-top:0}.md-typeset table.data:not(.plain) :is(th,td)>:first-child{margin-top:0}.md-typeset table.data:not(.plain) :-webkit-any(th,td)>:last-child{margin-bottom:0}.md-typeset table.data:not(.plain) :-moz-any(th,td)>:last-child{margin-bottom:0}.md-typeset table.data:not(.plain) :is(th,td)>:last-child{margin-bottom:0}.md-typeset table.data:not(.plain) :-webkit-any(th,td):not([align],.align-center,.align-left,.align-right){text-align:left}.md-typeset table.data:not(.plain) :-moz-any(th,td):not([align],.align-center,.align-left,.align-right){text-align:left}.md-typeset table.data:not(.plain) :is(th,td):not([align],.align-center,.align-left,.align-right){text-align:left}[dir=rtl] .md-typeset table.data:not(.plain) :-webkit-any(th,td):not([align],.align-center,.align-left,.align-right){text-align:right}[dir=rtl] .md-typeset table.data:not(.plain) :-moz-any(th,td):not([align],.align-center,.align-left,.align-right){text-align:right}[dir=rtl] .md-typeset table.data:not(.plain) :is(th,td):not([align],.align-center,.align-left,.align-right){text-align:right}.md-typeset table.data:not(.plain) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table.data:not(.plain) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table.data:not(.plain) tbody tr{transition:background-color 125ms}.md-typeset table.data:not(.plain) tbody tr:hover{background-color:rgba(0,0,0,.035);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table.data:not(.plain) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.9375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background:var(--md-typeset-mark-color);color:var(--md-default-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.9375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;position:absolute;right:.5em;top:.5em;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:-webkit-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:-moz-any(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-clipboard--inline:is(:focus,:hover) code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:rgba(0,0,0,.54);height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.9375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{align-content:baseline;display:flex;flex-wrap:wrap;justify-content:center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{display:flex;flex-grow:0.01;outline-color:var(--md-accent-fg-color);overflow:hidden;padding-bottom:.4rem;padding-top:1.4rem;transition:opacity .25s}.md-footer__link:-webkit-any(:focus,:hover){opacity:.7}.md-footer__link:-moz-any(:focus,:hover){opacity:.7}.md-footer__link:is(:focus,:hover){opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.9375em){.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;line-height:2.4rem;max-width:calc(100% - 2.4rem);padding:0 1rem;position:relative;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;left:0;margin-top:-1rem;opacity:.7;padding:0 1rem;position:absolute;right:0}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:-webkit-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:-moz-any(:focus,:hover){color:var(--md-footer-fg-color)}html .md-footer-meta.md-typeset a:is(:focus,:hover){color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-typeset .md-button:is(:focus,:hover){background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:-webkit-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:-moz-any(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input:is(:focus,:hover){border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem transparent,0 .2rem .4rem transparent;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2);transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.1875em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}.md-header__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem}[dir=ltr] .md-header__title{margin-left:1rem}[dir=rtl] .md-header__title{margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-hero{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-size:1rem;overflow:hidden;transition:background .25s}.md-hero__inner{margin-top:1rem;padding:.8rem .8rem .4rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s;transition-delay:.1s}@media screen and (max-width:76.1875em){.md-hero__inner{margin-bottom:1.2rem;margin-top:2.4rem}}[data-md-state=hidden] .md-hero__inner{opacity:0;pointer-events:none;transform:translateY(.625rem);transition:transform 0ms .4s,opacity .1s 0ms}.md-hero--expand .md-hero__inner{margin-bottom:1.2rem}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{align-items:center;display:flex;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo :-webkit-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :-moz-any(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__title .md-nav__button.md-logo :is(img,svg){fill:currentcolor;display:block;height:2.4rem;max-width:100%;-o-object-fit:contain;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__item{padding:0 .6rem}[dir=ltr] .md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-left:0}.md-nav__link{align-items:center;cursor:pointer;display:flex;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link.md-nav__sticky{box-shadow:0 -.625em var(--md-default-bg-color),0 .625em var(--md-default-bg-color)}.md-nav__link--passed{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active{color:var(--md-typeset-a-color)}.md-nav__link--in-viewport{position:relative}.md-nav__link--in-viewport:before{background-color:var(--md-primary-fg-color);bottom:0;content:"";height:100%;position:absolute;right:calc(100% + .3rem);top:0;width:.05rem}.md-nav__item .md-nav__link--index [href]{width:100%}.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link>*{cursor:pointer;display:flex}.md-nav__sticky{background-color:var(--md-default-bg-color);position:sticky;top:var(--md-nav__header-height,0);z-index:var(--md-nav__sticky-zindex)}.md-nav .md-ellipsis{display:block;flex-grow:1;white-space:normal}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.1875em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__sticky{background-color:transparent;box-shadow:none;position:static;z-index:auto}.md-nav--primary :-webkit-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :-moz-any(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary :is(.md-nav__title,.md-nav__item){font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;line-height:2.4rem;min-height:5.6rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest);padding:0}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:transparent;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:transparent}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-nav .md-nav__title .md-ellipsis{white-space:nowrap}.md-nav .md-nav__title .md-ellipsis wbr{display:none}}@media screen and (max-width:59.9375em){.md-nav__current-nested{display:none}.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav__current-toc{display:none}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}}@media screen and (min-width:76.25em){.md-nav{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon,.md-nav__toggle~.md-nav{display:none}.md-nav__toggle:-webkit-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:-moz-any(:checked,:indeterminate)~.md-nav{display:block}.md-nav__toggle:is(:checked,:indeterminate)~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700;pointer-events:none}.md-nav__item--section>.md-nav__link--index [href]{pointer-events:auto}.md-nav__item--section>.md-nav__link .md-nav__icon{display:none}.md-nav__item--section>.md-nav{display:block}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s,transform .25s;width:.9rem}[dir=rtl] .md-nav__icon{transform:rotate(180deg)}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:-.1rem;width:100%}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon,.md-nav__item--nested .md-nav__toggle:indeterminate~.md-nav__link .md-nav__icon{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__list>.md-nav__item--nested,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block;padding:0}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);font-weight:700;margin-top:0;padding:0 .6rem;position:sticky;top:0;z-index:var(--md-nav__sticky-zindex,1)}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__link--index){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link .md-nav__icon{display:none}.md-nav--lifted .md-nav[data-md-level="1"]{display:block}[dir=ltr] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-right:.6rem}[dir=rtl] .md-nav--lifted .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:.6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested){padding:0 .6rem}.md-nav--integrated>.md-nav__list>.md-nav__item--active:not(.md-nav__item--nested)>.md-nav__link{padding:0}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:rgba(0,0,0,.54);cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.1875em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem transparent;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:rgba(0,0,0,.26);border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:hsla(0,0%,100%,.12)}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem rgba(0,0,0,.07);color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:transparent;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::-moz-placeholder{-moz-transition:color .25s;transition:color .25s}.md-search__input::placeholder{transition:color .25s}.md-search__input::-moz-placeholder{color:var(--md-default-fg-color--light)}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.9375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::-moz-placeholder{color:var(--md-primary-bg-color--light)}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input::-moz-placeholder{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:var(--md-default-fg-color--light)}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.9375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>*{margin-left:.2rem}[dir=rtl] .md-search__options>*{margin-right:.2rem}.md-search__options>*{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>*{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.9375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more summary{color:var(--md-typeset-a-color);cursor:pointer;display:block;font-size:.64rem;outline:none;padding:.75em .8rem;scroll-snap-align:start;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more summary{padding-left:2.2rem}[dir=rtl] .md-search-result__more summary{padding-right:2.2rem}}.md-search-result__more summary:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary:is(:focus,:hover){background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more summary::marker{display:none}.md-search-result__more summary::-webkit-details-marker{display:none}.md-search-result__more summary~*>*{opacity:.65}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}.md-search-result__article--document .md-search-result__title{font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.9375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result__title{font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result__teaser{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--md-default-fg-color--light);display:-webkit-box;font-size:.64rem;line-height:1.6;margin:.5em 0;max-height:2rem;overflow:hidden;text-overflow:ellipsis}@media screen and (max-width:44.9375em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}@media screen and (min-width:60em) and (max-width:76.1875em){.md-search-result__teaser{-webkit-line-clamp:3;max-height:3rem}}.md-search-result__teaser mark{background-color:transparent;text-decoration:underline}.md-search-result__terms{font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:transparent;color:var(--md-accent-fg-color)}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:-webkit-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-webkit-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:-moz-any(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);-moz-transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms;transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select:is(:focus-within,:hover) .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid transparent;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid transparent;border-right:.2rem solid transparent;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.1875em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) transparent;scrollbar-width:thin}.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) transparent}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.1875em){.md-overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.1875em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;list-style:none;margin:0;padding:0;white-space:nowrap}.md-tabs__item{display:inline-block;height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link--active,.md-tabs__link:-webkit-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:-moz-any(:focus,:hover){color:inherit;opacity:1}.md-tabs__link--active,.md-tabs__link:is(:focus,:hover){color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags{margin-bottom:.75em;margin-top:-.125em}[dir=ltr] .md-typeset .md-tag{margin-right:.5em}[dir=rtl] .md-typeset .md-tag{margin-left:.5em}.md-typeset .md-tag{background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-block;font-size:.64rem;font-weight:700;letter-spacing:normal;line-height:1.6;margin-bottom:.5em;padding:.3125em .9375em;vertical-align:middle}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;margin-right:.4em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon:-webkit-any(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}.md-typeset .md-tag-icon:-moz-any(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}.md-typeset .md-tag-icon:is(a:focus,a:hover):before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--md-default-fg-color--lightest);transform:scale(.95)}75%{box-shadow:0 0 0 .625em transparent;transform:scale(1)}to{box-shadow:0 0 0 0 transparent;transform:scale(.95)}}:root{--md-tooltip-width:20rem}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}:-webkit-any(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}:-moz-any(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}:is(.focus-visible>.md-tooltip,.md-tooltip:target){outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-weight:400;outline:none;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}.md-annotation:not([hidden]){display:inline-block;line-height:1.325}.md-annotation__index{cursor:pointer;font-family:var(--md-code-font-family);font-size:.85em;margin:0 1ch;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.md-annotation .md-annotation__index{color:#fff;transition:z-index .25s}.md-annotation .md-annotation__index:-webkit-any(:focus,:hover){color:#fff}.md-annotation .md-annotation__index:-moz-any(:focus,:hover){color:#fff}.md-annotation .md-annotation__index:is(:focus,:hover){color:#fff}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);border-radius:2ch;content:"";height:2.2ch;left:-.125em;margin:0 -.4ch;padding:0 .4ch;position:absolute;top:0;transition:color .25s,background-color .25s;width:calc(100% + 1.2ch);width:max(2.2ch,100% + 1.2ch);z-index:-1}@media not all and (prefers-reduced-motion){[data-md-visible]>.md-annotation__index:after{animation:pulse 2s infinite}}.md-tooltip--active+.md-annotation__index:after{animation:none;transition:color .25s,background-color .25s}code .md-annotation__index{font-family:var(--md-code-font-family);font-size:inherit}:-webkit-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:-moz-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:is(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index){color:var(--md-accent-bg-color)}:-webkit-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}:-moz-any(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}:is(.md-tooltip--active+.md-annotation__index,:hover>.md-annotation__index):after{background-color:var(--md-accent-fg-color)}.md-tooltip--active+.md-annotation__index{animation:none;transition:none;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block;line-height:90%}.md-annotation__index [data-md-annotation-id]:before{content:attr(data-md-annotation-id);display:inline-block;padding-bottom:.1em;transform:scale(1.15);transition:transform .4s cubic-bezier(.1,.7,.1,1);vertical-align:.065em}@media not print{.md-annotation__index [data-md-annotation-id]:before{content:"+"}:focus-within>.md-annotation__index [data-md-annotation-id]:before{transform:scale(1.25) rotate(45deg)}}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:-webkit-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:-moz-any(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top:is(:focus,:hover){background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:-webkit-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-webkit-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:-moz-any(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;-moz-transition:max-height 0ms,opacity .25s;transition:max-height 0ms,opacity .25s}.md-version:is(:focus-within,:hover) .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:-webkit-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:-moz-any(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:is(:focus,:hover){color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.05rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition :-webkit-any(.admonition,details),.md-typeset details :-webkit-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition :-moz-any(.admonition,details),.md-typeset details :-moz-any(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition :is(.admonition,details),.md-typeset details :is(.admonition,details){margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:rgba(68,138,255,.1);border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.note){border-color:#448aff}.md-typeset :-moz-any(.admonition,details):-moz-any(.note){border-color:#448aff}.md-typeset :is(.admonition,details):is(.note){border-color:#448aff}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :is(.note)>:is(.admonition-title,summary){background-color:rgba(68,138,255,.1)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):before{background-color:#448aff;mask-image:var(--md-admonition-icon--note)}.md-typeset :is(.note)>:is(.admonition-title,summary):before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset :-webkit-any(.note)>:-webkit-any(.admonition-title,summary):after{color:#448aff}.md-typeset :-moz-any(.note)>:-moz-any(.admonition-title,summary):after{color:#448aff}.md-typeset :is(.note)>:is(.admonition-title,summary):after{color:#448aff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-moz-any(.admonition,details):-moz-any(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :is(.admonition,details):is(.abstract,.summary,.tldr){border-color:#00b0ff}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary){background-color:rgba(0,176,255,.1)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):before{background-color:#00b0ff;mask-image:var(--md-admonition-icon--abstract)}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset :-webkit-any(.abstract,.summary,.tldr)>:-webkit-any(.admonition-title,summary):after{color:#00b0ff}.md-typeset :-moz-any(.abstract,.summary,.tldr)>:-moz-any(.admonition-title,summary):after{color:#00b0ff}.md-typeset :is(.abstract,.summary,.tldr)>:is(.admonition-title,summary):after{color:#00b0ff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.info,.todo){border-color:#00b8d4}.md-typeset :-moz-any(.admonition,details):-moz-any(.info,.todo){border-color:#00b8d4}.md-typeset :is(.admonition,details):is(.info,.todo){border-color:#00b8d4}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary){background-color:rgba(0,184,212,.1)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):before{background-color:#00b8d4;mask-image:var(--md-admonition-icon--info)}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset :-webkit-any(.info,.todo)>:-webkit-any(.admonition-title,summary):after{color:#00b8d4}.md-typeset :-moz-any(.info,.todo)>:-moz-any(.admonition-title,summary):after{color:#00b8d4}.md-typeset :is(.info,.todo)>:is(.admonition-title,summary):after{color:#00b8d4}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-moz-any(.admonition,details):-moz-any(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :is(.admonition,details):is(.tip,.hint,.important){border-color:#00bfa5}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary){background-color:rgba(0,191,165,.1)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):before{background-color:#00bfa5;mask-image:var(--md-admonition-icon--tip)}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset :-webkit-any(.tip,.hint,.important)>:-webkit-any(.admonition-title,summary):after{color:#00bfa5}.md-typeset :-moz-any(.tip,.hint,.important)>:-moz-any(.admonition-title,summary):after{color:#00bfa5}.md-typeset :is(.tip,.hint,.important)>:is(.admonition-title,summary):after{color:#00bfa5}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.success,.check,.done){border-color:#00c853}.md-typeset :-moz-any(.admonition,details):-moz-any(.success,.check,.done){border-color:#00c853}.md-typeset :is(.admonition,details):is(.success,.check,.done){border-color:#00c853}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary){background-color:rgba(0,200,83,.1)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):before{background-color:#00c853;mask-image:var(--md-admonition-icon--success)}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset :-webkit-any(.success,.check,.done)>:-webkit-any(.admonition-title,summary):after{color:#00c853}.md-typeset :-moz-any(.success,.check,.done)>:-moz-any(.admonition-title,summary):after{color:#00c853}.md-typeset :is(.success,.check,.done)>:is(.admonition-title,summary):after{color:#00c853}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :-moz-any(.admonition,details):-moz-any(.question,.help,.faq){border-color:#64dd17}.md-typeset :is(.admonition,details):is(.question,.help,.faq){border-color:#64dd17}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary){background-color:rgba(100,221,23,.1)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):before{background-color:#64dd17;mask-image:var(--md-admonition-icon--question)}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset :-webkit-any(.question,.help,.faq)>:-webkit-any(.admonition-title,summary):after{color:#64dd17}.md-typeset :-moz-any(.question,.help,.faq)>:-moz-any(.admonition-title,summary):after{color:#64dd17}.md-typeset :is(.question,.help,.faq)>:is(.admonition-title,summary):after{color:#64dd17}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-moz-any(.admonition,details):-moz-any(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :is(.admonition,details):is(.warning,.caution,.attention){border-color:#ff9100}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary){background-color:rgba(255,145,0,.1)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):before{background-color:#ff9100;mask-image:var(--md-admonition-icon--warning)}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset :-webkit-any(.warning,.caution,.attention)>:-webkit-any(.admonition-title,summary):after{color:#ff9100}.md-typeset :-moz-any(.warning,.caution,.attention)>:-moz-any(.admonition-title,summary):after{color:#ff9100}.md-typeset :is(.warning,.caution,.attention)>:is(.admonition-title,summary):after{color:#ff9100}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-moz-any(.admonition,details):-moz-any(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :is(.admonition,details):is(.failure,.fail,.missing){border-color:#ff5252}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary){background-color:rgba(255,82,82,.1)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):before{background-color:#ff5252;mask-image:var(--md-admonition-icon--failure)}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset :-webkit-any(.failure,.fail,.missing)>:-webkit-any(.admonition-title,summary):after{color:#ff5252}.md-typeset :-moz-any(.failure,.fail,.missing)>:-moz-any(.admonition-title,summary):after{color:#ff5252}.md-typeset :is(.failure,.fail,.missing)>:is(.admonition-title,summary):after{color:#ff5252}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.danger,.error){border-color:#ff1744}.md-typeset :-moz-any(.admonition,details):-moz-any(.danger,.error){border-color:#ff1744}.md-typeset :is(.admonition,details):is(.danger,.error){border-color:#ff1744}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary){background-color:rgba(255,23,68,.1)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):before{background-color:#ff1744;mask-image:var(--md-admonition-icon--danger)}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset :-webkit-any(.danger,.error)>:-webkit-any(.admonition-title,summary):after{color:#ff1744}.md-typeset :-moz-any(.danger,.error)>:-moz-any(.admonition-title,summary):after{color:#ff1744}.md-typeset :is(.danger,.error)>:is(.admonition-title,summary):after{color:#ff1744}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.bug){border-color:#f50057}.md-typeset :-moz-any(.admonition,details):-moz-any(.bug){border-color:#f50057}.md-typeset :is(.admonition,details):is(.bug){border-color:#f50057}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :is(.bug)>:is(.admonition-title,summary){background-color:rgba(245,0,87,.1)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):before{background-color:#f50057;mask-image:var(--md-admonition-icon--bug)}.md-typeset :is(.bug)>:is(.admonition-title,summary):before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset :-webkit-any(.bug)>:-webkit-any(.admonition-title,summary):after{color:#f50057}.md-typeset :-moz-any(.bug)>:-moz-any(.admonition-title,summary):after{color:#f50057}.md-typeset :is(.bug)>:is(.admonition-title,summary):after{color:#f50057}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.example){border-color:#7c4dff}.md-typeset :-moz-any(.admonition,details):-moz-any(.example){border-color:#7c4dff}.md-typeset :is(.admonition,details):is(.example){border-color:#7c4dff}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :is(.example)>:is(.admonition-title,summary){background-color:rgba(124,77,255,.1)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):before{background-color:#7c4dff;mask-image:var(--md-admonition-icon--example)}.md-typeset :is(.example)>:is(.admonition-title,summary):before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset :-webkit-any(.example)>:-webkit-any(.admonition-title,summary):after{color:#7c4dff}.md-typeset :-moz-any(.example)>:-moz-any(.admonition-title,summary):after{color:#7c4dff}.md-typeset :is(.example)>:is(.admonition-title,summary):after{color:#7c4dff}.md-typeset :-webkit-any(.admonition,details):-webkit-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :-moz-any(.admonition,details):-moz-any(.quote,.cite){border-color:#9e9e9e}.md-typeset :is(.admonition,details):is(.quote,.cite){border-color:#9e9e9e}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary){background-color:hsla(0,0%,62%,.1)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):before{background-color:#9e9e9e;mask-image:var(--md-admonition-icon--quote)}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset :-webkit-any(.quote,.cite)>:-webkit-any(.admonition-title,summary):after{color:#9e9e9e}.md-typeset :-moz-any(.quote,.cite)>:-moz-any(.admonition-title,summary):after{color:#9e9e9e}.md-typeset :is(.quote,.cite)>:is(.admonition-title,summary):after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:-webkit-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:-moz-any(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li:is(:hover,:target) .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :-webkit-any(:hover,:target)>.headerlink{opacity:1;-webkit-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :-moz-any(:hover,:target)>.headerlink{opacity:1;-moz-transition:color .25s,opacity 125ms;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset :is(:hover,:target)>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:-webkit-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:-moz-any(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset .headerlink:is(:focus,:hover),.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset :-webkit-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :-moz-any(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset :is(h1,h2,h3):target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.9375em){.md-typeset div.arithmatex{margin:0 -.8rem}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto;width:-moz-min-content;width:min-content}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset :-webkit-any(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset :-moz-any(del,ins,.comment).critic{box-decoration-break:clone}.md-typeset :is(del,ins,.comment).critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :is(.emojione,.twemoji,.gemoji){display:inline-flex;height:1.125em;vertical-align:text-top}.md-typeset :-webkit-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :-moz-any(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.md-typeset :is(.emojione,.twemoji,.gemoji) svg{fill:currentcolor;max-height:100%;width:1.125em}.highlight :-webkit-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :-moz-any(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight :is(.o,.ow){color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight :-webkit-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-moz-any(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :is(.cpf,.l,.s,.sb,.sc,.s2,.si,.s1,.ss){color:var(--md-code-hl-string-color)}.highlight :-webkit-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-moz-any(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :is(.cp,.se,.sh,.sr,.sx){color:var(--md-code-hl-special-color)}.highlight :-webkit-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-moz-any(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :is(.m,.mb,.mf,.mh,.mi,.il,.mo){color:var(--md-code-hl-number-color)}.highlight :-webkit-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :is(.k,.kd,.kn,.kp,.kr,.kt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.n){color:var(--md-code-hl-name-color)}.highlight :-moz-any(.n){color:var(--md-code-hl-name-color)}.highlight :is(.n){color:var(--md-code-hl-name-color)}.highlight :-webkit-any(.kc,.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-moz-any(.kc,.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :is(.kc,.no,.nb,.bp){color:var(--md-code-hl-constant-color)}.highlight :-webkit-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-moz-any(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :is(.nc,.ne,.nf,.nn){color:var(--md-code-hl-function-color)}.highlight :-webkit-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-moz-any(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :is(.nd,.ni,.nl,.nt){color:var(--md-code-hl-keyword-color)}.highlight :-webkit-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-moz-any(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :is(.c,.cm,.c1,.ch,.cs,.sd){color:var(--md-code-hl-comment-color)}.highlight :-webkit-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-moz-any(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :is(.na,.nv,.vc,.vg,.vi){color:var(--md-code-hl-variable-color)}.highlight :-webkit-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-moz-any(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :is(.ge,.gr,.gh,.go,.gp,.gs,.gu,.gt){color:var(--md-code-hl-generic-color)}.highlight :-webkit-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :-moz-any(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight :is(.gd,.gi){border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color);display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable :-webkit-any(tbody,td){display:block;padding:0}.highlighttable :-moz-any(tbody,td){display:block;padding:0}.highlighttable :is(tbody,td){display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;padding-right:.5882352941em}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset :-webkit-any(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset :-moz-any(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset :is(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset :-webkit-any(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result:after{clear:both;content:"";display:block}.md-typeset :-moz-any(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result:after{clear:both;content:"";display:block}.md-typeset :is(.highlight,.highlighttable,.literal-block-wrapper,div[class^=highlight-],.results-prefix)+.result:after{clear:both;content:"";display:block}.md-typeset .results .results-prefix+.result{margin-top:0}.md-typeset .results .results-prefix{background-color:var(--md-code-bg-color);font-size:.85em;font-weight:700;margin-top:-1em;padding:.6617647059em 1.1764705882em}@media screen and (max-width:44.9375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:-webkit-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:-moz-any(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys kbd:is(:before,:after){-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-accent-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid transparent;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-accent-fg-color)}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,transparent);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,transparent);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.9375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-accent-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){background-color:var(--md-accent-fg-color--transparent)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}.rst-versions{font-family:var(--md-text-font-family)}.rst-versions.rst-badge{bottom:inherit!important;font-size:.85rem;height:auto;top:50px}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color)}.mermaid{line-height:normal;margin:1em 0}:root>*{--md-graphviz-edge-color:var(--md-default-fg-color);--md-graphviz-node-bg-color:var(--md-accent-fg-color--transparent);--md-graphviz-node-fg-color:var(--md-accent-fg-color);--md-graphviz-label-bg-color:var(--md-default-bg-color);--md-graphviz-label-fg-color:var(--md-code-fg-color);--md-graphviz-a-hover-color:var(--md-primary-fg-color)}.graphviz{margin:1em 0}.graphviz a:hover>text{fill:var(--md-graphviz-hover-color)!important}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}}.md-typeset .align-left{text-align:left}.md-typeset .align-right{text-align:right}.md-typeset .align-center{clear:both;text-align:center}.md-typeset .align-top{vertical-align:top}.md-typeset .align-middle{vertical-align:middle}.md-typeset .align-bottom{vertical-align:bottom}.md-typeset .figure.align-left,.md-typeset figure.align-left,.md-typeset img.align-left,.md-typeset object.align-left,.md-typeset table.align-left{margin-right:auto}.md-typeset .figure.align-center,.md-typeset figure.align-center,.md-typeset img.align-center,.md-typeset object.align-center,.md-typeset table.align-center{margin-left:auto;margin-right:auto}.md-typeset .figure.align-right,.md-typeset figure.align-right,.md-typeset img.align-right,.md-typeset object.align-right,.md-typeset table.align-right{margin-left:auto}.md-typeset .figure.align-center,.md-typeset .figure.align-right,.md-typeset figure.align-center,.md-typeset figure.align-right,.md-typeset img.align-center,.md-typeset img.align-right,.md-typeset object.align-center,.md-typeset object.align-right{display:block}.md-typeset .figure.align-left,.md-typeset .figure.align-right,.md-typeset figure.align-left,.md-typeset figure.align-right,.md-typeset table.align-center,.md-typeset table.align-left,.md-typeset table.align-right{text-align:inherit}.md-typeset .rubric{font-weight:700}.md-typeset .viewcode-block .viewcode-back{float:right}.md-typeset .versionmodified{font-style:italic}.md-typeset div.line-block{display:block}.md-typeset div.line-block div.line-block{margin-left:1.5em}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt{background:var(--md-code-bg-color);font-family:var(--md-code-font-family)}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt{background:var(--md-code-bg-color);font-family:var(--md-code-font-family)}.md-typeset :is(dl.objdesc,dl.api-field)>dt{background:var(--md-code-bg-color);font-family:var(--md-code-font-family)}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt code{border-radius:0;padding:0}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt code{border-radius:0;padding:0}.md-typeset :is(dl.objdesc,dl.api-field)>dt code{border-radius:0;padding:0}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .sig-name:not(.sig-name-nonprimary){color:var(--md-code-hl-name-color);font-weight:700;padding:0}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .sig-name:not(.sig-name-nonprimary){color:var(--md-code-hl-name-color);font-weight:700;padding:0}.md-typeset :is(dl.objdesc,dl.api-field)>dt .sig-name:not(.sig-name-nonprimary){color:var(--md-code-hl-name-color);font-weight:700;padding:0}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .sig-param{font-style:normal}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .sig-param{font-style:normal}.md-typeset :is(dl.objdesc,dl.api-field)>dt .sig-param{font-style:normal}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .sig-param .n:not(.desctype){color:var(--md-default-fg-color--light)}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .sig-param .n:not(.desctype){color:var(--md-default-fg-color--light)}.md-typeset :is(dl.objdesc,dl.api-field)>dt .sig-param .n:not(.desctype){color:var(--md-default-fg-color--light)}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .sig-param a.reference .n:not(.desctype):hover{color:var(--md-accent-fg-color)}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .sig-param a.reference .n:not(.desctype):hover{color:var(--md-accent-fg-color)}.md-typeset :is(dl.objdesc,dl.api-field)>dt .sig-param a.reference .n:not(.desctype):hover{color:var(--md-accent-fg-color)}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-param-decl:before{content:"\a ";white-space:pre}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-param-decl:before{content:"\a ";white-space:pre}.md-typeset :is(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-param-decl:before{content:"\a ";white-space:pre}.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-paren~.sig-paren:before{content:"\a";white-space:pre}.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-paren~.sig-paren:before{content:"\a";white-space:pre}.md-typeset :is(dl.objdesc,dl.api-field)>dt.sig-wrap .sig-paren~.sig-paren:before{content:"\a";white-space:pre}.md-typeset dl.objdesc>dd>dl.field-list>dt>.colon{display:none}.md-typeset .sig-inline a.reference.sig-name,.md-typeset .sig-inline a.reference:not(.desctype)>.n,.md-typeset .sig-inline a.reference>.sig-name,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference.sig-name,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference>.sig-name{color:var(--md-typeset-a-color)}.md-typeset .sig-inline a.reference.sig-name,.md-typeset .sig-inline a.reference:not(.desctype)>.n,.md-typeset .sig-inline a.reference>.sig-name,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference.sig-name,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference>.sig-name{color:var(--md-typeset-a-color)}.md-typeset .sig-inline a.reference.sig-name,.md-typeset .sig-inline a.reference:not(.desctype)>.n,.md-typeset .sig-inline a.reference>.sig-name,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference.sig-name,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference>.sig-name{color:var(--md-typeset-a-color)}.md-typeset .sig-inline a.reference.sig-name:hover,.md-typeset .sig-inline a.reference:not(.desctype)>.n:hover,.md-typeset .sig-inline a.reference>.sig-name:hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference.sig-name:hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n:hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt a.reference>.sig-name:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline a.reference.sig-name:hover,.md-typeset .sig-inline a.reference:not(.desctype)>.n:hover,.md-typeset .sig-inline a.reference>.sig-name:hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference.sig-name:hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n:hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt a.reference>.sig-name:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline a.reference.sig-name:hover,.md-typeset .sig-inline a.reference:not(.desctype)>.n:hover,.md-typeset .sig-inline a.reference>.sig-name:hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference.sig-name:hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference:not(.desctype)>.n:hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt a.reference>.sig-name:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline .desctype,.md-typeset .sig-inline .desctype>a.reference,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference{color:var(--md-code-hl-special-color)}.md-typeset .sig-inline .desctype,.md-typeset .sig-inline .desctype>a.reference,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference{color:var(--md-code-hl-special-color)}.md-typeset .sig-inline .desctype,.md-typeset .sig-inline .desctype>a.reference,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype>a.reference{color:var(--md-code-hl-special-color)}.md-typeset .sig-inline .desctype .n,.md-typeset .sig-inline .desctype>a.reference .n,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype .n,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference .n{color:inherit}.md-typeset .sig-inline .desctype .n,.md-typeset .sig-inline .desctype>a.reference .n,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype .n,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference .n{color:inherit}.md-typeset .sig-inline .desctype .n,.md-typeset .sig-inline .desctype>a.reference .n,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype .n,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype>a.reference .n{color:inherit}.md-typeset .sig-inline .desctype:-webkit-any(a.reference):hover,.md-typeset .sig-inline .desctype>a.reference:hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype:-webkit-any(a.reference):hover,.md-typeset :-webkit-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline .desctype:-moz-any(a.reference):hover,.md-typeset .sig-inline .desctype>a.reference:hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype:-moz-any(a.reference):hover,.md-typeset :-moz-any(dl.objdesc,dl.api-field)>dt .desctype>a.reference:hover{color:var(--md-accent-fg-color)}.md-typeset .sig-inline .desctype:is(a.reference):hover,.md-typeset .sig-inline .desctype>a.reference:hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype:is(a.reference):hover,.md-typeset :is(dl.objdesc,dl.api-field)>dt .desctype>a.reference:hover{color:var(--md-accent-fg-color)}.md-typeset dl.objdesc>dt{background:var(--md-code-bg-color);font-family:var(--md-code-font-family);padding-left:.5em;padding-right:.5em;padding-top:.5em}.md-typeset dl.objdesc>dt,.md-typeset dl.objdesc>dt code{font-size:.75rem}.md-typeset dl.objdesc>dt .property{color:var(--md-code-hl-keyword-color);font-style:normal;font-weight:700}.md-typeset dl.objdesc>dt .sig-prename{color:var(--md-code-hl-name-color);padding:0}.md-typeset dl.objdesc>dt .viewcode-back,.md-typeset dl.objdesc>dt .viewcode-link{float:right;text-align:right}.md-typeset dl.objdesc>dt.api-include-path,.md-typeset dl.objdesc>dt.api-include-path code{font-size:.65rem}.md-typeset dl.objdesc>dt:first-child{padding-top:.5em}.md-typeset dl.objdesc>dt:last-of-type{padding-bottom:.5em}.md-typeset dl.objdesc>dd dl.field-list>dt{font-size:1em;font-weight:700;margin-bottom:1em}.md-typeset dl.objdesc>dd dd.noindent{margin-left:0}.md-typeset dl.api-field>dt{display:table}.md-typeset dl.api-field>dt a.headerlink{left:.5em;margin-left:0;position:relative;width:0}.md-typeset dl.api-field>dt,.md-typeset dl.api-field>dt code{font-size:.65rem}.md-typeset dl.api-field>dt.api-parameter-kind{float:right;font-family:var(--md-text-font-family)}.md-typeset dl.api-field>dt.api-parameter-kind:before{content:"["}.md-typeset dl.api-field>dt.api-parameter-kind:after{content:"]"}.md-typeset dl.objdesc.summary>dd,.md-typeset dl.objdesc.summary>dd>p:first-child{margin-top:0}.md-typeset .sig-inline:-webkit-any(.c-texpr,.cpp-texpr){background-color:unset;font-family:unset}.md-typeset .sig-inline:-moz-any(.c-texpr,.cpp-texpr){background-color:unset;font-family:unset}.md-typeset .sig-inline:is(.c-texpr,.cpp-texpr){background-color:unset;font-family:unset}.md-nav__link{white-space:nowrap}:root>*{--objinfo-icon-fg-alias:#e65100;--objinfo-icon-fg-default:#424242;--objinfo-icon-fg-data:#1565c0;--objinfo-icon-fg-procedure:#6a1b9a;--objinfo-icon-fg-sub-data:#2e7d32;--objinfo-icon-bg-default:var(--md-default-bg-color)}@media screen{[data-md-color-scheme=slate]{--objinfo-icon-fg-alias:#ffb74d;--objinfo-icon-fg-default:#e0e0e0;--objinfo-icon-fg-data:#64b5f6;--objinfo-icon-fg-procedure:#ce93d8;--objinfo-icon-fg-sub-data:#81c784}}.objinfo-icon{background-color:var(--objinfo-icon-bg-default);border:1px solid var(--objinfo-icon-fg-default);border-radius:2px;color:var(--objinfo-icon-fg-default);display:inline-table;flex-shrink:0;font-family:var(--md-text-font-family);font-weight:500;height:16px;line-height:16px;margin-right:8px;text-align:center;vertical-align:middle;width:16px}.objinfo-icon__alias{background-color:var(--objinfo-icon-fg-alias);border:1px solid var(--objinfo-icon-fg-alias);color:var(--objinfo-icon-bg-default)}.objinfo-icon__procedure{background-color:var(--objinfo-icon-fg-procedure);border:1px solid var(--objinfo-icon-fg-procedure);color:var(--objinfo-icon-bg-default)}.objinfo-icon__data{background-color:var(--objinfo-icon-fg-data);border:1px solid var(--objinfo-icon-fg-data);color:var(--objinfo-icon-bg-default)}.objinfo-icon__sub-data{background-color:var(--objinfo-icon-fg-sub-data);border:1px solid var(--objinfo-icon-fg-sub-data);color:var(--objinfo-icon-bg-default)}.search-result-objlabel{border:1px solid var(--md-default-fg-color--light);border-radius:2px;float:right;padding:2px}table.longtable.docutils.data.align-default tbody>tr>td>p>a.reference.internal>code.xref.py.py-obj.docutils.literal.notranslate>span.pre{word-break:normal} +@media screen{[data-md-color-scheme=slate]{--md-hue:232;--md-default-fg-color:hsla(var(--md-hue),75%,95%,1);--md-default-fg-color--light:hsla(var(--md-hue),75%,90%,0.62);--md-default-fg-color--lighter:hsla(var(--md-hue),75%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),75%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,21%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,21%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,21%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,21%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,1);--md-code-bg-color:hsla(var(--md-hue),15%,15%,1);--md-code-hl-color:rgba(66,135,255,.15);--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-mark-color:rgba(66,135,255,.3);--md-typeset-kbd-color:hsla(var(--md-hue),15%,94%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,94%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-table-color:hsla(var(--md-hue),75%,95%,0.12);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,12%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,10%,1);--md-shadow-z1:0 0.2rem 0.5rem rgba(0,0,0,.2),0 0 0.05rem rgba(0,0,0,.1);--md-shadow-z2:0 0.2rem 0.5rem rgba(0,0,0,.3),0 0 0.05rem rgba(0,0,0,.25);--md-shadow-z3:0 0.2rem 0.5rem rgba(0,0,0,.4),0 0 0.05rem rgba(0,0,0,.35)}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=slate] img[src$="#only-dark"]{display:initial}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#bd78c9}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a682e3}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#6c91d5}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff9575}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c7846b}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#6c91d5}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:rgba(255,25,71,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:rgba(245,0,86,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:rgba(223,65,251,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:rgba(124,77,255,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:rgba(82,108,254,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:rgba(66,135,255,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:rgba(0,145,235,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:rgba(0,186,214,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:rgba(0,189,164,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:rgba(0,199,83,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:rgba(99,222,23,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:rgba(176,235,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:rgba(255,213,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:rgba(255,170,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:rgba(255,145,0,.1);--md-accent-bg-color:rgba(0,0,0,.87);--md-accent-bg-color--light:rgba(0,0,0,.54)}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:rgba(255,110,66,.1);--md-accent-bg-color:#fff;--md-accent-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54)}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7)}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:#fff;--md-primary-fg-color--light:hsla(0,0%,100%,.7);--md-primary-fg-color--dark:rgba(0,0,0,.07);--md-primary-bg-color:rgba(0,0,0,.87);--md-primary-bg-color--light:rgba(0,0,0,.54);--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-hero--expand{border-bottom:.05rem solid rgba(0,0,0,.07)}@media screen and (max-width:76.1875em){[data-md-color-primary=white] .md-hero{border-bottom:.05rem solid rgba(0,0,0,.07)}}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:rgba(0,0,0,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:rgba(0,0,0,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:rgba(0,0,0,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid rgba(0,0,0,.07)}}[data-md-color-primary=black]{--md-primary-fg-color:#000;--md-primary-fg-color--light:rgba(0,0,0,.54);--md-primary-fg-color--dark:#000;--md-primary-bg-color:#fff;--md-primary-bg-color--light:hsla(0,0%,100%,.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-header,[data-md-color-primary=black] .md-hero{background-color:#000}@media screen and (max-width:59.9375em){[data-md-color-primary=black] .md-nav__source{background-color:rgba(0,0,0,.87)}}@media screen and (min-width:60em){[data-md-color-primary=black] .md-search__form{background-color:hsla(0,0%,100%,.12)}[data-md-color-primary=black] .md-search__form:hover{background-color:hsla(0,0%,100%,.3)}}@media screen and (max-width:76.1875em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:#000}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:#000}} +@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/2aadfad5aee7ceeaf4eb0924efabe5b4.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/8e48cf20cf9f9e5feb7197c79028132b.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/638764dc2513deb09c55fc025f6dd36c.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/8007dfe835cfb201b8caaa9651098588.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/8c3798e37724f71bc0c63c44a5307413.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/ca7eea0cf248d6e8442c01074765bd33.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/10b31f4cad9ea78d43449886bfbb88ac.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 100;src: url(fonts/0f303f31706d39866cced9dcc17b61fb.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/6de03a64aa8100032abc6e836b3ed803.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/0ec3cc19652785204ea2e322330f0f1b.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/b57a5ada789f195d5d42f4073a6cf313.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/4f17f22fc6bff4f3333ccf7ed7126e6d.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/daf12b5f1889502004bba85ad71f9fa4.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/7b63598dcc2a26583b82594bd0e36d5b.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/64a6b4e954cf84685cbf8de77eb47344.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 100;src: url(fonts/b19ac4e57f2a56639eebd1c35319e5a7.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/8c49ed8b472d38d3985ec9bbbccea601.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/435e4b7f9f250d9d9243d4754799fc96.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/47aa3bfad6cb9e2d63abdd58f4e6ce4f.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/20dc200cc43ab904876fb0c1697ebe39.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/455c2c1af0a2bf20047a1864d7d7c174.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/51f3f41805329fb8341beb56ded833ea.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/b076e86301cbee8c5c9aef51863a9c0a.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 300;src: url(fonts/f75911313e1c7802c23345ab57e754d8.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/28e6b81b1bc1964707edd4179e4268f5.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/e704ef18719c08839bc99a32437ef0f8.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/76945c7494c20515bb45d1dedab8f706.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/b5b4146d87e5d22d0a4e0d04f3ee5626.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/21953b998bab09c1f60c599caee56378.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/e33716333704ab19fdf9989e072ad49a.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/f53f3b5a15d717b6d21d7885285e90ed.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 300;src: url(fonts/bb8007225d94a099cddbade7ea904667.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/3254c528e2ab56454a9f22191035c5fe.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/b7ef2cd1159a8cbfd271ff2abe07f237.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/495d38d4b9741e8aa4204002414069e2.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/d368cf5bed7856dbafa2af36b51acb9c.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/daf51ab540602b2d0b87646621637bac.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/77b24796a3d4ab521f66765651875338.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/3c23eb02de6b34e30f18cfb7167abd81.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 400;src: url(fonts/f6734f8177112c0839b961f96d813fcb.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/0e326670106c8eb6a11a8c30734ecfc8.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/a6caf7b9888eb0c382948c1ca5e8bebb.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/a6933e678530b263486fa7b185a449ca.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/144860ed1e48e186f08997e6388a9c3f.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/2ea7a97b7c976b121112a088eb398561.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/0b68e8634c96265eb32a0c769416b5b0.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/9582ced8a675bf267cc7ac392a86413e.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 400;src: url(fonts/db0424fb67fb52e7e538490240cc7fb9.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/2096d27efc16cbdd79183bf295c8ebde.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/aeed0e51b0bac7c89e5c7e6cf086d7e0.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/3728fbdd191d75bad5b83a838dfe2fc1.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/ef8f0236a7e8b46bc9d642ecf4ab0cb7.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/713780d8b30bda5583052ea847cdcb4f.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/0948409a22b5979aa7e1ec20da9e61f1.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/7f1c829b0c90fd664a03bb714a74f7d3.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 500;src: url(fonts/b019538234514166ec7665359d097403.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/38f3ee1f96b758f95672c632d8759594.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/4c815fdc869f885520f7c8eae6730edf.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/6deb20301c65a96db17c433ad0cf8158.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/63111d307c01b52ffccf7b0319cb7917.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/e56cc9fb5272752b78f144b4be43175d.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/2e10480d4154762bc7c8fbb40877e104.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/7af61b2367eba2b1852e837c46a75696.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 500;src: url(fonts/661d4b208656c006e7aab58acf778485.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/ac848474638236e67a64bc654fb18de0.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/3c505383d37d2078648e37868bbd1fad.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/6a84eeee6a25e7c9a8a03191007a6720.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/5b6377da4c959db6d4b22738a27f1bee.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/1c9cc76fd52238330f0aabac35acd2ca.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/4ec57f2a80b91090971b83970230ca09.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/fc66f942651a9fe1a598770d3d896529.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 700;src: url(fonts/f5aebdfea35d1e7656ef4acc5db1f243.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/8aa562790559d61dd5178a88a296d70f.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/ccdebed88064e470c15f37c432922e57.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/c8a9fd4eab4e83382cc66fde70911b41.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/5d7ff31ac7bf945e8d61878f8a941239.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/2a8c422bef4a7099e99dbf0e61ed5e49.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/bdbb6b52604c2451fdcba9cdfd44f4e1.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/acaac043ca238f0e56e61864456777fa.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 700;src: url(fonts/6be97ca17228a69c406231d89c003194.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/84e959dd07f302392f0ffd86f87db888.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/f265cee675c0e5b2d6ab263d0edcc754.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/9fdb12ceee3a402d3a54afe354552459.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/76da333ab59c6d625cabfb0768f82b4a.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/2550c2e2d8495c3ed2d4d52f824374f1.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/3a38c967413f7bce36d3baefc321aade.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/2781e9e7c3f369b8fc7965e679b17b60.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: normal;font-weight: 900;src: url(fonts/7e262106f82cc52663e403f5b73795bb.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/2f5c32f094829c0278bce28fe2bbe074.ttf) format('truetype');}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/0d1b73eee266eabb2cff35dfa4ce25a3.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/da6cd48e6dad1888fccc91735e7522f7.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/50aacf068f685be0dd903a91d5bab7d8.woff2) format('woff2');unicode-range: U+1F00-1FFF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/1383417807f7965daaf94e7c497dcddb.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/3f1918538864f9681d47a4538d48289c.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/bfd1a0c9c783e84595589f33e1828a57.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto';font-style: italic;font-weight: 900;src: url(fonts/3cf78ad3bcd1324e10a4acdc34bfc4a1.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/c6dc61b627bbc5af9130518297bd4f17.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/78a9265759e7b861a1639a36f4c01d04.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/2f7c3c315334a99574ee4ceb21af654d.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/870e5928dd14fcfe0ce9386107666774.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/36e39c6463ae1c71c71e69c05e593e1b.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/cbfd26d5bcf084ee407a0b2b7599e84b.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 100;src: url(fonts/cce2217cc8323fe49789adefb3596291.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/7fa86b886bee5d6ab420a8e89b9f3052.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/4f93c2808e3b69e525c118074e5de31f.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/99be4d68845d66c27c7f7d3a48687b66.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/029e176ad602329b4434892101db9cf3.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/9095d663e4d450059bcc2260bb75cd62.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/1181a8e619707033241139715eca64c6.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 200;src: url(fonts/22aadc77cafa07b2db9ed560d0320616.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/6ad3f6bbe6220cc476a0d3c731d3fb04.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/5dc0e4b14e903ba7f45c581df7402b3f.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/63f4b74ebf127dbeb033126ea988f54e.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/f5f971e9640a9eb86ef553a7e7e999c7.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/0053ba6958e79f26751eabb555bd73d0.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/4207cbc8cb7bc2cbd0bcce565298cbbc.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 300;src: url(fonts/90ebb29b5cffa197b184773983ba7e91.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/6ac1ee292434fac2313c42b0dfb7897c.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/aa28d99c7db60ad23f96a5c317615c42.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/52f28cb4d065b4adfa78df4f9559c639.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/122802d03aed4bf8cd6a03997a97aca4.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/4039566f251699c4b421ed1a38a59b24.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/93b6c99d936df38895a0d95e3ffea2fd.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 400;src: url(fonts/32c8a74ac0816253d69a7cc68a60986d.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/1512b579343c6b61c7523cdd838d8328.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/d6f9cdf1a40893111566fcdee3bbe5a9.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/25c52b9af13f0d1b10719f5289e8c803.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/b4e42731e8d667ae87c3450c345754ae.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/214adfc289a2f2af8b0008c59ed0c7f2.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/f55dac651a40fce74a5cf5728d9f8ffc.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 500;src: url(fonts/0e1f73c6737cdf273efb4b79504e4c0a.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/bf2ad3287f13eb7076cccb516ec2986f.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/aab05142e0e2dadf7df633e061e612ad.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/8a8dca39f24b52e89e6fd6dcd8b6dd32.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/7b8c2179b6b778308d2ff39bdb82e926.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/77ff81100e5a1db3d925f713660700ad.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/101522bafe9c61c68698ecc784607772.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 600;src: url(fonts/c28a41f656599f6694528b5463c6a445.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/89b4f174a5a728d2d8c85b87990c9ab4.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/bcd47c2f3649cfcaa86a08fb741255d6.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/770518db51bed1e082feecc532cfcbf8.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/85a41b80c5fdc14e3dc48636a30d87dd.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/fb17f56622e45dd4ecee00bb5c63cd2b.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/cd3d1f17e048e2116f438bd7157baccf.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: normal;font-weight: 700;src: url(fonts/6f8d857c5a8545e67de6b60aa0fe5c33.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/302b0425bf5ea66f37a822a61d723adc.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/c22066c14662d6c80415ae04c5dd9d51.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/de018865c95896bb57265fc97c48ebd7.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/3177dacffeac1eb4102852811ae4a2c7.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/5989ef3a21d7f252337ab3326f78bde7.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/dd719f1662079ce6a61260f9af972379.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 100;src: url(fonts/07ff82964967feebb9c96288e0e0df05.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/765bd4a97597a4d7781193793477a6cd.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/bd0efe13f0d9d591b337ddc7f289f494.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/ab03beb9091fa15ce4e783199e076bc6.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/a70ff2592da5e3453943f727633aff54.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/0a0ad0eae50e549ecd713b9ad417f1a1.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/d07f561ba87d93460742b060727d9e0d.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 200;src: url(fonts/43358c04243de546caddd0898dbf0757.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/71e06579279fba7436d58a1c49288909.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/fb1aaa90783b8cb9375265abeb91b153.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/2325b97b584755067ea4f7f56ee05430.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/f534242dea2255c25b9d05c2371986e3.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/9c9be791a58af8a04c611ca1d13f51c6.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/f2f69e8cd15fdd15a4244c95ec8a8514.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 300;src: url(fonts/555ceea3a65ffbbecf8b7e6d04966c7f.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/d98f35e926c11f3d5c0c8e3205d43907.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/b93199bb6f964f190f4da04ecdbaf5a4.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/99cf36e763be9cce7b4c59b91841af58.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/1488146d8b2e9859d6c90e6c2b48f7ef.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/255cf41e0317d95e3992683a76ef28a8.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/f154d62b4879af7a22895af7a4ef03f0.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 400;src: url(fonts/dc25cbf4baaf778bd8ae78fbc0e79479.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/bc67bba106323289ea3eda0826de1912.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/33c5d27ca0eaeb12ebe728ae2fc7106d.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/c13b34dd5b6a35b309944b61c91b2ace.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/392ff374142585f7b886ee1fe66e686e.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/1f1481679a64a39f3427547aa1b13f0f.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/f17ee050ada0453f3bd07bc466c2dde2.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 500;src: url(fonts/6725a7e91680edd1cdc9ed5c26ac05fd.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/cadfb311297a9362b07fab73934b432a.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/e99627cd27de169d23ece4573006af2a.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/bd51fb0ca67e64c809ffcf7e1370f969.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/437939342255944b82a49f916404c5fc.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/83614c36460a4a9734968789cb535de7.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/d9e6a498dac7e9e91f6e0b4f8930eba0.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 600;src: url(fonts/b4d3c40a77fd9e35a881a79077957055.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/d422317033deb87342a5e56c7be67458.ttf) format('truetype');}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/2c0f74be498d2da814c0a84dd6833f70.woff2) format('woff2');unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/9bcbc88b33b2efc2aee821b831499f1c.woff2) format('woff2');unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/8898c4b754d5d96c1a5e1b1d54100554.woff2) format('woff2');unicode-range: U+0370-03FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/9a9bf2d91ebbb1b96eab8eb0b0514bcc.woff2) format('woff2');unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/60eb682678bbea5e8ad71f66f2f65536.woff2) format('woff2');unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;}@font-face {font-family: 'Roboto Mono';font-style: italic;font-weight: 700;src: url(fonts/5ce47d5195e59af38114d0b70217baf2.woff2) format('woff2');unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;} +:root{--si-icon--material_alert-circle:url('data:image/svg+xml;charset=utf-8,');--si-icon--material_delete:url('data:image/svg+xml;charset=utf-8,');}.md-typeset .si-icon-inline.material_alert-circle::before{-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .si-icon-inline.material_delete::before{-webkit-mask-image:var(--si-icon--material_delete);mask-image:var(--si-icon--material_delete);}.md-typeset .admonition.versionadded{border-color:rgb(72,138,87);}.md-typeset .versionadded>.admonition-title{background-color:rgba(72,138,87,0.1);border-color:rgb(72,138,87);}.md-typeset .versionadded>.admonition-title::before{background-color:rgb(72,138,87);-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .admonition.versionchanged{border-color:rgb(238,144,64);}.md-typeset .versionchanged>.admonition-title{background-color:rgba(238,144,64,0.1);border-color:rgb(238,144,64);}.md-typeset .versionchanged>.admonition-title::before{background-color:rgb(238,144,64);-webkit-mask-image:var(--si-icon--material_alert-circle);mask-image:var(--si-icon--material_alert-circle);}.md-typeset .admonition.deprecated{border-color:rgb(203,70,83);}.md-typeset .deprecated>.admonition-title{background-color:rgba(203,70,83,0.1);border-color:rgb(203,70,83);}.md-typeset .deprecated>.admonition-title::before{background-color:rgb(203,70,83);-webkit-mask-image:var(--si-icon--material_delete);mask-image:var(--si-icon--material_delete);} diff --git a/_static/static/logo.svg b/_static/static/logo.svg new file mode 100644 index 0000000..cbb5d87 --- /dev/null +++ b/_static/static/logo.svg @@ -0,0 +1,54 @@ + + \ No newline at end of file diff --git a/_static/static/summary_downtriangle.svg b/_static/static/summary_downtriangle.svg new file mode 100644 index 0000000..8868257 --- /dev/null +++ b/_static/static/summary_downtriangle.svg @@ -0,0 +1,3 @@ + + + diff --git a/_static/static/summary_x_backslash.svg b/_static/static/summary_x_backslash.svg new file mode 100644 index 0000000..c4767d9 --- /dev/null +++ b/_static/static/summary_x_backslash.svg @@ -0,0 +1,3 @@ + + + diff --git a/_static/static/summary_x_slash.svg b/_static/static/summary_x_slash.svg new file mode 100644 index 0000000..c2ac007 --- /dev/null +++ b/_static/static/summary_x_slash.svg @@ -0,0 +1,3 @@ + + + diff --git a/_static/style.css b/_static/style.css new file mode 100644 index 0000000..2e5aef0 --- /dev/null +++ b/_static/style.css @@ -0,0 +1,251 @@ +:root { + --content-width: 75%; + --top-bar-height: 52px; + --color-green: rgba(69, 146, 133, 1); + --color-hovered: #F5F5F5; + --color-bg: #2e303e; + --color-bg-summary: #1c1d26; + --color-top-bar: #25292e; + --color-line: #8e91ab; +} + +html { + line-height: 1.15; + scroll-behavior: smooth; + font-size: 16px; + color: white; +} + +body { + background-color: var(--color-bg); + margin: 0; +} + +table, th, td { + border: 1px solid white; + border-collapse: collapse; +} + +th, td { + padding: 12px; + text-align: center; +} + +.hidden { + display: none; +} + +.top_bar { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + height: var(--top-bar-height); + background-color: var(--color-top-bar); + position: fixed; +} +.top_bar_items_container{ + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + justify-content: space-between; + width: var(--content-width); + height: 100%; +} +.top_bar_left{ + flex-basis: 0%; + flex-grow: 1; + height: 60%; + display: flex; +} + +.top_bar_logo{ + max-width: 100%; + object-fit: contain; +} + +.top_bar_protoplaster { + font-size: 16px; + font-style: bold; + font-family: Roboto; + font-weight: 700; + line-height: normal; + font-stretch: normal; +} + +.top_bar_right { + flex-basis: 0%; + flex-grow: 1; + text-align: right; + font-size: 14px; + font-style: Bold; + font-family: Roboto; + font-weight: 700; + line-height: normal; + font-stretch: normal; +} + +.item_list{ + width: 100%; + padding-top: var(--top-bar-height); + display: flex; + flex-direction: column; +} + +.item{ + width: var(--content-width); + display: flex; + flex-direction: column; + align-items: center; + align-self: center; + padding-top: 24px; +} + +.item_header{ + display: flex; + flex-direction: row; + align-items: center; + justify-content: start; + justify-content: space-between; + margin: 8px; + width: 100%; +} + +.item_header_left{ + display: flex; + flex-direction: row; + align-items: center; + justify-content: start; + justify-content: space-between; +} + +.item_header_text { + color: white; + margin: 0; + font-size: 32px; + text-align: left; + font-family: Roboto; + font-weight: 600; + line-height: normal; + font-stretch: normal; +} + +.item_file_text { + margin: 0px; + font-size: 18px; + text-align: left; + font-family: Roboto; + font-weight: 500; + line-height: normal; + font-stretch: normal; +} + +.item_file_link { + text-decoration: none; + color: var(--color-green); +} + +.item_file_link:hover { + text-decoration: underline; + color: var(--color-hovered); +} + +.item_header_separator { + width:100%; + height:1px; + background: var(--color-line); + margin: 8px; + margin-bottom: 24px; +} + +.summary_container { + width: 100%; +} + +.summary{ + display: flex; + flex-direction: row; + padding: 10px; + padding-bottom: 0px; + overflow: auto; + background-color: var(--color-bg-summary); + margin-bottom: 20px; +} + +.summary_left { + margin-top: 2px; + margin-right: 30px; + display: flex; +} + +.summary_x { + display: block; + position: absolute; +} + +.summary_right { +} + +.summary_title { + margin: 0; + font-size: 18px; + text-align: left; + font-family: Roboto; + font-weight: 700; + line-height: normal; + font-stretch: normal; + text-decoration: none; +} + +.summary_button { + border: none; + background-color: transparent; + color: var(--color-green); + text-align: center; + font-size: 18px; + text-align: left; + font-family: Roboto; + font-weight: 500; + line-height: normal; + font-stretch: normal; +} + +.summary_button:hover { + text-decoration: underline; + filter: brightness(0) saturate(100%) invert(95%) sepia(74%) saturate(20%) hue-rotate(267deg) brightness(115%) contrast(92%); +} + +.summary_close_button { + border: none; + background-color: transparent; + align-self: flex-start; +} + +.summary_close_button:hover { + filter: brightness(0) saturate(100%) invert(95%) sepia(74%) saturate(20%) hue-rotate(267deg) brightness(115%) contrast(92%); +} + +.summary_button_container { + padding-left: 20px; + display: flex; +} + +.summary_button_triangle { + transform: rotate(270deg); + margin-left: 8px; +} + +.summary_button_triangle_open { + transform: rotate(0deg); +} + +.summary_code { + color: white; + font-size: 14px; + text-align: left; + font-weight: 400; + line-height: 22px; + font-stretch: normal; +} diff --git a/_static/system_report_summary.html b/_static/system_report_summary.html new file mode 100644 index 0000000..ab04276 --- /dev/null +++ b/_static/system_report_summary.html @@ -0,0 +1,263 @@ + + + + + + + +
+
+
+
+ +
+
Protoplaster
+
System report summary
+
+
+ +
+
+
+
+
+

uname

+
+ + + +
+ +
+

Full output available in uname.out

+
+ +
+ +
+ + + + +
+ +
+
+
+
+

dmesg

+
+ + + + + +
+ +
+

Full output available in dmesg.out

+
+ +
+ +
+ + + + + + +
+ +
+
+
+
+

ip

+
+ + + +
+ +
+

Full output available in ip.out

+
+ +
+ +
+ + + + +
+ +
+
+ + \ No newline at end of file diff --git a/_static/uname.out b/_static/uname.out new file mode 100644 index 0000000..6fc35dc --- /dev/null +++ b/_static/uname.out @@ -0,0 +1 @@ +Linux fv-az1456-841 6.5.0-1023-azure #24~22.04.1-Ubuntu SMP Wed Jun 12 19:55:26 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux diff --git a/_static/white.svg b/_static/white.svg new file mode 100644 index 0000000..d80d149 --- /dev/null +++ b/_static/white.svg @@ -0,0 +1,54 @@ + + \ No newline at end of file diff --git a/genindex.html b/genindex.html new file mode 100644 index 0000000..d4c69bb --- /dev/null +++ b/genindex.html @@ -0,0 +1,408 @@ + + + + + + + + + + + + + + + + None - Protoplaster - docs example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + +
+
+ + + + + + + + +None + +
+
+ + + Last update: + 2024-07-24 + + +
+ + + + + + +
+
+ + +
+ +
+ +
+ + + + +
+ +
+
+
+
+ + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..c9b26a4 --- /dev/null +++ b/index.html @@ -0,0 +1,450 @@ + + + + + + + + + + + + + + + + Protoplaster - docs example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+ +
+ + + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/introduction.html b/introduction.html new file mode 100644 index 0000000..a4ecc23 --- /dev/null +++ b/introduction.html @@ -0,0 +1,455 @@ + + + + + + + + + + + + + + + + Introduction - Protoplaster - docs example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + +
+
+ + + + + + + + +

Introduction

+

This documentation serves as an example of how individual projects documentation can look like.

+

The second chapter contains information from the README file.

+

The last chapter is generated from the sample test.yml file which can be found in the README. +Its purpose is to demonstrate the documentation generated to describe test procedures used in a project.

+ + +
+
+ + + Last update: + 2024-07-24 + + +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/objects.inv b/objects.inv new file mode 100644 index 0000000..3b41249 --- /dev/null +++ b/objects.inv @@ -0,0 +1,6 @@ +# Sphinx inventory version 2 +# Project: Protoplaster - docs example +# Version: +# The remainder of this file is compressed using zlib. +xڅM +09\BA(TH޾ QL]x?8X7ZhЯegឞjRH,`Y;o1$t2Tw}rdNٌyĂu/gR?,ª]dT8,Y9bS:_V[1 3QuDU 1 Ƙ \ No newline at end of file diff --git a/protoplaster--docs-example.pdf b/protoplaster--docs-example.pdf new file mode 100644 index 0000000..ee3a8ba Binary files /dev/null and b/protoplaster--docs-example.pdf differ diff --git a/protoplaster.html b/protoplaster.html new file mode 100644 index 0000000..484bc85 --- /dev/null +++ b/protoplaster.html @@ -0,0 +1,542 @@ + + + + + + + + + + + + + + + + Protoplaster tests - Protoplaster - docs example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + +
+
+ + + + + + + + +

Protoplaster tests

+
+

Note

+

This page has been autogenerated from a Protoplaster tests definition file.

+
+

To perform hardware/BSP tests and open-source Protoplaster framework has been used.

+

Running Protoplaster runs the tests described in the following chapters:

+

I2C devices tests

+

This module provides tests dedicated to i2c devices on specific buses:

+
    +
  • /dev/i2c-0:

    +
      +
    • detection test for Sensor name on address: 0x3c

    • +
    +
  • +
  • /dev/i2c-0:

    +
      +
    • detection test for I2C-bus multiplexer on address: 0x70

    • +
    +
  • +
+

Camera sensor tests

+

This module provides tests dedicated to V4L devices on specific video node:

+
    +
  • /dev/video0:

    +
      +
    • try to capture frame

    • +
    • check if the camera sensor name is vivid

    • +
    • check if the camera sensor driver name is vivid

    • +
    +
  • +
  • /dev/video2:

    +
      +
    • try to capture frameand store it to frame.raw file

    • +
    • check if the camera sensor name is vivid

    • +
    • check if the camera sensor driver name is vivid

    • +
    +
  • +
+

GPIOs tests

+

This module provides tests dedicated to GPIO on specific pin number

+
    +
  • /sys/class/gpio/gpio20:

    +
      +
    • write 1 and read back to confirm

    • +
    +
  • +
+ + +
+
+ + + Last update: + 2024-07-24 + + +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/readme.html b/readme.html new file mode 100644 index 0000000..f69bcc1 --- /dev/null +++ b/readme.html @@ -0,0 +1,825 @@ + + + + + + + + + + + + + + + + Protoplaster - Protoplaster - docs example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + +
+
+ + + + + + + + +

Protoplaster

+

Copyright (c) 2022-2024 Antmicro

+

An automated framework for platform testing (Hardware and BSPs).

+

Currently includes tests for:

+
    +
  • I2C

  • +
  • GPIO

  • +
  • Camera

  • +
  • FPGA

  • +
+

Installation

+
pip install git+https://github.com/antmicro/protoplaster.git
+
+
+

Usage

+
usage: protoplaster [-h] [-t TEST_FILE] [-g GROUP] [--list-groups] [-o OUTPUT] [--csv CSV] [--csv-columns CSV_COLUMNS] [--generate-docs] [-c CUSTOM_TESTS]
+
+options:
+  -h, --help            show this help message and exit
+  -t TEST_FILE, --test-file TEST_FILE
+                        Path to the test yaml description
+  -g GROUP, --group GROUP
+                        Group to execute
+  --list-groups         List possible groups to execute
+  -o OUTPUT, --output OUTPUT
+                        A junit-xml style report of the tests results
+  --csv CSV             Generate a CSV report of the tests results
+  --csv-columns CSV_COLUMNS
+                        Comma-separated list of columns to be included in generated CSV
+  --generate-docs       Generate documentation
+  -c CUSTOM_TESTS, --custom-tests CUSTOM_TESTS
+                        Path to the custom tests sources
+  --report-output REPORT_OUTPUT
+                        Proplaster report archive
+  --system-report-config SYSTEM_REPORT_CONFIG
+                        Path to the system report yaml config file
+  --sudo                Run as sudo
+
+
+

Protoplaster expects a yaml file describing tests as an input. The yaml file should have a structure specified as follows:

+ +
base:                # A group specifier
+  i2c:               # A module specifier
+  - bus: 0           # An interface specifier
+    devices:         # Multiple instances of devices can be defined in one module
+    - name: "Sensor name"
+      address: 0x3c  # The given device parameters determine which tests will be run for the module
+  - bus: 0
+    devices:
+    - name: "I2C-bus multiplexer"
+      address: 0x70
+  camera:
+  - device: "/dev/video0"
+    camera_name: "vivid"
+    driver_name: "vivid"
+  - device: "/dev/video2"
+    camera_name: "vivid"
+    driver_name: "vivid"
+    save_file: "frame.raw"
+additional:
+  gpio:
+  - number: 20
+    value: 1
+
+
+

Groups

+

In the YAML file, you can define different groups of tests to run them for different use cases. +In the YAML file example, there are two groups defined: base and additional. +Protoplaster, when run without a defined group, will execute every test in each group. +When the group is specified with the parameter -g or --group, only the tests in the specified group are going to be run. +You can also list existing groups in the YAML file, simply run protoplaster --list-groups test.yaml.

+

Base modules parameters

+

Each base module requires parameters for test initialization. +These parameters describe the tests and are passed to the test class as its attributes.

+

I2C

+

Required parameters:

+
    +
  • bus - i2c bus to be checked

  • +
  • name - name of device to be detected

  • +
  • address - address of the device to be detected on the indicated bus

  • +
+

GPIO

+

Required parameters:

+
    +
  • number - GPIO pin number

  • +
  • value - value written to that pin

  • +
+

Optional parameters:

+
    +
  • gpio_name - name of the sysfs GPIO interface after exporting

  • +
+

Cameras

+

Required parameters:

+
    +
  • device - path to the camera device (eg. /dev/video0)

  • +
  • camera_name - expected camera name

  • +
  • driver_name - expected driver name

  • +
+

Optional parameters:

+
    +
  • save_file - a path which the tested frame is saved to (the frame is saved only if this parameter is present)

  • +
+

FPGA

+

Required parameters:

+
    +
  • sysfs_interface - path to a sysfs interface for flashing the bitstream to the FPGA

  • +
  • bitstream_path - path to a test bitstream that is going to be flashed

  • +
+

Writing additional modules

+

Apart from base modules available in Protoplaster, you can provide your own extended modules. +The module should contain a test.py file in the root path. +This file should contain a test class that is decorated with ModuleName("") from the protoplaster.conf.module package. +This decorator tells Protoplaster what the name of the module is. +With this information, Protoplaster can correctly initialize the test parameters. +The test class should contain a name() method. Its return value is used for the device_name field in CSV output.

+

The description of the external module should be added to the YAML file as for other tests. +By default, external modules are expected in the /etc/protoplaster directory. +If you want to store them in a different path, use the --custom-tests argument to set your own path. +Individual tests run by Protoplaster should be present in the main class in the test.py file. +The class’s name should start with Test, and every test’s name in this class should also start with test. +An example of an extended module test:

+
from protoplaster.conf.module import ModuleName
+
+@ModuleName("additional_camera")
+class TestAdditionalCamera:
+    """
+    {% macro TestAdditionalCamera(prefix) -%}
+    Additional camera tests
+    -----------------------
+    {% do prefix.append('') %}
+    This module provides tests dedicated to camera sensors on specific video node:
+    {%- endmacro %}
+    """
+
+    def test_exists(self):
+        """
+        {% macro test_exists(device) -%}
+          check if the path exists
+        {%- endmacro %}
+        """
+        assert self.path == "/dev/video0"
+
+
+

And a YAML definition:

+
---
+base:
+  additional_camera:
+    - path: "/dev/video0"
+    - path: "/dev/video1"
+
+
+

Protoplaster test report

+

Protoplaster provides protoplaster-test-report, a tool to convert test CSV output into a HTML or Markdown table.

+
usage: protoplaster-test-report [-h] [-i INPUT_FILE] -t {md,html} [-o OUTPUT_FILE]
+
+options:
+  -h, --help            show this help message and exit
+  -i INPUT_FILE, --input-file INPUT_FILE
+                        Path to the csv file
+  -t {md,html}, --type {md,html}
+                        Output type
+  -o OUTPUT_FILE, --output-file OUTPUT_FILE
+                        Path to the output file
+
+
+

System report

+

Protoplaster provides protoplaster-system-report, a tool for obtaining information about system state and configuration. +It executes a list of commands and saves their outputs. +The outputs are stored in a single zip archive along with an HTML summary.

+

Usage

+
usage: protoplaster-system-report [-h] [-o OUTPUT_FILE] [-c CONFIG] [--sudo]
+
+options:
+  -h, --help            show this help message and exit
+  -o OUTPUT_FILE, --output-file OUTPUT_FILE
+                        Path to the output file
+  -c CONFIG, --config CONFIG
+                        Path to the YAML config file
+  --sudo                Run as sudo
+
+
+

The YAML config contains a list of actions to perform. A single action is described as follows:

+
report_item_name:
+  run: script
+  summary:
+    - title: summary_title
+      run: summary_script
+  output: script_output_file
+  superuser: required | preferred
+  on-fail: ...
+
+
+
    +
  • run - command to be run

  • +
  • summary – a list of summary generators, each one with fields:

    +
      +
    • title – summary title

    • +
    • run – command that generates the summary. This command gets the output of the original command as stdin. This field is optional; if not specified, the output is placed in the report as-is.

    • +
    +
  • +
  • output - output file for the output of run.

  • +
  • superuser – optional, should be specified if the command requires elevated privileges to run. Possible values:

    +
      +
    • requiredprotoplaster-system-report will terminate if the privilege requirement is not met

    • +
    • preferred – if the privilege requirement is not met, a warning will be issued and this particular item won’t be included in the report

    • +
    +
  • +
  • on-fail – optional description of an item to run in case of failure. It can be used to run an alternative command when the original one fails or is not available.

  • +
+

Example config file:

+ +
uname:
+  run: uname -a
+  summary:
+    - title: os info
+      run: cat
+  output: uname.out
+dmesg:
+  run: dmesg
+  summary: 
+    - title: usb
+      run: grep usb
+    - title: v4l
+      run: grep v4l
+  output: dmesg.out
+  superuser: required
+ip:
+  run: ip a
+  summary:
+    - title: Network interfaces state
+      run: python3 $PROTOPLASTER_SCRIPTS/generate_ip_table.py "$(cat)"
+  output: ip.out
+  on-fail:
+    run: ifconfig -a
+    summary:
+      - title: Network interfaces state
+        run: python3 $PROTOPLASTER_SCRIPTS/generate_ifconfig_table.py "$(cat)"
+    output: ifconfig.out
+
+
+

Running as root

+

By default, sudo doesn’t preserve PATH. +To run protoplaster-system-report installed by a non-root user as root, invoke protoplaster-system-report --sudo

+ + +
+
+ + + Last update: + 2024-07-24 + + +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/report.html b/report.html new file mode 100644 index 0000000..efe6367 --- /dev/null +++ b/report.html @@ -0,0 +1,527 @@ + + + + + + + + + + + + + + + + Protoplaster tests report - Protoplaster - docs example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + +
+
+ + + + + + + + +

Protoplaster tests report

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

device name

test name

module

duration

message

status

/dev/i2c-0

addresses

test.py::TestI2C::test_addresses

9ms 238us

passed

/dev/i2c-0

addresses

test.py::TestI2C::test_addresses

8ms 561us

passed

/dev/video0

frame

test.py::TestCamera::test_frame

232ms 469us

passed

/dev/video0

device_name

test.py::TestCamera::test_device_name

206ms 263us

passed

/dev/video0

driver_name

test.py::TestCamera::test_driver_name

221ms 888us

passed

/dev/video2

frame

test.py::TestCamera::test_frame

254ms 4us

passed

/dev/video2

device_name

test.py::TestCamera::test_device_name

205ms 782us

passed

/dev/video2

driver_name

test.py::TestCamera::test_driver_name

204ms 726us

passed

/sys/class/gpio/20

read_write

test.py::TestGPIO::test_read_write

12ms 390us

passed

+ + +
+
+ + + Last update: + 2024-07-24 + + +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000..de780c6 --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"titles": ["Protoplaster - docs example", "Introduction", "Protoplaster tests", "Protoplaster", "Protoplaster tests report", "Protoplaster system report"], "terms": {"introduct": 0, "instal": 0, "usag": 0, "base": 0, "modul": [0, 2, 4], "paramet": 0, "write": [0, 2], "addit": 0, "test": [0, 1], "report": 0, "system": 0, "i2c": [0, 4], "devic": [0, 3, 4], "camera": 0, "sensor": [0, 3], "gpio": [0, 4], "thi": [1, 2, 3], "document": [1, 3], "serv": 1, "an": [1, 3, 5], "exampl": [1, 3, 5], "how": 1, "individu": [1, 3], "project": 1, "can": [1, 3, 5], "look": 1, "like": 1, "The": [1, 3, 5], "second": 1, "chapter": [1, 2], "contain": [1, 3], "inform": [1, 3, 5], "from": [1, 2, 3], "readm": 1, "file": [1, 2, 3], "last": 1, "i": [1, 2, 3], "gener": [1, 3, 5], "sampl": 1, "yml": 1, "which": [1, 3], "found": [1, 5], "Its": [1, 3], "purpos": 1, "demonstr": 1, "describ": [1, 2, 3], "procedur": 1, "us": [1, 2, 3, 5], "page": 2, "ha": 2, "been": 2, "autogener": 2, "definit": [2, 3], "To": [2, 3], "perform": [2, 3], "hardwar": [2, 3], "bsp": [2, 3], "open": 2, "sourc": [2, 3], "framework": [2, 3], "run": [2, 5], "follow": [2, 3, 5], "provid": [2, 3, 5], "dedic": [2, 3], "specif": [2, 3], "buse": 2, "dev": [2, 3, 4], "0": [2, 3, 4], "detect": [2, 3], "name": [2, 3, 4], "address": [2, 3, 4], "0x3c": [2, 3], "bu": [2, 3], "multiplex": [2, 3], "0x70": [2, 3], "v4l": [2, 3, 5], "video": [2, 3], "node": [2, 3], "video0": [2, 3, 4], "try": 2, "captur": 2, "frame": [2, 3, 4], "check": [2, 3], "vivid": [2, 3], "driver": [2, 3], "video2": [2, 3, 4], "frameand": 2, "store": [2, 3, 5], "raw": [2, 3], "pin": [2, 3], "number": [2, 3], "sy": [2, 4], "class": [2, 3, 4], "gpio20": 2, "1": [2, 3], "read": 2, "back": 2, "confirm": 2, "copyright": 3, "c": 3, "2022": 3, "2024": 3, "antmicro": 3, "autom": 3, "platform": 3, "current": 3, "includ": 3, "pip": 3, "git": 3, "http": 3, "github": 3, "com": 3, "h": 3, "t": 3, "test_fil": 3, "g": 3, "list": [3, 5], "o": [3, 5], "output": [3, 5], "csv": 3, "column": 3, "csv_column": 3, "doc": 3, "custom_test": 3, "option": 3, "help": 3, "show": 3, "messag": [3, 4], "exit": 3, "path": 3, "yaml": 3, "descript": 3, "execut": [3, 5], "possibl": 3, "A": 3, "junit": 3, "xml": 3, "style": 3, "result": 3, "comma": 3, "separ": 3, "custom": 3, "report_output": 3, "proplast": 3, "archiv": [3, 5], "config": [3, 5], "system_report_config": 3, "sudo": 3, "expect": 3, "input": 3, "should": 3, "have": 3, "structur": 3, "specifi": 3, "interfac": [3, 5], "multipl": 3, "instanc": 3, "defin": 3, "one": 3, "given": 3, "determin": 3, "camera_nam": 3, "driver_nam": [3, 4], "save_fil": 3, "20": [3, 4], "valu": 3, "In": 3, "you": 3, "differ": 3, "them": 3, "case": 3, "ar": [3, 5], "two": 3, "when": 3, "without": 3, "everi": 3, "each": 3, "onli": 3, "go": 3, "also": 3, "exist": 3, "simpli": 3, "requir": [3, 5], "initi": 3, "These": 3, "pass": [3, 4], "its": 3, "attribut": 3, "indic": 3, "written": 3, "gpio_nam": 3, "sysf": 3, "after": 3, "export": 3, "eg": 3, "save": [3, 5], "present": 3, "sysfs_interfac": 3, "flash": 3, "bitstream": 3, "bitstream_path": 3, "apart": 3, "avail": 3, "your": 3, "own": 3, "extend": 3, "py": [3, 4, 5], "decor": 3, "modulenam": 3, "conf": 3, "packag": 3, "tell": 3, "what": 3, "With": 3, "correctli": 3, "method": 3, "return": 3, "device_nam": [3, 4], "field": 3, "extern": 3, "ad": 3, "other": 3, "By": 3, "default": 3, "etc": 3, "directori": 3, "If": 3, "want": 3, "argument": 3, "set": 3, "main": 3, "": 3, "start": 3, "import": 3, "additional_camera": 3, "testadditionalcamera": 3, "macro": 3, "prefix": 3, "do": 3, "append": 3, "endmacro": 3, "def": 3, "test_exist": 3, "self": 3, "assert": 3, "And": 3, "video1": 3, "tool": [3, 5], "convert": 3, "html": [3, 5], "markdown": 3, "tabl": 3, "input_fil": 3, "md": 3, "output_fil": 3, "type": 3, "obtain": [3, 5], "about": [3, 5], "state": [3, 5], "configur": [3, 5], "It": [3, 5], "command": [3, 5], "singl": [3, 5], "zip": [3, 5], "along": 3, "summari": [3, 5], "action": 3, "report_item_nam": 3, "script": 3, "titl": [3, 5], "summary_titl": 3, "summary_script": 3, "script_output_fil": 3, "superus": [3, 5], "prefer": 3, "fail": [3, 5], "get": 3, "origin": 3, "stdin": 3, "place": 3, "elev": 3, "privileg": 3, "termin": 3, "met": 3, "warn": 3, "issu": 3, "particular": 3, "item": 3, "won": 3, "failur": 3, "altern": 3, "unam": [3, 5], "info": [3, 5], "cat": [3, 5], "out": [3, 5], "dmesg": [3, 5], "usb": [3, 5], "grep": [3, 5], "ip": [3, 5], "network": [3, 5], "python3": [3, 5], "protoplaster_script": [3, 5], "generate_ip_t": [3, 5], "ifconfig": [3, 5], "generate_ifconfig_t": [3, 5], "doesn": 3, "preserv": 3, "non": 3, "user": 3, "invok": 3, "durat": 4, "statu": 4, "testi2c": 4, "test_address": 4, "9m": 4, "238u": 4, "8m": 4, "561u": 4, "testcamera": 4, "test_fram": 4, "232m": 4, "469u": 4, "test_device_nam": 4, "206m": 4, "263u": 4, "test_driver_nam": 4, "221m": 4, "888u": 4, "254m": 4, "4u": 4, "205m": 4, "782u": 4, "204m": 4, "726u": 4, "read_writ": 4, "testgpio": 4, "test_read_writ": 4, "12m": 4, "390u": 4, "togeth": 5, "here": 5, "wa": 5}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"protoplast": [0, 2, 3, 4, 5], "doc": 0, "exampl": 0, "introduct": 1, "test": [2, 3, 4], "i2c": [2, 3], "devic": 2, "camera": [2, 3], "sensor": 2, "gpio": [2, 3], "instal": 3, "usag": 3, "group": 3, "base": 3, "modul": 3, "paramet": 3, "fpga": 3, "write": 3, "addit": 3, "report": [3, 4, 5], "system": [3, 5], "run": 3, "root": 3}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx": 60}, "alltitles": {"Protoplaster - docs example": [[0, "protoplaster-docs-example"]], "Introduction": [[1, "introduction"]], "Protoplaster tests": [[2, "protoplaster-tests"]], "I2C devices tests": [[2, "i2c-devices-tests"]], "Camera sensor tests": [[2, "camera-sensor-tests"]], "GPIOs tests": [[2, "gpios-tests"]], "Protoplaster": [[3, "protoplaster"]], "Installation": [[3, "installation"]], "Usage": [[3, "usage"], [3, "id1"]], "Groups": [[3, "groups"]], "Base modules parameters": [[3, "base-modules-parameters"]], "I2C": [[3, "i2c"]], "GPIO": [[3, "gpio"]], "Cameras": [[3, "cameras"]], "FPGA": [[3, "fpga"]], "Writing additional modules": [[3, "writing-additional-modules"]], "Protoplaster test report": [[3, "protoplaster-test-report"]], "System report": [[3, "system-report"]], "Running as root": [[3, "running-as-root"]], "Protoplaster tests report": [[4, "protoplaster-tests-report"]], "Protoplaster system report": [[5, "protoplaster-system-report"]]}, "indexentries": {}, "docurls": ["index.html", "introduction.html", "protoplaster.html", "readme.html", "report.html", "system_report.html"]}) \ No newline at end of file diff --git a/system_report.html b/system_report.html new file mode 100644 index 0000000..3574145 --- /dev/null +++ b/system_report.html @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + Protoplaster system report - Protoplaster - docs example + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + +
+
+ + + + + + + + +

Protoplaster system report

+

Protoplaster provides protoplaster-system-report, a tool to obtain information about system state and configuration. It executes a list of commands and saves their outputs. The outputs are stored in a single zip archive together with an HTML summary. An example summary can be found here.

+

The following config was used to generate the example:

+
uname:
+  run: uname -a
+  summary:
+    - title: os info
+      run: cat
+  output: uname.out
+dmesg:
+  run: dmesg
+  summary: 
+    - title: usb
+      run: grep usb
+    - title: v4l
+      run: grep v4l
+  output: dmesg.out
+  superuser: required
+ip:
+  run: ip a
+  summary:
+    - title: Network interfaces state
+      run: python3 $PROTOPLASTER_SCRIPTS/generate_ip_table.py "$(cat)"
+  output: ip.out
+  on-fail:
+    run: ifconfig -a
+    summary:
+      - title: Network interfaces state
+        run: python3 $PROTOPLASTER_SCRIPTS/generate_ifconfig_table.py "$(cat)"
+    output: ifconfig.out
+
+
+ + +
+
+ + + Last update: + 2024-07-24 + + +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + \ No newline at end of file